tsacct: add 64-bit btime field
As there is only a 32-bit ac_btime field in taskstat and we should handle dates after the overflow, add a new field with the same information but 64-bit width that can hold a full time64_t. Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
parent
2d602bf283
commit
352c912b0a
|
@ -34,7 +34,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#define TASKSTATS_VERSION 9
|
#define TASKSTATS_VERSION 10
|
||||||
#define TS_COMM_LEN 32 /* should be >= TASK_COMM_LEN
|
#define TS_COMM_LEN 32 /* should be >= TASK_COMM_LEN
|
||||||
* in linux/sched.h */
|
* in linux/sched.h */
|
||||||
|
|
||||||
|
@ -169,6 +169,9 @@ struct taskstats {
|
||||||
/* Delay waiting for thrashing page */
|
/* Delay waiting for thrashing page */
|
||||||
__u64 thrashing_count;
|
__u64 thrashing_count;
|
||||||
__u64 thrashing_delay_total;
|
__u64 thrashing_delay_total;
|
||||||
|
|
||||||
|
/* v10: 64-bit btime to avoid overflow */
|
||||||
|
__u64 ac_btime64; /* 64-bit begin time */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -36,6 +36,7 @@ void bacct_add_tsk(struct user_namespace *user_ns,
|
||||||
/* Convert to seconds for btime (note y2106 limit) */
|
/* Convert to seconds for btime (note y2106 limit) */
|
||||||
btime = ktime_get_real_seconds() - div_u64(delta, USEC_PER_SEC);
|
btime = ktime_get_real_seconds() - div_u64(delta, USEC_PER_SEC);
|
||||||
stats->ac_btime = clamp_t(time64_t, btime, 0, U32_MAX);
|
stats->ac_btime = clamp_t(time64_t, btime, 0, U32_MAX);
|
||||||
|
stats->ac_btime64 = btime;
|
||||||
|
|
||||||
if (thread_group_leader(tsk)) {
|
if (thread_group_leader(tsk)) {
|
||||||
stats->ac_exitcode = tsk->exit_code;
|
stats->ac_exitcode = tsk->exit_code;
|
||||||
|
|
Loading…
Reference in New Issue