3
if sys.platform == "linux2":
7
libc = c.CDLL(ctypes.util.find_library("c"))
9
class SysInfo(c.Structure):
11
# for libc5: needs padding
12
padding = 20 - 2 * c.sizeof(c.c_long) - c.sizeof(c.c_int)
14
_fields_ = [("uptime", c.c_ulong),
15
("loads", 3 * c.c_ulong),
16
("totalram", c.c_ulong),
17
("freeram", c.c_ulong),
18
("sharedram", c.c_ulong),
19
("bufferram", c.c_ulong),
20
("totalswap", c.c_ulong),
21
("freeswap", c.c_ulong),
22
("procs", c.c_ushort),
23
("totalhigh", c.c_ulong),
24
("freehigh", c.c_ulong),
25
("mem_unit", c.c_ulong),
26
("_padding", padding * c.c_char)
31
libc.sysinfo(c.byref(sys_info))
32
return sys_info.freeram
34
elif sys.platform == "win32":
38
free_mem = lambda: 0 # memory will never change !
41
return win32api.GlobalMemoryStatus()['AvailPhys']
44
sys.stderr.write("determination of memory status not supported on this \n"
45
" platform, mesauring for memoryleaks will never fail\n")
47
free_mem = lambda: 0 # memory will never change !