diff options
author | Daniel Lange <DLange@git.local> | 2016-04-11 13:00:15 +0200 |
---|---|---|
committer | Daniel Lange <DLange@git.local> | 2016-04-11 13:00:15 +0200 |
commit | d3c9975943df58e293359b87905d19ff1fd52061 (patch) | |
tree | e416378879f60e8d538b1b25963904f767d30ff4 /LoadMeter.c | |
download | debian_htop-d3c9975943df58e293359b87905d19ff1fd52061.tar.gz debian_htop-d3c9975943df58e293359b87905d19ff1fd52061.tar.bz2 debian_htop-d3c9975943df58e293359b87905d19ff1fd52061.zip |
Imported Upstream version 0.5upstream/0.5
Diffstat (limited to 'LoadMeter.c')
-rw-r--r-- | LoadMeter.c | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/LoadMeter.c b/LoadMeter.c new file mode 100644 index 0000000..ce6b098 --- /dev/null +++ b/LoadMeter.c @@ -0,0 +1,62 @@ +/* +htop +(C) 2004 Hisham H. Muhammad +Released under the GNU GPL, see the COPYING file +in the source distribution for its full text. +*/ + +#include "LoadMeter.h" +#include "Meter.h" + +#include "ProcessList.h" + +#include "debug.h" + +/*{ + +typedef struct LoadMeter_ LoadMeter; + +struct LoadMeter_ { + Meter super; + ProcessList* pl; +}; + +}*/ + +LoadMeter* LoadMeter_new() { + LoadMeter* this = malloc(sizeof(LoadMeter)); + Meter_init((Meter*)this, String_copy("Load"), String_copy("Load: "), 1); + ((Meter*)this)->attributes[0] = CRT_colors[LOAD]; + ((Meter*)this)->setValues = LoadMeter_setValues; + ((Object*)this)->display = LoadMeter_display; + Meter_setMode((Meter*)this, GRAPH); + ((Meter*)this)->total = 1.0; + return this; +} + +/* private */ +void LoadMeter_scan(double* one, double* five, double* fifteen) { + int activeProcs, totalProcs, lastProc; + FILE *fd = fopen(PROCDIR "/loadavg", "r"); + fscanf(fd, "%lf %lf %lf %d/%d %d", one, five, fifteen, + &activeProcs, &totalProcs, &lastProc); + fclose(fd); +} + +void LoadMeter_setValues(Meter* cast) { + double five, fifteen; + LoadMeter_scan(&cast->values[0], &five, &fifteen); + if (cast->values[0] > cast->total) { + cast->total = cast->values[0]; + } + snprintf(cast->displayBuffer.c, 7, "%.2f", cast->values[0]); +} + +void LoadMeter_display(Object* cast, RichString* out) { + Meter* super = (Meter*)cast; + LoadMeter* this = (LoadMeter*)cast; + char buffer[20]; + RichString_prune(out); + sprintf(buffer, "%.2f ", ((Meter*)this)->values[0]); + RichString_append(out, super->attributes[0], buffer); +} |