blob: 09b84afae0c44513592984772af8948d60247871 [file] [log] [blame]
Hisham Muhammad430c7c92014-11-27 21:02:52 -02001#ifndef HEADER_LinuxProcessList
2#define HEADER_LinuxProcessList
3/*
4htop - LinuxProcessList.h
5(C) 2014 Hisham H. Muhammad
Daniel Lange079c2ab2020-10-05 09:51:32 +02006Released under the GNU GPLv2, see the COPYING file
Hisham Muhammad430c7c92014-11-27 21:02:52 -02007in the source distribution for its full text.
8*/
9
Benny Baumann0f526292020-09-19 13:55:23 +020010#include "config.h"
11
12#include <stdbool.h>
13#include <sys/types.h>
14
15#include "Hashtable.h"
Hisham Muhammad430c7c92014-11-27 21:02:52 -020016#include "ProcessList.h"
Benny Baumann0f526292020-09-19 13:55:23 +020017#include "UsersTable.h"
Murloc Knightab17ef42020-09-22 18:54:15 +070018#include "ZramStats.h"
Ross Williamsa88d2e32019-07-07 23:27:00 +000019#include "zfs/ZfsArcStats.h"
Hisham Muhammad430c7c92014-11-27 21:02:52 -020020
Murloc Knightab17ef42020-09-22 18:54:15 +070021
Hisham Muhammad3383d8e2015-01-21 23:27:31 -020022typedef struct CPUData_ {
23 unsigned long long int totalTime;
24 unsigned long long int userTime;
25 unsigned long long int systemTime;
26 unsigned long long int systemAllTime;
27 unsigned long long int idleAllTime;
28 unsigned long long int idleTime;
29 unsigned long long int niceTime;
30 unsigned long long int ioWaitTime;
31 unsigned long long int irqTime;
32 unsigned long long int softIrqTime;
33 unsigned long long int stealTime;
34 unsigned long long int guestTime;
Daniel Flanagandd334442019-10-31 11:39:12 -050035
Hisham Muhammad3383d8e2015-01-21 23:27:31 -020036 unsigned long long int totalPeriod;
37 unsigned long long int userPeriod;
38 unsigned long long int systemPeriod;
39 unsigned long long int systemAllPeriod;
40 unsigned long long int idleAllPeriod;
41 unsigned long long int idlePeriod;
42 unsigned long long int nicePeriod;
43 unsigned long long int ioWaitPeriod;
44 unsigned long long int irqPeriod;
45 unsigned long long int softIrqPeriod;
46 unsigned long long int stealPeriod;
47 unsigned long long int guestPeriod;
Arnavion81b64692019-08-10 22:19:32 -070048
49 double frequency;
Christian Göttsche1b225cd2020-09-10 19:56:33 +020050
Christian Göttscheb76eaf12020-12-01 13:59:19 +010051 #ifdef HAVE_SENSORS_SENSORS_H
Christian Göttsche1b225cd2020-09-10 19:56:33 +020052 double temperature;
53 #endif
Hisham Muhammad3383d8e2015-01-21 23:27:31 -020054} CPUData;
55
Hisham8af4d9f2016-10-01 03:09:04 -030056typedef struct TtyDriver_ {
57 char* path;
58 unsigned int major;
59 unsigned int minorFrom;
60 unsigned int minorTo;
61} TtyDriver;
62
Hisham Muhammad3383d8e2015-01-21 23:27:31 -020063typedef struct LinuxProcessList_ {
64 ProcessList super;
Daniel Flanagandd334442019-10-31 11:39:12 -050065
Hisham Muhammad3383d8e2015-01-21 23:27:31 -020066 CPUData* cpus;
Hisham8af4d9f2016-10-01 03:09:04 -030067 TtyDriver* ttyDrivers;
Alexander Schlarb078c2dd2018-10-16 20:08:23 +020068 bool haveSmapsRollup;
Daniel Flanagandd334442019-10-31 11:39:12 -050069
André Carvalhob7b66b72017-12-04 00:15:29 -020070 #ifdef HAVE_DELAYACCT
Benny Baumann61e14d42020-10-31 23:28:02 +010071 struct nl_sock* netlink_socket;
André Carvalhob7b66b72017-12-04 00:15:29 -020072 int netlink_family;
73 #endif
Ross Williams070fe902019-07-07 02:37:02 +000074
Ross Williamsa88d2e32019-07-07 23:27:00 +000075 ZfsArcStats zfs;
Murloc Knightab17ef42020-09-22 18:54:15 +070076 ZramStats zram;
Hisham Muhammad3383d8e2015-01-21 23:27:31 -020077} LinuxProcessList;
78
Hisham Muhammad430c7c92014-11-27 21:02:52 -020079#ifndef PROCDIR
80#define PROCDIR "/proc"
81#endif
82
Arnavion81b64692019-08-10 22:19:32 -070083#ifndef PROCCPUINFOFILE
84#define PROCCPUINFOFILE PROCDIR "/cpuinfo"
85#endif
86
Hisham Muhammad430c7c92014-11-27 21:02:52 -020087#ifndef PROCSTATFILE
88#define PROCSTATFILE PROCDIR "/stat"
89#endif
90
91#ifndef PROCMEMINFOFILE
92#define PROCMEMINFOFILE PROCDIR "/meminfo"
93#endif
94
Ross Williams070fe902019-07-07 02:37:02 +000095#ifndef PROCARCSTATSFILE
96#define PROCARCSTATSFILE PROCDIR "/spl/kstat/zfs/arcstats"
97#endif
98
Hisham8af4d9f2016-10-01 03:09:04 -030099#ifndef PROCTTYDRIVERSFILE
100#define PROCTTYDRIVERSFILE PROCDIR "/tty/drivers"
101#endif
102
Hisham Muhammad802e2162015-12-14 13:27:11 -0200103#ifndef PROC_LINE_LENGTH
Shawn Landdenbd1d7192018-08-18 21:29:03 -0700104#define PROC_LINE_LENGTH 4096
Hisham Muhammad802e2162015-12-14 13:27:11 -0200105#endif
106
Nathan Scott45973322020-09-09 19:38:15 +1000107ProcessList* ProcessList_new(UsersTable* usersTable, Hashtable* pidMatchList, uid_t userId);
Hisham Muhammad430c7c92014-11-27 21:02:52 -0200108
Zev Weiss7b7822b2020-09-02 02:38:44 -0500109void ProcessList_delete(ProcessList* pl);
Hisham Muhammad430c7c92014-11-27 21:02:52 -0200110
Christian Göttsche96e2a422020-10-13 16:03:37 +0200111void ProcessList_goThroughEntries(ProcessList* super, bool pauseProcessUpdate);
Hisham Muhammad430c7c92014-11-27 21:02:52 -0200112
113#endif