From ff9409b1737627857eb47f64f536a3f66b6a09a4 Mon Sep 17 00:00:00 2001 From: Daniel Lange Date: Mon, 11 Apr 2016 13:01:07 +0200 Subject: Imported Upstream version 2.0.0 --- LoadAverageMeter.c | 34 +++++++++++----------------------- 1 file changed, 11 insertions(+), 23 deletions(-) (limited to 'LoadAverageMeter.c') diff --git a/LoadAverageMeter.c b/LoadAverageMeter.c index 850f802..d292a7c 100644 --- a/LoadAverageMeter.c +++ b/LoadAverageMeter.c @@ -8,51 +8,37 @@ in the source distribution for its full text. #include "LoadAverageMeter.h" #include "CRT.h" - -#include +#include "Platform.h" /*{ #include "Meter.h" }*/ int LoadAverageMeter_attributes[] = { - LOAD_AVERAGE_FIFTEEN, LOAD_AVERAGE_FIVE, LOAD_AVERAGE_ONE + LOAD_AVERAGE_ONE, LOAD_AVERAGE_FIVE, LOAD_AVERAGE_FIFTEEN }; int LoadMeter_attributes[] = { LOAD }; -static inline void LoadAverageMeter_scan(double* one, double* five, double* fifteen) { - int activeProcs, totalProcs, lastProc; - *one = 0; *five = 0; *fifteen = 0; - FILE *fd = fopen(PROCDIR "/loadavg", "r"); - if (fd) { - int total = fscanf(fd, "%32lf %32lf %32lf %32d/%32d %32d", one, five, fifteen, - &activeProcs, &totalProcs, &lastProc); - (void) total; - assert(total == 6); - fclose(fd); - } -} - static void LoadAverageMeter_setValues(Meter* this, char* buffer, int size) { - LoadAverageMeter_scan(&this->values[2], &this->values[1], &this->values[0]); - snprintf(buffer, size, "%.2f/%.2f/%.2f", this->values[2], this->values[1], this->values[0]); + Platform_getLoadAverage(&this->values[0], &this->values[1], &this->values[2]); + snprintf(buffer, size, "%.2f/%.2f/%.2f", this->values[0], this->values[1], this->values[2]); } static void LoadAverageMeter_display(Object* cast, RichString* out) { Meter* this = (Meter*)cast; char buffer[20]; - sprintf(buffer, "%.2f ", this->values[2]); - RichString_write(out, CRT_colors[LOAD_AVERAGE_FIFTEEN], buffer); + sprintf(buffer, "%.2f ", this->values[0]); + RichString_write(out, CRT_colors[LOAD_AVERAGE_ONE], buffer); sprintf(buffer, "%.2f ", this->values[1]); RichString_append(out, CRT_colors[LOAD_AVERAGE_FIVE], buffer); - sprintf(buffer, "%.2f ", this->values[0]); - RichString_append(out, CRT_colors[LOAD_AVERAGE_ONE], buffer); + sprintf(buffer, "%.2f ", this->values[2]); + RichString_append(out, CRT_colors[LOAD_AVERAGE_FIFTEEN], buffer); } static void LoadMeter_setValues(Meter* this, char* buffer, int size) { double five, fifteen; - LoadAverageMeter_scan(&this->values[0], &five, &fifteen); + Platform_getLoadAverage(&this->values[0], &five, &fifteen); if (this->values[0] > this->total) { this->total = this->values[0]; } @@ -79,6 +65,7 @@ MeterClass LoadAverageMeter_class = { .attributes = LoadAverageMeter_attributes, .name = "LoadAverage", .uiName = "Load average", + .description = "Load averages: 1 minute, 5 minutes, 15 minutes", .caption = "Load average: " }; @@ -94,5 +81,6 @@ MeterClass LoadMeter_class = { .attributes = LoadMeter_attributes, .name = "Load", .uiName = "Load", + .description = "Load: average of ready processes in the last minute", .caption = "Load: " }; -- cgit v1.2.3