From a35d4a4b4b9d12308aab7a91301a581caaef4e41 Mon Sep 17 00:00:00 2001 From: Geza Lore Date: Wed, 5 Nov 2025 15:45:35 +0000 Subject: [PATCH] Add memory usage statistics on macOS (#6644) Add memory usage statistics on macOS --- include/verilatedos_c.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/include/verilatedos_c.h b/include/verilatedos_c.h index cf1588971..79d16f0d8 100644 --- a/include/verilatedos_c.h +++ b/include/verilatedos_c.h @@ -41,6 +41,10 @@ #if defined(__APPLE__) && !defined(__arm64__) && !defined(__POWERPC__) # include // For __cpuid_count() #endif + +#if defined(__APPLE__) && defined(__MACH__) +# include // For task_info() +#endif // clang-format on namespace VlOs { @@ -146,6 +150,15 @@ void memUsageBytes(uint64_t& peakr, uint64_t& currentr) VL_MT_SAFE { peakr = pmc.PeakWorkingSetSize; currentr = pmc.WorkingSetSize; } +#elif defined(__APPLE__) && defined(__MACH__) + mach_task_basic_info_data_t info; + mach_msg_type_number_t count = MACH_TASK_BASIC_INFO_COUNT; + const kern_return_t ret + = task_info(mach_task_self(), MACH_TASK_BASIC_INFO, (task_info_t)&info, &count); + if (ret == KERN_SUCCESS && count == MACH_TASK_BASIC_INFO_COUNT) { + peakr = info.resident_size_max; + currentr = info.resident_size; + } #else // Highly unportable. Sorry std::ifstream is{"/proc/self/status"};