From 2e4ec2ed4337f79c5701fd9e5295c2b6fef50078 Mon Sep 17 00:00:00 2001 From: Piotr Sikora Date: Sat, 9 Apr 2011 16:51:13 +0000 Subject: Detect available memory on OpenBSD. While there, rename freebsd_sysctl() to sysctl(), since sysctl is available on number of different platforms. --- src/vm_memory_monitor.erl | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/vm_memory_monitor.erl b/src/vm_memory_monitor.erl index dcc6aff5..fb2fa267 100644 --- a/src/vm_memory_monitor.erl +++ b/src/vm_memory_monitor.erl @@ -239,10 +239,13 @@ get_total_memory({unix,darwin}) -> PageSize * (Inactive + Active + Free + Wired); get_total_memory({unix,freebsd}) -> - PageSize = freebsd_sysctl("vm.stats.vm.v_page_size"), - PageCount = freebsd_sysctl("vm.stats.vm.v_page_count"), + PageSize = sysctl("vm.stats.vm.v_page_size"), + PageCount = sysctl("vm.stats.vm.v_page_count"), PageCount * PageSize; +get_total_memory({unix,openbsd}) -> + sysctl("hw.usermem"); + get_total_memory({win32,_OSname}) -> %% Due to the Erlang print format bug, on Windows boxes the memory %% size is broken. For example Windows 7 64 bit with 4Gigs of RAM @@ -342,7 +345,7 @@ parse_line_aix(Line) -> false -> list_to_integer(Value) end}. -freebsd_sysctl(Def) -> +sysctl(Def) -> list_to_integer(cmd("/sbin/sysctl -n " ++ Def) -- "\n"). %% file:read_file does not work on files in /proc as it seems to get -- cgit v1.2.1