Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 /*
0003  * task_io_accounting: a structure which is used for recording a single task's
0004  * IO statistics.
0005  *
0006  * Don't include this header file directly - it is designed to be dragged in via
0007  * sched.h.
0008  *
0009  * Blame Andrew Morton for all this.
0010  */
0011 
0012 struct task_io_accounting {
0013 #ifdef CONFIG_TASK_XACCT
0014     /* bytes read */
0015     u64 rchar;
0016     /*  bytes written */
0017     u64 wchar;
0018     /* # of read syscalls */
0019     u64 syscr;
0020     /* # of write syscalls */
0021     u64 syscw;
0022 #endif /* CONFIG_TASK_XACCT */
0023 
0024 #ifdef CONFIG_TASK_IO_ACCOUNTING
0025     /*
0026      * The number of bytes which this task has caused to be read from
0027      * storage.
0028      */
0029     u64 read_bytes;
0030 
0031     /*
0032      * The number of bytes which this task has caused, or shall cause to be
0033      * written to disk.
0034      */
0035     u64 write_bytes;
0036 
0037     /*
0038      * A task can cause "negative" IO too.  If this task truncates some
0039      * dirty pagecache, some IO which another task has been accounted for
0040      * (in its write_bytes) will not be happening.  We _could_ just
0041      * subtract that from the truncating task's write_bytes, but there is
0042      * information loss in doing that.
0043      */
0044     u64 cancelled_write_bytes;
0045 #endif /* CONFIG_TASK_IO_ACCOUNTING */
0046 };