Mac OS X equivalent header file for `sysinfo.h` in Linux

pcbabu picture pcbabu · Sep 21, 2012 · Viewed 10.6k times · Source

Is there any Mac OS X equivalent header file for sysinfo.h in Linux. I am porting code from Linux to Mac but the structure struct sysinfo is not found.

Edit: ==More info== In Linux platform I use a Header file <sys/sysinfo.h> which is not found in Mac. By including the header in Linux I perform following operation: struct sysinfo s; sysinfo(&s);

Which in result give me some system related info. Now as I porting my project from Linux to Mac I want to know is there any similar functionality serve by Mac.

Please help.

Thanks in advance.

Answer

user149341 picture user149341 · Sep 21, 2012

The closest equivalent to sysinfo in Mac OS X is sysctl / MIB. It doesn't return a sysinfo struct directly, but most of the values in that structure are available as sysctl keys. For instance:

  • uptime is approximated by kern.boottime (although that reflects the actual boot time, not the running time)
  • loads is available as vm.loadavg
  • totalram = hw.memsize (in bytes)
  • freeram, sharedram, and bufferram are complicated, as the XNU memory manager works differently from Linux's. I'm not sure if the closest equivalent values ("active" and "inactive" memory) are exposed.
  • totalswap and freeswap are reflected in vm.swapusage. (But note that OS X allocates swap space dynamically.)
  • procs doesn't appear to have any equivalent.
  • totalhigh and freehigh are specific to i386 Linux.