CPU usage getter for apple.

This commit is contained in:
Bartosz Taudul 2019-02-25 15:04:06 +01:00
parent 85f29a0f22
commit 963d2b3ca8
2 changed files with 16 additions and 2 deletions

View File

@ -8,6 +8,9 @@
# include <assert.h> # include <assert.h>
# include <stdio.h> # include <stdio.h>
# include <inttypes.h> # include <inttypes.h>
# elif defined __APPLE__
# include <mach/mach_host.h>
# include <mach/host_info.h>
# endif # endif
namespace tracy namespace tracy
@ -46,6 +49,17 @@ void SysTime::ReadTimes()
used = user + nice + system; used = user + nice + system;
} }
# elif defined __APPLE__
void SysTime::ReadTimes()
{
host_cpu_load_info_data_t info;
mach_msg_type_number_t cnt = HOST_CPU_LOAD_INFO_COUNT;
host_statistics( mach_host_self(), HOST_CPU_LOAD_INFO, reinterpret_cast<host_info_t>( &info ), &cnt );
used = info.cpu_ticks[CPU_STATE_USER] + info.cpu_ticks[CPU_STATE_NICE] + info.cpu_ticks[CPU_STATE_SYSTEM];
idle = info.cpu_ticks[CPU_STATE_IDLE];
}
#endif #endif
SysTime::SysTime() SysTime::SysTime()
@ -65,7 +79,7 @@ float SysTime::Get()
#if defined _WIN32 || defined __CYGWIN__ #if defined _WIN32 || defined __CYGWIN__
return diffUsed == 0 ? 0 : ( diffUsed - diffIdle ) * 100.f / diffUsed; return diffUsed == 0 ? 0 : ( diffUsed - diffIdle ) * 100.f / diffUsed;
#elif defined __linux__ #elif defined __linux__ || defined __APPLE__
const auto total = diffUsed + diffIdle; const auto total = diffUsed + diffIdle;
return total == 0 ? 0 : diffUsed * 100.f / total; return total == 0 ? 0 : diffUsed * 100.f / total;
#endif #endif

View File

@ -1,7 +1,7 @@
#ifndef __TRACYSYSTIME_HPP__ #ifndef __TRACYSYSTIME_HPP__
#define __TRACYSYSTIME_HPP__ #define __TRACYSYSTIME_HPP__
#if defined _WIN32 || defined __CYGWIN__ || defined __linux__ #if defined _WIN32 || defined __CYGWIN__ || defined __linux__ || defined __APPLE__
# define TRACY_HAS_SYSTIME # define TRACY_HAS_SYSTIME
#endif #endif