You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
118 lines
2.8 KiB
118 lines
2.8 KiB
#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
|
|
|