diff --git a/src/tl/tl/tlTimer.cc b/src/tl/tl/tlTimer.cc index f77efd009..c7cb1b11c 100644 --- a/src/tl/tl/tlTimer.cc +++ b/src/tl/tl/tlTimer.cc @@ -33,6 +33,7 @@ # include # include # include +# include #else # include # include @@ -206,8 +207,19 @@ Timer::memory_size () return mem; -#else +#elif defined(__APPLE__) + pid_t pid = getpid(); + struct proc_taskinfo taskinfo; + if (proc_pidinfo(pid, PROC_PIDTASKINFO, 0, &taskinfo, sizeof(taskinfo)) <= 0) { + perror("proc_pidinfo failed"); + return 0; + } + + return taskinfo.pti_resident_size; + +#elif defined(__linux__) + unsigned long memsize = 0; FILE *procfile = fopen ("/proc/self/stat", "r"); if (procfile != NULL) { @@ -258,9 +270,10 @@ Timer::memory_size () memsize = 0; } } - return size_t (memsize); +#else +# error Unsupported platform #endif }