1#ifndef SYSTEMMEMORY_HEADER
2#define SYSTEMMEMORY_HEADER
15#elif defined(__unix__) || defined(__unix) || defined(unix) || (defined(__APPLE__) && defined(__MACH__))
16#include <sys/resource.h>
19#if defined(__APPLE__) && defined(__MACH__)
22#elif (defined(_AIX) || defined(__TOS__AIX__)) || \
23 (defined(__sun__) || defined(__sun) || defined(sun) && (defined(__SVR4) || defined(__svr4__)))
27#elif defined(__linux__) || defined(__linux) || defined(linux) || defined(__gnu_linux__)
33#error "Cannot define getPeakRSS( ) or getCurrentRSS( ) for an unknown OS."
44 PROCESS_MEMORY_COUNTERS
info;
45 GetProcessMemoryInfo(GetCurrentProcess(), &
info,
sizeof(
info));
46 return (
size_t)
info.PeakWorkingSetSize;
48#elif (defined(_AIX) || defined(__TOS__AIX__)) || \
49 (defined(__sun__) || defined(__sun) || defined(sun) && (defined(__SVR4) || defined(__svr4__)))
53 if ((fd = open(
"/proc/self/psinfo", O_RDONLY)) == -1)
55 if (read(fd, &psinfo,
sizeof(psinfo)) !=
sizeof(psinfo)) {
60 return (
size_t)(psinfo.pr_rssize * 1024L);
62#elif defined(__unix__) || defined(__unix) || defined(unix) || (defined(__APPLE__) && defined(__MACH__))
65 getrusage(RUSAGE_SELF, &rusage);
66#if defined(__APPLE__) && defined(__MACH__)
67 return (
size_t)rusage.ru_maxrss;
69 return (
size_t)(rusage.ru_maxrss * 1024L);
85 PROCESS_MEMORY_COUNTERS
info;
86 GetProcessMemoryInfo(GetCurrentProcess(), &
info,
sizeof(
info));
87 return (
size_t)
info.WorkingSetSize;
89#elif defined(__APPLE__) && defined(__MACH__)
91 struct mach_task_basic_info
info;
92 mach_msg_type_number_t infoCount = MACH_TASK_BASIC_INFO_COUNT;
93 if (task_info(mach_task_self(), MACH_TASK_BASIC_INFO, (task_info_t)&
info, &infoCount) != KERN_SUCCESS)
95 return (
size_t)
info.resident_size;
97#elif defined(__linux__) || defined(__linux) || defined(linux) || defined(__gnu_linux__)
101 if ((fp = fopen(
"/proc/self/statm",
"r")) == NULL)
103 if (fscanf(fp,
"%*s%ld", &rss) != 1) {
108 return (
size_t)rss * (size_t)sysconf(_SC_PAGESIZE);
size_t getCurrentRSS()
Returns the current resident set size (physical memory use) measured in bytes, or zero if the value c...
size_t getPeakRSS()
Returns the peak (maximum so far) resident set size (physical memory use) measured in bytes,...
void info(HaloModel **hmp)