htop/linux/LinuxMachine.h

119 lines
2.8 KiB
C

#ifndef HEADER_LinuxMachine
#define HEADER_LinuxMachine
/*
htop - LinuxMachine.h
(C) 2014 Hisham H. Muhammad
Released under the GNU GPLv2+, see the COPYING file
in the source distribution for its full text.
*/
#include <stdbool.h>
#include "Machine.h"
#include "linux/ZramStats.h"
#include "linux/ZswapStats.h"
#include "zfs/ZfsArcStats.h"
#define HTOP_HUGEPAGE_BASE_SHIFT 16
#define HTOP_HUGEPAGE_COUNT 24
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;
double frequency;
#ifdef HAVE_SENSORS_SENSORS_H
double temperature;
#endif
bool online;
} CPUData;
typedef struct GPUEngineData_ {
unsigned long long int prevTime, curTime; /* absolute GPU time in nano seconds */
char* key; /* engine name */
struct GPUEngineData_* next;
} GPUEngineData;
typedef struct LinuxMachine_ {
Machine super;
long jiffies;
int pageSize;
int pageSizeKB;
/* see Linux kernel source for further detail, fs/proc/stat.c */
unsigned int runningTasks; /* procs_running from /proc/stat */
long long boottime; /* btime field from /proc/stat */
double period;
CPUData* cpuData;
memory_t totalHugePageMem;
memory_t usedHugePageMem[HTOP_HUGEPAGE_COUNT];
memory_t availableMem;
unsigned long long int prevGpuTime, curGpuTime; /* total absolute GPU time in nano seconds */
GPUEngineData* gpuEngineData;
ZfsArcStats zfs;
ZramStats zram;
ZswapStats zswap;
} LinuxMachine;
#ifndef PROCDIR
#define PROCDIR "/proc"
#endif
#ifndef PROCCPUINFOFILE
#define PROCCPUINFOFILE PROCDIR "/cpuinfo"
#endif
#ifndef PROCSTATFILE
#define PROCSTATFILE PROCDIR "/stat"
#endif
#ifndef PROCMEMINFOFILE
#define PROCMEMINFOFILE PROCDIR "/meminfo"
#endif
#ifndef PROCARCSTATSFILE
#define PROCARCSTATSFILE PROCDIR "/spl/kstat/zfs/arcstats"
#endif
#ifndef PROCTTYDRIVERSFILE
#define PROCTTYDRIVERSFILE PROCDIR "/tty/drivers"
#endif
#ifndef PROC_LINE_LENGTH
#define PROC_LINE_LENGTH 4096
#endif
#endif