@@ -48,60 +48,67 @@ enum class task_state
48
48
idle,
49
49
};
50
50
51
+ // Note: Stat member types changed throughout history.
52
+ // The library currently uses types that match the latest kernel version,
53
+ // and can contain all past ones. For example, session is a 'long long'
54
+ // in kernel 6.9, and past values, such as the 'int' type used by 2.6.32,
55
+ // can easily be supported without recompilation.
56
+ // Since most types are 64-bit integers, these are both backward and forward
57
+ // compatible.
51
58
struct task_stat
52
59
{
53
- pid_t pid = INVALID_PID;
60
+ pid_t pid = INVALID_PID;
54
61
std::string comm;
55
- task_state state = task_state::idle;
56
- pid_t ppid = INVALID_PID;
57
- pid_t pgrp = INVALID_PID;
58
- int session = 0 ;
59
- int tty_nr = 0 ;
60
- pid_t tgpid = INVALID_PID;
61
- unsigned flags = 0 ;
62
- unsigned long minflt = 0 ;
63
- unsigned long cminflt = 0 ;
64
- unsigned long majflt = 0 ;
65
- unsigned long cmajflt = 0 ;
66
- unsigned long utime = 0 ;
67
- unsigned long stime = 0 ;
68
- long cutime = 0 ;
69
- long cstime = 0 ;
70
- long priority = 0 ;
71
- long nice = 0 ;
72
- long num_threads = 0 ;
73
- long itrealvalue = 0 ;
74
- unsigned long long starttime = 0 ;
75
- unsigned long vsize = 0 ; // In bytes
76
- long rss = 0 ; // In pages
77
- unsigned long rsslim = 0 ;
78
- unsigned long startcode = 0 ; // Affected by ptrace access mode
79
- unsigned long endcode = 0 ; // Affected by ptrace access mode
80
- unsigned long startstack = 0 ; // Affected by ptrace access mode
81
- unsigned long kstkesp = 0 ; // Affected by ptrace access mode
82
- unsigned long kstkeip = 0 ; // Affected by ptrace access mode
83
- unsigned long signal = 0 ;
84
- unsigned long blocked = 0 ;
85
- unsigned long sigignore = 0 ;
86
- unsigned long sigcatch = 0 ;
87
- unsigned long wchan = 0 ; // Affected by ptrace access mode
88
- unsigned long nswap = 0 ;
89
- unsigned long cnswap = 0 ;
90
- int exit_signal = 0 ; // Since 2.1.22
91
- int processor = 0 ; // Since 2.2.8
92
- unsigned rt_priority = 0 ; // Since 2.5.19
93
- unsigned policy = 0 ; // Since 2.5.19
62
+ task_state state = task_state::idle;
63
+ pid_t ppid = INVALID_PID;
64
+ pid_t pgrp = INVALID_PID;
65
+ long long session = 0 ;
66
+ long long tty_nr = 0 ;
67
+ pid_t tgpid = INVALID_PID;
68
+ unsigned long long flags = 0 ;
69
+ unsigned long long minflt = 0 ;
70
+ unsigned long long cminflt = 0 ;
71
+ unsigned long long majflt = 0 ;
72
+ unsigned long long cmajflt = 0 ;
73
+ unsigned long long utime = 0 ;
74
+ unsigned long long stime = 0 ;
75
+ long long cutime = 0 ;
76
+ long long cstime = 0 ;
77
+ long long priority = 0 ;
78
+ long long nice = 0 ;
79
+ long long num_threads = 0 ;
80
+ unsigned long long itrealvalue = 0 ;
81
+ unsigned long long starttime = 0 ;
82
+ unsigned long long vsize = 0 ; // In bytes
83
+ unsigned long long rss = 0 ; // In pages
84
+ unsigned long long rsslim = 0 ;
85
+ unsigned long long startcode = 0 ; // Affected by ptrace access mode
86
+ unsigned long long endcode = 0 ; // Affected by ptrace access mode
87
+ unsigned long long startstack = 0 ; // Affected by ptrace access mode
88
+ unsigned long long kstkesp = 0 ; // Affected by ptrace access mode
89
+ unsigned long long kstkeip = 0 ; // Affected by ptrace access mode
90
+ unsigned long long signal = 0 ;
91
+ unsigned long long blocked = 0 ;
92
+ unsigned long long sigignore = 0 ;
93
+ unsigned long long sigcatch = 0 ;
94
+ unsigned long long wchan = 0 ; // Affected by ptrace access mode
95
+ unsigned long long nswap = 0 ;
96
+ unsigned long long cnswap = 0 ;
97
+ long long exit_signal = 0 ; // Since 2.1.22
98
+ long long processor = 0 ; // Since 2.2.8
99
+ unsigned long long rt_priority = 0 ; // Since 2.5.19
100
+ unsigned long long policy = 0 ; // Since 2.5.19
94
101
unsigned long long delayacct_blkio_ticks = 0 ; // Since 2.6.18
95
- unsigned long guest_time = 0 ; // Since 2.6.24
96
- long cguest_time = 0 ; // Since 2.6.24
97
- unsigned long start_data = 0 ; // Since 3.3, Affected by ptrace access mode
98
- unsigned long end_data = 0 ; // Since 3.3, Affected by ptrace access mode
99
- unsigned long start_brk = 0 ; // Since 3.3, Affected by ptrace access mode
100
- unsigned long arg_start = 0 ; // Since 3.5, Affected by ptrace access mode
101
- unsigned long arg_end = 0 ; // Since 3.5, Affected by ptrace access mode
102
- unsigned long env_start = 0 ; // Since 3.5, Affected by ptrace access mode
103
- unsigned long env_end = 0 ; // Since 3.5, Affected by ptrace access mode
104
- unsigned long exit_code = 0 ; // Since 3.5, Affected by ptrace access mode
102
+ unsigned long long guest_time = 0 ; // Since 2.6.24
103
+ long long cguest_time = 0 ; // Since 2.6.24
104
+ unsigned long long start_data = 0 ; // Since 3.3, Affected by ptrace access mode
105
+ unsigned long long end_data = 0 ; // Since 3.3, Affected by ptrace access mode
106
+ unsigned long long start_brk = 0 ; // Since 3.3, Affected by ptrace access mode
107
+ unsigned long long arg_start = 0 ; // Since 3.5, Affected by ptrace access mode
108
+ unsigned long long arg_end = 0 ; // Since 3.5, Affected by ptrace access mode
109
+ unsigned long long env_start = 0 ; // Since 3.5, Affected by ptrace access mode
110
+ unsigned long long env_end = 0 ; // Since 3.5, Affected by ptrace access mode
111
+ unsigned long long exit_code = 0 ; // Since 3.5, Affected by ptrace access mode
105
112
};
106
113
107
114
struct io_stats {
0 commit comments