+++ /dev/null
-#ifdef __MACH__\r
-\r
-#include <memory.h>\r
-#include <stdlib.h>\r
-#include <stdio.h>\r
-#include <unistd.h>\r
-#include <sys/types.h>\r
-#include <sys/sysctl.h>\r
-#include <sys/socket.h>\r
-#include <sys/gmon.h>\r
-#include <mach/vm_param.h>\r
-#include <netinet/in.h>\r
-#include <netinet/icmp6.h>\r
-#include <sys/vmmeter.h>\r
-#include <sys/proc.h>\r
-#include <mach/task_info.h>\r
-#include <mach/task.h>\r
-#include <mach/mach_init.h>\r
-#include <mach/vm_statistics.h>\r
-\r
-const double DEFAULT_RAM = 1e9;\r
-const double DEFAULT_MEM_USE = 1e6;\r
-\r
-double GetNAN()\r
- {\r
- static unsigned long nan[2]={0xffffffff, 0x7fffffff};\r
- double dNAN = *( double* )nan;\r
- return dNAN;\r
- }\r
-\r
-double g_dNAN = GetNAN();\r
-\r
-\r
-double GetRAMSize()\r
- {\r
- static double CACHED_RAM = 0;\r
- if (CACHED_RAM != 0)\r
- return CACHED_RAM;\r
-\r
- uint64_t MemPages = 0;\r
- size_t Len = sizeof(MemPages);\r
- if (sysctlbyname("hw.memsize", &MemPages, &Len, NULL, 0) < 0)\r
- return DEFAULT_RAM;\r
- return (double) MemPages;\r
- }\r
-\r
-double GetRAMSizeMB()\r
- {\r
- return GetRAMSize()/1e6;\r
- }\r
-\r
-static double g_uPeakMemUseBytes;\r
-\r
-double GetMaxMemUseBytes()\r
- {\r
- return g_uPeakMemUseBytes;\r
- }\r
-\r
-double GetPeakMemUseBytes()\r
- {\r
- return GetMaxMemUseBytes();\r
- }\r
-\r
-double GetMemUseBytes()\r
- {\r
- task_t mytask = mach_task_self();\r
- struct task_basic_info ti;\r
- memset((void *) &ti, 0, sizeof(ti));\r
- mach_msg_type_number_t count = TASK_BASIC_INFO_COUNT;\r
- kern_return_t ok = task_info(mytask, TASK_BASIC_INFO, (task_info_t) &ti, &count);\r
- if (ok == KERN_INVALID_ARGUMENT)\r
- return DEFAULT_MEM_USE;\r
-\r
- if (ok != KERN_SUCCESS)\r
- return DEFAULT_MEM_USE;\r
-\r
- double uBytes = (double ) ti.resident_size;\r
- if (uBytes > g_uPeakMemUseBytes)\r
- g_uPeakMemUseBytes = uBytes;\r
- return uBytes;\r
- }\r
-\r
-double GetMemUseMB()\r
- {\r
- return GetMemUseBytes()/1e6;\r
- }\r
-\r
-void OSInit()\r
- {\r
- }\r
-\r
-#endif // __MACH__\r