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