diff options
author | Hisham Muhammad <hisham@gobolinux.org> | 2010-08-24 23:20:38 +0000 |
---|---|---|
committer | Hisham Muhammad <hisham@gobolinux.org> | 2010-08-24 23:20:38 +0000 |
commit | 6486229308cf7acc7a4ba7dd5f755cdb969372ef (patch) | |
tree | 380c7bd90256bc93d8babf0eda6fecefcfa06d74 /ProcessList.h | |
parent | c166e172a8f46c710fbba5996f8f332f4c4984ce (diff) |
add support for steal/guest CPU time measurement
simplify processor data accounting (add CPUData structure)
remove Process_clone trick
Diffstat (limited to 'ProcessList.h')
-rw-r--r-- | ProcessList.h | 62 |
1 files changed, 33 insertions, 29 deletions
diff --git a/ProcessList.h b/ProcessList.h index 509dfce0..48456def 100644 --- a/ProcessList.h +++ b/ProcessList.h @@ -35,6 +35,7 @@ in the source distribution for its full text. #include "debug.h" #include <assert.h> + #ifndef PROCDIR #define PROCDIR "/proc" #endif @@ -55,50 +56,51 @@ in the source distribution for its full text. #define MAX_READ 2048 #endif -#ifndef PER_PROCESSOR_FIELDS -#define PER_PROCESSOR_FIELDS 22 -#endif - #ifdef DEBUG_PROC typedef int(*vxscanf)(void*, const char*, va_list); #endif +typedef struct CPUData_ { + unsigned long long int totalTime; + unsigned long long int userTime; + unsigned long long int systemTime; + unsigned long long int systemAllTime; + unsigned long long int idleAllTime; + unsigned long long int idleTime; + unsigned long long int niceTime; + unsigned long long int ioWaitTime; + unsigned long long int irqTime; + unsigned long long int softIrqTime; + unsigned long long int stealTime; + unsigned long long int guestTime; + + unsigned long long int totalPeriod; + unsigned long long int userPeriod; + unsigned long long int systemPeriod; + unsigned long long int systemAllPeriod; + unsigned long long int idleAllPeriod; + unsigned long long int idlePeriod; + unsigned long long int nicePeriod; + unsigned long long int ioWaitPeriod; + unsigned long long int irqPeriod; + unsigned long long int softIrqPeriod; + unsigned long long int stealPeriod; + unsigned long long int guestPeriod; +} CPUData; + typedef struct ProcessList_ { Vector* processes; Vector* processes2; Hashtable* processTable; - Process* prototype; UsersTable* usersTable; - int processorCount; + int cpuCount; int totalTasks; int runningTasks; - // Must match number of PER_PROCESSOR_FIELDS constant - unsigned long long int* totalTime; - unsigned long long int* userTime; - unsigned long long int* systemTime; - unsigned long long int* systemAllTime; - unsigned long long int* idleAllTime; - unsigned long long int* idleTime; - unsigned long long int* niceTime; - unsigned long long int* ioWaitTime; - unsigned long long int* irqTime; - unsigned long long int* softIrqTime; - unsigned long long int* stealTime; - unsigned long long int* totalPeriod; - unsigned long long int* userPeriod; - unsigned long long int* systemPeriod; - unsigned long long int* systemAllPeriod; - unsigned long long int* idleAllPeriod; - unsigned long long int* idlePeriod; - unsigned long long int* nicePeriod; - unsigned long long int* ioWaitPeriod; - unsigned long long int* irqPeriod; - unsigned long long int* softIrqPeriod; - unsigned long long int* stealPeriod; + CPUData* cpus; unsigned long long int totalMem; unsigned long long int usedMem; @@ -167,4 +169,6 @@ void ProcessList_scan(ProcessList* this); ProcessField ProcessList_keyAt(ProcessList* this, int at); +void ProcessList_expandTree(ProcessList* this); + #endif |