Fix for unknown 'task_info_data_t', 'TASK_VM_INFO_COUNT', 'TASK_VM_INFO' on MacOS <= 10.8. New task info support was added in MacOS 10.9. This patch applies only to ESMF versions <= 8.8.1. Was fixed upstream. Remove this patch on next release after 8.8.1. Copied from upstream patch on ESMF 8.8.1 by @barracuda156: https://github.com/esmf-org/esmf/pull/395 diff --git a/src/Infrastructure/VM/src/ESMCI_VM.C b/src/Infrastructure/VM/src/ESMCI_VM.C index 3b0ea7ae13..e61ab17848 100644 --- src/Infrastructure/VM/src/ESMCI_VM.C.orig +++ src/Infrastructure/VM/src/ESMCI_VM.C @@ -52,6 +52,7 @@ #endif #if (defined ESMF_OS_Darwin) #include +#include #endif #include "ESMF_Pthread.h" #include "ESMCI_IO_Handler.h" @@ -2770,6 +2771,7 @@ void VM::logMemInfo( log->Write(msg, msgType); #elif (defined ESMF_OS_Darwin) // Get memory +#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1090 task_vm_info_data_t mem_info; mach_msg_type_number_t size = TASK_VM_INFO_COUNT; kern_return_t kerr = task_info(mach_task_self(), @@ -2808,6 +2810,21 @@ void VM::logMemInfo( log->Write(msg, msgType); #endif } +#else + // Fallback for earlier systems + task_basic_info mem_info; + mach_msg_type_number_t size = TASK_BASIC_INFO_COUNT; + kern_return_t kerr = task_info(mach_task_self(), + TASK_BASIC_INFO, + (task_info_t)&mem_info, + &size); + if( kerr == KERN_SUCCESS ) { + sprintf(msg, "%s - MemInfo: VmRSS: \t%d (bytes)",prefix.c_str(),mem_info.resident_size); + log->Write(msg, msgType); + sprintf(msg, "%s - MemInfo: Total allocated space (bytes): \t%d",prefix.c_str(),mem_info.virtual_size); + log->Write(msg, msgType); + } +#endif #endif // output the wtime since execution start double wt;