| Hisham Muhammad | 430c7c9 | 2014-11-27 21:02:52 -0200 | [diff] [blame] | 1 | #ifndef HEADER_LinuxProcessList |
| 2 | #define HEADER_LinuxProcessList |
| 3 | /* |
| 4 | htop - LinuxProcessList.h |
| 5 | (C) 2014 Hisham H. Muhammad |
| Daniel Lange | 079c2ab | 2020-10-05 09:51:32 +0200 | [diff] [blame] | 6 | Released under the GNU GPLv2, see the COPYING file |
| Hisham Muhammad | 430c7c9 | 2014-11-27 21:02:52 -0200 | [diff] [blame] | 7 | in the source distribution for its full text. |
| 8 | */ |
| 9 | |
| Benny Baumann | 0f52629 | 2020-09-19 13:55:23 +0200 | [diff] [blame] | 10 | #include "config.h" |
| 11 | |
| 12 | #include <stdbool.h> |
| 13 | #include <sys/types.h> |
| 14 | |
| 15 | #include "Hashtable.h" |
| Hisham Muhammad | 430c7c9 | 2014-11-27 21:02:52 -0200 | [diff] [blame] | 16 | #include "ProcessList.h" |
| Benny Baumann | 0f52629 | 2020-09-19 13:55:23 +0200 | [diff] [blame] | 17 | #include "UsersTable.h" |
| Murloc Knight | ab17ef4 | 2020-09-22 18:54:15 +0700 | [diff] [blame] | 18 | #include "ZramStats.h" |
| Ross Williams | a88d2e3 | 2019-07-07 23:27:00 +0000 | [diff] [blame] | 19 | #include "zfs/ZfsArcStats.h" |
| Hisham Muhammad | 430c7c9 | 2014-11-27 21:02:52 -0200 | [diff] [blame] | 20 | |
| Murloc Knight | ab17ef4 | 2020-09-22 18:54:15 +0700 | [diff] [blame] | 21 | |
| Hisham Muhammad | 3383d8e | 2015-01-21 23:27:31 -0200 | [diff] [blame] | 22 | typedef 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 Flanagan | dd33444 | 2019-10-31 11:39:12 -0500 | [diff] [blame] | 35 | |
| Hisham Muhammad | 3383d8e | 2015-01-21 23:27:31 -0200 | [diff] [blame] | 36 | 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; |
| Arnavion | 81b6469 | 2019-08-10 22:19:32 -0700 | [diff] [blame] | 48 | |
| 49 | double frequency; |
| Christian Göttsche | 1b225cd | 2020-09-10 19:56:33 +0200 | [diff] [blame] | 50 | |
| Christian Göttsche | b76eaf1 | 2020-12-01 13:59:19 +0100 | [diff] [blame] | 51 | #ifdef HAVE_SENSORS_SENSORS_H |
| Christian Göttsche | 1b225cd | 2020-09-10 19:56:33 +0200 | [diff] [blame] | 52 | double temperature; |
| 53 | #endif |
| Hisham Muhammad | 3383d8e | 2015-01-21 23:27:31 -0200 | [diff] [blame] | 54 | } CPUData; |
| 55 | |
| Hisham | 8af4d9f | 2016-10-01 03:09:04 -0300 | [diff] [blame] | 56 | typedef struct TtyDriver_ { |
| 57 | char* path; |
| 58 | unsigned int major; |
| 59 | unsigned int minorFrom; |
| 60 | unsigned int minorTo; |
| 61 | } TtyDriver; |
| 62 | |
| Hisham Muhammad | 3383d8e | 2015-01-21 23:27:31 -0200 | [diff] [blame] | 63 | typedef struct LinuxProcessList_ { |
| 64 | ProcessList super; |
| Daniel Flanagan | dd33444 | 2019-10-31 11:39:12 -0500 | [diff] [blame] | 65 | |
| Hisham Muhammad | 3383d8e | 2015-01-21 23:27:31 -0200 | [diff] [blame] | 66 | CPUData* cpus; |
| Hisham | 8af4d9f | 2016-10-01 03:09:04 -0300 | [diff] [blame] | 67 | TtyDriver* ttyDrivers; |
| Alexander Schlarb | 078c2dd | 2018-10-16 20:08:23 +0200 | [diff] [blame] | 68 | bool haveSmapsRollup; |
| Daniel Flanagan | dd33444 | 2019-10-31 11:39:12 -0500 | [diff] [blame] | 69 | |
| André Carvalho | b7b66b7 | 2017-12-04 00:15:29 -0200 | [diff] [blame] | 70 | #ifdef HAVE_DELAYACCT |
| Benny Baumann | 61e14d4 | 2020-10-31 23:28:02 +0100 | [diff] [blame] | 71 | struct nl_sock* netlink_socket; |
| André Carvalho | b7b66b7 | 2017-12-04 00:15:29 -0200 | [diff] [blame] | 72 | int netlink_family; |
| 73 | #endif |
| Ross Williams | 070fe90 | 2019-07-07 02:37:02 +0000 | [diff] [blame] | 74 | |
| Ross Williams | a88d2e3 | 2019-07-07 23:27:00 +0000 | [diff] [blame] | 75 | ZfsArcStats zfs; |
| Murloc Knight | ab17ef4 | 2020-09-22 18:54:15 +0700 | [diff] [blame] | 76 | ZramStats zram; |
| Hisham Muhammad | 3383d8e | 2015-01-21 23:27:31 -0200 | [diff] [blame] | 77 | } LinuxProcessList; |
| 78 | |
| Hisham Muhammad | 430c7c9 | 2014-11-27 21:02:52 -0200 | [diff] [blame] | 79 | #ifndef PROCDIR |
| 80 | #define PROCDIR "/proc" |
| 81 | #endif |
| 82 | |
| Arnavion | 81b6469 | 2019-08-10 22:19:32 -0700 | [diff] [blame] | 83 | #ifndef PROCCPUINFOFILE |
| 84 | #define PROCCPUINFOFILE PROCDIR "/cpuinfo" |
| 85 | #endif |
| 86 | |
| Hisham Muhammad | 430c7c9 | 2014-11-27 21:02:52 -0200 | [diff] [blame] | 87 | #ifndef PROCSTATFILE |
| 88 | #define PROCSTATFILE PROCDIR "/stat" |
| 89 | #endif |
| 90 | |
| 91 | #ifndef PROCMEMINFOFILE |
| 92 | #define PROCMEMINFOFILE PROCDIR "/meminfo" |
| 93 | #endif |
| 94 | |
| Ross Williams | 070fe90 | 2019-07-07 02:37:02 +0000 | [diff] [blame] | 95 | #ifndef PROCARCSTATSFILE |
| 96 | #define PROCARCSTATSFILE PROCDIR "/spl/kstat/zfs/arcstats" |
| 97 | #endif |
| 98 | |
| Hisham | 8af4d9f | 2016-10-01 03:09:04 -0300 | [diff] [blame] | 99 | #ifndef PROCTTYDRIVERSFILE |
| 100 | #define PROCTTYDRIVERSFILE PROCDIR "/tty/drivers" |
| 101 | #endif |
| 102 | |
| Hisham Muhammad | 802e216 | 2015-12-14 13:27:11 -0200 | [diff] [blame] | 103 | #ifndef PROC_LINE_LENGTH |
| Shawn Landden | bd1d719 | 2018-08-18 21:29:03 -0700 | [diff] [blame] | 104 | #define PROC_LINE_LENGTH 4096 |
| Hisham Muhammad | 802e216 | 2015-12-14 13:27:11 -0200 | [diff] [blame] | 105 | #endif |
| 106 | |
| Nathan Scott | 4597332 | 2020-09-09 19:38:15 +1000 | [diff] [blame] | 107 | ProcessList* ProcessList_new(UsersTable* usersTable, Hashtable* pidMatchList, uid_t userId); |
| Hisham Muhammad | 430c7c9 | 2014-11-27 21:02:52 -0200 | [diff] [blame] | 108 | |
| Zev Weiss | 7b7822b | 2020-09-02 02:38:44 -0500 | [diff] [blame] | 109 | void ProcessList_delete(ProcessList* pl); |
| Hisham Muhammad | 430c7c9 | 2014-11-27 21:02:52 -0200 | [diff] [blame] | 110 | |
| Christian Göttsche | 96e2a42 | 2020-10-13 16:03:37 +0200 | [diff] [blame] | 111 | void ProcessList_goThroughEntries(ProcessList* super, bool pauseProcessUpdate); |
| Hisham Muhammad | 430c7c9 | 2014-11-27 21:02:52 -0200 | [diff] [blame] | 112 | |
| 113 | #endif |