mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-26 06:14:49 +02:00
8006431: os::Bsd::initialize_system_info() sets _physical_memory too large
Use HW_MEMSIZE instead of HW_USERMEM to get a 64 bit value of the physical memory on the machine. Also reviewed by vitalyd@gmail.com. Reviewed-by: sla, dholmes, dlong, mikael
This commit is contained in:
parent
833b7fcfff
commit
cfbcddfb0f
1 changed files with 9 additions and 6 deletions
|
@ -243,29 +243,32 @@ void os::Bsd::initialize_system_info() {
|
||||||
int mib[2];
|
int mib[2];
|
||||||
size_t len;
|
size_t len;
|
||||||
int cpu_val;
|
int cpu_val;
|
||||||
u_long mem_val;
|
julong mem_val;
|
||||||
|
|
||||||
/* get processors count via hw.ncpus sysctl */
|
/* get processors count via hw.ncpus sysctl */
|
||||||
mib[0] = CTL_HW;
|
mib[0] = CTL_HW;
|
||||||
mib[1] = HW_NCPU;
|
mib[1] = HW_NCPU;
|
||||||
len = sizeof(cpu_val);
|
len = sizeof(cpu_val);
|
||||||
if (sysctl(mib, 2, &cpu_val, &len, NULL, 0) != -1 && cpu_val >= 1) {
|
if (sysctl(mib, 2, &cpu_val, &len, NULL, 0) != -1 && cpu_val >= 1) {
|
||||||
|
assert(len == sizeof(cpu_val), "unexpected data size");
|
||||||
set_processor_count(cpu_val);
|
set_processor_count(cpu_val);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
set_processor_count(1); // fallback
|
set_processor_count(1); // fallback
|
||||||
}
|
}
|
||||||
|
|
||||||
/* get physical memory via hw.usermem sysctl (hw.usermem is used
|
/* get physical memory via hw.memsize sysctl (hw.memsize is used
|
||||||
* instead of hw.physmem because we need size of allocatable memory
|
* since it returns a 64 bit value)
|
||||||
*/
|
*/
|
||||||
mib[0] = CTL_HW;
|
mib[0] = CTL_HW;
|
||||||
mib[1] = HW_USERMEM;
|
mib[1] = HW_MEMSIZE;
|
||||||
len = sizeof(mem_val);
|
len = sizeof(mem_val);
|
||||||
if (sysctl(mib, 2, &mem_val, &len, NULL, 0) != -1)
|
if (sysctl(mib, 2, &mem_val, &len, NULL, 0) != -1) {
|
||||||
|
assert(len == sizeof(mem_val), "unexpected data size");
|
||||||
_physical_memory = mem_val;
|
_physical_memory = mem_val;
|
||||||
else
|
} else {
|
||||||
_physical_memory = 256*1024*1024; // fallback (XXXBSD?)
|
_physical_memory = 256*1024*1024; // fallback (XXXBSD?)
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef __OpenBSD__
|
#ifdef __OpenBSD__
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue