1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | /* |
3 | * task_io_accounting: a structure which is used for recording a single task's |
4 | * IO statistics. |
5 | * |
6 | * Don't include this header file directly - it is designed to be dragged in via |
7 | * sched.h. |
8 | * |
9 | * Blame Andrew Morton for all this. |
10 | */ |
11 | |
12 | struct task_io_accounting { |
13 | #ifdef CONFIG_TASK_XACCT |
14 | /* bytes read */ |
15 | u64 rchar; |
16 | /* bytes written */ |
17 | u64 wchar; |
18 | /* # of read syscalls */ |
19 | u64 syscr; |
20 | /* # of write syscalls */ |
21 | u64 syscw; |
22 | #endif /* CONFIG_TASK_XACCT */ |
23 | |
24 | #ifdef CONFIG_TASK_IO_ACCOUNTING |
25 | /* |
26 | * The number of bytes which this task has caused to be read from |
27 | * storage. |
28 | */ |
29 | u64 read_bytes; |
30 | |
31 | /* |
32 | * The number of bytes which this task has caused, or shall cause to be |
33 | * written to disk. |
34 | */ |
35 | u64 write_bytes; |
36 | |
37 | /* |
38 | * A task can cause "negative" IO too. If this task truncates some |
39 | * dirty pagecache, some IO which another task has been accounted for |
40 | * (in its write_bytes) will not be happening. We _could_ just |
41 | * subtract that from the truncating task's write_bytes, but there is |
42 | * information loss in doing that. |
43 | */ |
44 | u64 cancelled_write_bytes; |
45 | #endif /* CONFIG_TASK_IO_ACCOUNTING */ |
46 | }; |
47 | |