From 94c10a6a18ceadf78d27245ce389610c67a7cf2e Mon Sep 17 00:00:00 2001 From: Mike Seplowitz Date: Mon, 12 Jan 2015 20:48:07 -0500 Subject: Implement GetLoadAverage on AIX using libperfstat --- configure.py | 3 +++ src/util.cc | 12 ++++++++++++ 2 files changed, 15 insertions(+) diff --git a/configure.py b/configure.py index f9ea8eb..fcea72a 100755 --- a/configure.py +++ b/configure.py @@ -505,6 +505,9 @@ if platform.is_msvc(): else: libs.append('-lninja') +if platform.is_aix(): + libs.append('-lperfstat') + all_targets = [] n.comment('Main executable is library plus main() function.') diff --git a/src/util.cc b/src/util.cc index aa47f2f..d150fe2 100644 --- a/src/util.cc +++ b/src/util.cc @@ -45,6 +45,8 @@ #elif defined(__SVR4) && defined(__sun) #include #include +#elif defined(_AIX) +#include #elif defined(linux) || defined(__GLIBC__) #include #endif @@ -573,6 +575,16 @@ double GetLoadAverage() { return posix_compatible_load; } +#elif defined(_AIX) +double GetLoadAverage() { + perfstat_cpu_total_t cpu_stats; + if (perfstat_cpu_total(NULL, &cpu_stats, sizeof(cpu_stats), 1) < 0) { + return -0.0f; + } + + // Calculation taken from comment in libperfstats.h + return double(cpu_stats.loadavg[0]) / double(1 << SBITS); +} #else double GetLoadAverage() { double loadavg[3] = { 0.0f, 0.0f, 0.0f }; -- cgit v1.2.1