1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
size_t GC_pageSize (void) {
size_t len;
int mib[2];
len = 0;
mib[0] = CTL_HW;
mib[1] = HW_PAGESIZE;
if (-1 == sysctl (mib, 2, NULL, &len, NULL, 0))
diee ("sysctl failed");
if (len == sizeof(unsigned long long int)) {
unsigned long long int pageSize;
if (-1 == sysctl (mib, 2, &pageSize, &len, NULL, 0))
diee ("sysctl failed");
return (size_t)pageSize;
} else if (len == sizeof(unsigned long int)) {
unsigned long int pageSize;
if (-1 == sysctl (mib, 2, &pageSize, &len, NULL, 0))
diee ("sysctl failed");
return (size_t)pageSize;
} else if (len == sizeof(unsigned int)) {
unsigned int pageSize;
if (-1 == sysctl (mib, 2, &pageSize, &len, NULL, 0))
diee ("sysctl failed");
return (size_t)pageSize;
} else {
die ("GC_pageSize");
}
}
uintmax_t GC_physMem (void) {
size_t len;
int mib[2];
len = 0;
mib[0] = CTL_HW;
#if defined(HW_MEMSIZE)
/* Darwin */
mib[1] = HW_MEMSIZE;
#elif defined(HW_PHYSMEM64)
/* NetBSD */
mib[1] = HW_PHYSMEM64;
#else
mib[1] = HW_PHYSMEM;
#endif
if (-1 == sysctl (mib, 2, NULL, &len, NULL, 0))
diee ("sysctl failed");
if (len == sizeof(unsigned long long int)) {
unsigned long long int physMem;
if (-1 == sysctl (mib, 2, &physMem, &len, NULL, 0))
diee ("sysctl failed");
return (uintmax_t)physMem;
} else if (len == sizeof(unsigned long int)) {
unsigned long int physMem;
if (-1 == sysctl (mib, 2, &physMem, &len, NULL, 0))
diee ("sysctl failed");
return (uintmax_t)physMem;
} else if (len == sizeof(unsigned int)) {
unsigned int physMem;
if (-1 == sysctl (mib, 2, &physMem, &len, NULL, 0))
diee ("sysctl failed");
return (uintmax_t)physMem;
} else {
die ("GC_physMem");
}
}
|