75 |
|
#endif |
76 |
|
|
77 |
|
/* Return the total amount of physical memory. */ |
78 |
< |
double |
78 |
> |
RealType |
79 |
|
physmem_total () |
80 |
|
{ |
81 |
|
#if defined _SC_PHYS_PAGES && defined _SC_PAGESIZE |
82 |
|
{ /* This works on linux-gnu, solaris2 and cygwin. */ |
83 |
< |
double pages = sysconf (_SC_PHYS_PAGES); |
84 |
< |
double pagesize = sysconf (_SC_PAGESIZE); |
83 |
> |
RealType pages = sysconf (_SC_PHYS_PAGES); |
84 |
> |
RealType pagesize = sysconf (_SC_PAGESIZE); |
85 |
|
if (0 <= pages && 0 <= pagesize) |
86 |
|
return pages * pagesize; |
87 |
|
} |
92 |
|
struct pst_static pss; |
93 |
|
if (0 <= pstat_getstatic (&pss, sizeof pss, 1, 0)) |
94 |
|
{ |
95 |
< |
double pages = pss.physical_memory; |
96 |
< |
double pagesize = pss.page_size; |
95 |
> |
RealType pages = pss.physical_memory; |
96 |
> |
RealType pagesize = pss.page_size; |
97 |
|
if (0 <= pages && 0 <= pagesize) |
98 |
|
return pages * pagesize; |
99 |
|
} |
105 |
|
struct rminfo realmem; |
106 |
|
if (sysmp (MP_SAGET, MPSA_RMINFO, &realmem, sizeof realmem) == 0) |
107 |
|
{ |
108 |
< |
double pagesize = sysconf (_SC_PAGESIZE); |
109 |
< |
double pages = realmem.physmem; |
108 |
> |
RealType pagesize = sysconf (_SC_PAGESIZE); |
109 |
> |
RealType pages = realmem.physmem; |
110 |
|
if (0 <= pages && 0 <= pagesize) |
111 |
|
return pages * pagesize; |
112 |
|
} |
120 |
|
if (getsysinfo (GSI_PHYSMEM, (caddr_t) &physmem, sizeof (physmem), |
121 |
|
NULL, NULL, NULL) == 1) |
122 |
|
{ |
123 |
< |
double kbytes = physmem; |
123 |
> |
RealType kbytes = physmem; |
124 |
|
|
125 |
|
if (0 <= kbytes) |
126 |
|
return kbytes * 1024.0; |
136 |
|
|
137 |
|
if (sysctl (mib, 2, &physmem, &len, NULL, 0) == 0 |
138 |
|
&& len == sizeof (physmem)) |
139 |
< |
return (double) physmem; |
139 |
> |
return (RealType) physmem; |
140 |
|
} |
141 |
|
#endif |
142 |
|
|
160 |
|
lms_ex.dwLength = sizeof lms_ex; |
161 |
|
if (!pfnex (&lms_ex)) |
162 |
|
return 0.0; |
163 |
< |
return (double) lms_ex.ullTotalPhys; |
163 |
> |
return (RealType) lms_ex.ullTotalPhys; |
164 |
|
} |
165 |
|
|
166 |
|
/* Fall back to GlobalMemoryStatus which is always available. |
169 |
|
{ |
170 |
|
MEMORYSTATUS ms; |
171 |
|
GlobalMemoryStatus (&ms); |
172 |
< |
return (double) ms.dwTotalPhys; |
172 |
> |
return (RealType) ms.dwTotalPhys; |
173 |
|
} |
174 |
|
} |
175 |
|
#endif |
179 |
|
} |
180 |
|
|
181 |
|
/* Return the amount of physical memory available. */ |
182 |
< |
double |
182 |
> |
RealType |
183 |
|
physmem_available () |
184 |
|
{ |
185 |
|
#if defined _SC_AVPHYS_PAGES && defined _SC_PAGESIZE |
186 |
|
{ /* This works on linux-gnu, solaris2 and cygwin. */ |
187 |
< |
double pages = sysconf (_SC_AVPHYS_PAGES); |
188 |
< |
double pagesize = sysconf (_SC_PAGESIZE); |
187 |
> |
RealType pages = sysconf (_SC_AVPHYS_PAGES); |
188 |
> |
RealType pagesize = sysconf (_SC_PAGESIZE); |
189 |
|
if (0 <= pages && 0 <= pagesize) |
190 |
|
return pages * pagesize; |
191 |
|
} |
198 |
|
if (0 <= pstat_getstatic (&pss, sizeof pss, 1, 0) |
199 |
|
&& 0 <= pstat_getdynamic (&psd, sizeof psd, 1, 0)) |
200 |
|
{ |
201 |
< |
double pages = psd.psd_free; |
202 |
< |
double pagesize = pss.page_size; |
201 |
> |
RealType pages = psd.psd_free; |
202 |
> |
RealType pagesize = pss.page_size; |
203 |
|
if (0 <= pages && 0 <= pagesize) |
204 |
|
return pages * pagesize; |
205 |
|
} |
211 |
|
struct rminfo realmem; |
212 |
|
if (sysmp (MP_SAGET, MPSA_RMINFO, &realmem, sizeof realmem) == 0) |
213 |
|
{ |
214 |
< |
double pagesize = sysconf (_SC_PAGESIZE); |
215 |
< |
double pages = realmem.availrmem; |
214 |
> |
RealType pagesize = sysconf (_SC_PAGESIZE); |
215 |
> |
RealType pages = realmem.availrmem; |
216 |
|
if (0 <= pages && 0 <= pagesize) |
217 |
|
return pages * pagesize; |
218 |
|
} |
225 |
|
|
226 |
|
if (table (TBL_VMSTATS, 0, &vmstats, 1, sizeof (vmstats)) == 1) |
227 |
|
{ |
228 |
< |
double pages = vmstats.free_count; |
229 |
< |
double pagesize = vmstats.pagesize; |
228 |
> |
RealType pages = vmstats.free_count; |
229 |
> |
RealType pagesize = vmstats.pagesize; |
230 |
|
|
231 |
|
if (0 <= pages && 0 <= pagesize) |
232 |
|
return pages * pagesize; |
242 |
|
|
243 |
|
if (sysctl (mib, 2, &usermem, &len, NULL, 0) == 0 |
244 |
|
&& len == sizeof (usermem)) |
245 |
< |
return (double) usermem; |
245 |
> |
return (RealType) usermem; |
246 |
|
} |
247 |
|
#endif |
248 |
|
|
261 |
|
lms_ex.dwLength = sizeof lms_ex; |
262 |
|
if (!pfnex (&lms_ex)) |
263 |
|
return 0.0; |
264 |
< |
return (double) lms_ex.ullAvailPhys; |
264 |
> |
return (RealType) lms_ex.ullAvailPhys; |
265 |
|
} |
266 |
|
|
267 |
|
/* Fall back to GlobalMemoryStatus which is always available. |
270 |
|
{ |
271 |
|
MEMORYSTATUS ms; |
272 |
|
GlobalMemoryStatus (&ms); |
273 |
< |
return (double) ms.dwAvailPhys; |
273 |
> |
return (RealType) ms.dwAvailPhys; |
274 |
|
} |
275 |
|
} |
276 |
|
#endif |