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 /* # of fsync syscalls */ 22 u64 syscfs; 23 #endif /* CONFIG_TASK_XACCT */ 24 25 #ifdef CONFIG_TASK_IO_ACCOUNTING 26 /* 27 * The number of bytes which this task has caused to be read from 28 * storage. 29 */ 30 u64 read_bytes; 31 32 /* 33 * The number of bytes which this task has caused, or shall cause to be 34 * written to disk. 35 */ 36 u64 write_bytes; 37 38 /* 39 * A task can cause "negative" IO too. If this task truncates some 40 * dirty pagecache, some IO which another task has been accounted for 41 * (in its write_bytes) will not be happening. We _could_ just 42 * subtract that from the truncating task's write_bytes, but there is 43 * information loss in doing that. 44 */ 45 u64 cancelled_write_bytes; 46 #endif /* CONFIG_TASK_IO_ACCOUNTING */ 47 }; 48