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