Fix sysctl() usage.
This fixes build on *BSDs and Darwin. Thanks to Jukka Salmi for the patches. Richard Koch reported the problem too.
This commit is contained in:
parent
43f44160b1
commit
27414daadf
|
@ -43,7 +43,7 @@ main(void)
|
|||
int name[2] = { CTL_HW, HW_NCPU };
|
||||
int cpus;
|
||||
size_t cpus_size = sizeof(cpus);
|
||||
sysctl(name, 2, &cpus, &cpus_size, NULL, NULL);
|
||||
sysctl(name, 2, &cpus, &cpus_size, NULL, 0);
|
||||
return 0;
|
||||
}
|
||||
]])], [
|
||||
|
|
|
@ -45,7 +45,7 @@ main(void)
|
|||
int name[2] = { CTL_HW, HW_PHYSMEM };
|
||||
unsigned long mem;
|
||||
size_t mem_ptr_size = sizeof(mem);
|
||||
sysctl(name, 2, &mem, &mem_ptr_size, NULL, NULL);
|
||||
sysctl(name, 2, &mem, &mem_ptr_size, NULL, 0);
|
||||
return 0;
|
||||
}
|
||||
]])], [
|
||||
|
|
|
@ -40,7 +40,7 @@ cpucores(void)
|
|||
int name[2] = { CTL_HW, HW_NCPU };
|
||||
int cpus;
|
||||
size_t cpus_size = sizeof(cpus);
|
||||
if (!sysctl(name, &cpus, &cpus_size, NULL, NULL)
|
||||
if (!sysctl(name, 2, &cpus, &cpus_size, NULL, 0)
|
||||
&& cpus_size == sizeof(cpus) && cpus > 0)
|
||||
ret = (uint32_t)(cpus);
|
||||
#endif
|
||||
|
|
|
@ -104,7 +104,7 @@ physmem(void)
|
|||
uint64_t u64;
|
||||
} mem;
|
||||
size_t mem_ptr_size = sizeof(mem.u64);
|
||||
if (!sysctl(name, 2, &mem.u64, &mem_ptr_size, NULL, NULL)) {
|
||||
if (!sysctl(name, 2, &mem.u64, &mem_ptr_size, NULL, 0)) {
|
||||
// IIRC, 64-bit "return value" is possible on some 64-bit
|
||||
// BSD systems even with HW_PHYSMEM (instead of HW_PHYSMEM64),
|
||||
// so support both.
|
||||
|
|
Loading…
Reference in New Issue