diff --git a/src/memoryusage.cpp b/src/memoryusage.cpp index d620569beca423f2c08b380d36d82ee7b7878f8c..31ef5f8c17781082d27cdb6cc7cd9d5d01b48e58 100644 --- a/src/memoryusage.cpp +++ b/src/memoryusage.cpp @@ -29,19 +29,37 @@ #ifndef WIN32 #include #endif -#ifdef BSD +#ifdef __MACH__ +#include +#elif BSD #include #include #include #include #include - #endif namespace Transport { #ifndef WIN32 -#ifdef BSD +#ifdef __MACH__ + +void process_mem_usage(double& vm_usage, double& resident_set, pid_t pid) { + + struct task_basic_info t_info; + mach_msg_type_number_t t_info_count = TASK_BASIC_INFO_COUNT; + + if (KERN_SUCCESS != task_info(mach_task_self(), + TASK_BASIC_INFO, (task_info_t)&t_info, + &t_info_count)) { + vm_usage = 0; + resident_set = 0; + return; + } + vm_usage = t_info.virtual_size; + resident_set = t_info.resident_size; +} +#elif BSD void process_mem_usage(double& vm_usage, double& resident_set, pid_t pid) { int mib[4]; size_t size;