51 lines
1.2 KiB
C
51 lines
1.2 KiB
C
#ifndef PROCESS_MON_H
|
|
#define PROCESS_MON_H
|
|
|
|
#include <stdint.h>
|
|
|
|
typedef struct st_process {
|
|
// For our own purposes
|
|
struct st_process *next; // next process in order we read them
|
|
struct st_process *parent; // parent process
|
|
struct st_process *child; // pointer to first child
|
|
struct st_process *sibling; // pointer to next sibling
|
|
int visited;
|
|
uint32_t flags;
|
|
char cpuset[128];
|
|
int tgid;
|
|
// attributes identifying thread
|
|
int lxc;
|
|
int pid;
|
|
int ppid;
|
|
char label[128];
|
|
// statistics - each outputs 1 line per process
|
|
int level;
|
|
int iskernel;
|
|
uint64_t cpuTime;
|
|
uint64_t nThreads;
|
|
uint64_t resident;
|
|
uint64_t swap;
|
|
uint64_t written;
|
|
uint64_t read;
|
|
// cumulative fields - process + children
|
|
uint64_t cCpuTime;
|
|
uint64_t cMemory;
|
|
uint64_t cSwap;
|
|
uint64_t cRead;
|
|
uint64_t cWrite;
|
|
} Process;
|
|
|
|
char *readProcesses(char *procdir);
|
|
void aggregateStats(Process *head);
|
|
|
|
int resetVisits(Process *head);
|
|
void linkFamily(Process *head);
|
|
void printFamilyTree(Process *head);
|
|
int parseStatFile(Process *proc, char *filedata);
|
|
int parseStatusFile(Process *proc, char *filedata);
|
|
int parseIOFile(Process *proc, char *filedata);
|
|
|
|
|
|
|
|
#endif
|