Skip to content

Commit b73c554

Browse files
committed
Adjust task stat members to newest kernels
1 parent fd003bf commit b73c554

File tree

2 files changed

+101
-94
lines changed

2 files changed

+101
-94
lines changed

include/pfs/types.hpp

Lines changed: 57 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -48,60 +48,67 @@ enum class task_state
4848
idle,
4949
};
5050

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.
5158
struct task_stat
5259
{
53-
pid_t pid = INVALID_PID;
60+
pid_t pid = INVALID_PID;
5461
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
94101
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
105112
};
106113

107114
struct io_stats {

src/task.cpp

Lines changed: 44 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -213,53 +213,53 @@ task_stat task::get_stat() const
213213
"%c " // state
214214
"%d " // ppid
215215
"%d " // pgrp
216-
"%d " // session
217-
"%d " // tty_nr
216+
"%lld " // session
217+
"%lld " // tty_nr
218218
"%d " // tgpid
219-
"%u " // flags
220-
"%lu " // minflt
221-
"%lu " // cminflt
222-
"%lu " // majflt
223-
"%lu " // cmajflt
224-
"%lu " // utime
225-
"%lu " // stime
226-
"%ld " // cutime
227-
"%ld " // cstime
228-
"%ld " // priority
229-
"%ld " // nice
230-
"%ld " // num_threads
231-
"%ld " // itrealvalue
219+
"%llu " // flags
220+
"%llu " // minflt
221+
"%llu " // cminflt
222+
"%llu " // majflt
223+
"%llu " // cmajflt
224+
"%llu " // utime
225+
"%llu " // stime
226+
"%lld " // cutime
227+
"%lld " // cstime
228+
"%lld " // priority
229+
"%lld " // nice
230+
"%lld " // num_threads
231+
"%llu " // itrealvalue
232232
"%llu " // starttime
233-
"%lu " // vsize
234-
"%ld " // rss
235-
"%lu " // rsslim
236-
"%lu " // startcode
237-
"%lu " // endcode
238-
"%lu " // startstack
239-
"%lu " // kstkesp
240-
"%lu " // kstkeip
241-
"%lu " // signal
242-
"%lu " // blocked
243-
"%lu " // sigignore
244-
"%lu " // sigcatch
245-
"%lu " // wchan
246-
"%lu " // nswap
247-
"%lu " // cnswap
248-
"%d " // exit_signal
249-
"%d " // processor
250-
"%u " // rt_priority
251-
"%u " // policy
233+
"%llu " // vsize
234+
"%llu " // rss
235+
"%llu " // rsslim
236+
"%llu " // startcode
237+
"%llu " // endcode
238+
"%llu " // startstack
239+
"%llu " // kstkesp
240+
"%llu " // kstkeip
241+
"%llu " // signal
242+
"%llu " // blocked
243+
"%llu " // sigignore
244+
"%llu " // sigcatch
245+
"%llu " // wchan
246+
"%llu " // nswap
247+
"%llu " // cnswap
248+
"%lld " // exit_signal
249+
"%lld " // processor
250+
"%llu " // rt_priority
251+
"%llu " // policy
252252
"%llu " // delayacct_blkio_ticks
253-
"%lu " // guest_time
254-
"%ld " // cguest_time
255-
"%lu " // start_data
256-
"%lu " // end_data
257-
"%lu " // start_brk
258-
"%lu " // arg_start
259-
"%lu " // arg_end
260-
"%lu " // env_start
261-
"%lu " // env_end
262-
"%lu ", // exit_code
253+
"%llu " // guest_time
254+
"%lld " // cguest_time
255+
"%llu " // start_data
256+
"%llu " // end_data
257+
"%llu " // start_brk
258+
"%llu " // arg_start
259+
"%llu " // arg_end
260+
"%llu " // env_start
261+
"%llu " // env_end
262+
"%llu ",// exit_code
263263
&state, &st.ppid, &st.pgrp, &st.session, &st.tty_nr, &st.tgpid,
264264
&st.flags, &st.minflt, &st.cminflt, &st.majflt, &st.cmajflt, &st.utime,
265265
&st.stime, &st.cutime, &st.cstime, &st.priority, &st.nice,

0 commit comments

Comments
 (0)