new version of muscle 3.8.31
[jabaws.git] / binaries / src / muscle / globalsosx.cpp
1 #ifdef __MACH__\r
2 \r
3 #include <memory.h>\r
4 #include <stdlib.h>\r
5 #include <stdio.h>\r
6 #include <unistd.h>\r
7 #include <sys/types.h>\r
8 #include <sys/sysctl.h>\r
9 #include <sys/socket.h>\r
10 #include <sys/gmon.h>\r
11 #include <mach/vm_param.h>\r
12 #include <netinet/in.h>\r
13 #include <netinet/icmp6.h>\r
14 #include <sys/vmmeter.h>\r
15 #include <sys/proc.h>\r
16 #include <mach/task_info.h>\r
17 #include <mach/task.h>\r
18 #include <mach/mach_init.h>\r
19 #include <mach/vm_statistics.h>\r
20 \r
21 const double DEFAULT_RAM = 1e9;\r
22 const double DEFAULT_MEM_USE = 1e6;\r
23 \r
24 double GetNAN()\r
25         {\r
26         static unsigned long nan[2]={0xffffffff, 0x7fffffff};\r
27         double dNAN = *( double* )nan;\r
28         return dNAN;\r
29         }\r
30 \r
31 double g_dNAN = GetNAN();\r
32 \r
33 \r
34 double GetRAMSize()\r
35         {\r
36         static double CACHED_RAM = 0;\r
37         if (CACHED_RAM != 0)\r
38                 return CACHED_RAM;\r
39 \r
40         uint64_t MemPages = 0;\r
41         size_t Len = sizeof(MemPages);\r
42         if (sysctlbyname("hw.memsize", &MemPages, &Len, NULL, 0) < 0)\r
43                 return DEFAULT_RAM;\r
44         return (double) MemPages;\r
45         }\r
46 \r
47 double GetRAMSizeMB()\r
48         {\r
49         return GetRAMSize()/1e6;\r
50         }\r
51 \r
52 static double g_uPeakMemUseBytes;\r
53 \r
54 double GetMaxMemUseBytes()\r
55         {\r
56         return g_uPeakMemUseBytes;\r
57         }\r
58 \r
59 double GetPeakMemUseBytes()\r
60         {\r
61         return GetMaxMemUseBytes();\r
62         }\r
63 \r
64 double GetMemUseBytes()\r
65         {\r
66         task_t mytask = mach_task_self();\r
67         struct task_basic_info ti;\r
68         memset((void *) &ti, 0, sizeof(ti));\r
69         mach_msg_type_number_t count = TASK_BASIC_INFO_COUNT;\r
70         kern_return_t ok = task_info(mytask, TASK_BASIC_INFO, (task_info_t) &ti, &count);\r
71         if (ok == KERN_INVALID_ARGUMENT)\r
72                 return DEFAULT_MEM_USE;\r
73 \r
74         if (ok != KERN_SUCCESS)\r
75                 return DEFAULT_MEM_USE;\r
76 \r
77         double uBytes = (double ) ti.resident_size;\r
78         if (uBytes > g_uPeakMemUseBytes)\r
79                 g_uPeakMemUseBytes = uBytes;\r
80         return uBytes;\r
81         }\r
82 \r
83 double GetMemUseMB()\r
84         {\r
85         return GetMemUseBytes()/1e6;\r
86         }\r
87 \r
88 void OSInit()\r
89         {\r
90         }\r
91 \r
92 #endif // __MACH__\r