1.1 --- a/src/os/bsd/vm/os_bsd.cpp Thu Jan 17 22:11:57 2013 -0500 1.2 +++ b/src/os/bsd/vm/os_bsd.cpp Mon Jan 21 09:00:04 2013 +0100 1.3 @@ -243,29 +243,32 @@ 1.4 int mib[2]; 1.5 size_t len; 1.6 int cpu_val; 1.7 - u_long mem_val; 1.8 + julong mem_val; 1.9 1.10 /* get processors count via hw.ncpus sysctl */ 1.11 mib[0] = CTL_HW; 1.12 mib[1] = HW_NCPU; 1.13 len = sizeof(cpu_val); 1.14 if (sysctl(mib, 2, &cpu_val, &len, NULL, 0) != -1 && cpu_val >= 1) { 1.15 + assert(len == sizeof(cpu_val), "unexpected data size"); 1.16 set_processor_count(cpu_val); 1.17 } 1.18 else { 1.19 set_processor_count(1); // fallback 1.20 } 1.21 1.22 - /* get physical memory via hw.usermem sysctl (hw.usermem is used 1.23 - * instead of hw.physmem because we need size of allocatable memory 1.24 + /* get physical memory via hw.memsize sysctl (hw.memsize is used 1.25 + * since it returns a 64 bit value) 1.26 */ 1.27 mib[0] = CTL_HW; 1.28 - mib[1] = HW_USERMEM; 1.29 + mib[1] = HW_MEMSIZE; 1.30 len = sizeof(mem_val); 1.31 - if (sysctl(mib, 2, &mem_val, &len, NULL, 0) != -1) 1.32 + if (sysctl(mib, 2, &mem_val, &len, NULL, 0) != -1) { 1.33 + assert(len == sizeof(mem_val), "unexpected data size"); 1.34 _physical_memory = mem_val; 1.35 - else 1.36 + } else { 1.37 _physical_memory = 256*1024*1024; // fallback (XXXBSD?) 1.38 + } 1.39 1.40 #ifdef __OpenBSD__ 1.41 {