summaryrefslogtreecommitdiff
path: root/include/linux/task_io_accounting.h
diff options
context:
space:
mode:
authorAndrea Righi <righi.andrea@gmail.com>2008-07-27 19:29:15 +0400
committerLinus Torvalds <torvalds@linux-foundation.org>2008-07-27 20:58:20 +0400
commit5995477ab7f3522c497c9c4a1c55373e9d655574 (patch)
treea147fb61642a7ac5441855964eb97a2ff1e37202 /include/linux/task_io_accounting.h
parent605ccb73f6a1c891a16268b3a2923208fc637958 (diff)
downloadlinux-5995477ab7f3522c497c9c4a1c55373e9d655574.tar.xz
task IO accounting: improve code readability
Put all i/o statistics in struct proc_io_accounting and use inline functions to initialize and increment statistics, removing a lot of single variable assignments. This also reduces the kernel size as following (with CONFIG_TASK_XACCT=y and CONFIG_TASK_IO_ACCOUNTING=y). text data bss dec hex filename 11651 0 0 11651 2d83 kernel/exit.o.before 11619 0 0 11619 2d63 kernel/exit.o.after 10886 132 136 11154 2b92 kernel/fork.o.before 10758 132 136 11026 2b12 kernel/fork.o.after 3082029 807968 4818600 8708597 84e1f5 vmlinux.o.before 3081869 807968 4818600 8708437 84e155 vmlinux.o.after Signed-off-by: Andrea Righi <righi.andrea@gmail.com> Acked-by: Oleg Nesterov <oleg@tv-sign.ru> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux/task_io_accounting.h')
-rw-r--r--include/linux/task_io_accounting.h27
1 files changed, 24 insertions, 3 deletions
diff --git a/include/linux/task_io_accounting.h b/include/linux/task_io_accounting.h
index 44d00e9cceea..165390f8b936 100644
--- a/include/linux/task_io_accounting.h
+++ b/include/linux/task_io_accounting.h
@@ -1,5 +1,5 @@
/*
- * task_io_accounting: a structure which is used for recording a single task's
+ * proc_io_accounting: a structure which is used for recording a single task's
* IO statistics.
*
* Don't include this header file directly - it is designed to be dragged in via
@@ -8,6 +8,22 @@
* Blame akpm@osdl.org for all this.
*/
+#ifdef CONFIG_TASK_XACCT
+struct task_chr_io_accounting {
+ /* bytes read */
+ u64 rchar;
+ /* bytes written */
+ u64 wchar;
+ /* # of read syscalls */
+ u64 syscr;
+ /* # of write syscalls */
+ u64 syscw;
+};
+#else /* CONFIG_TASK_XACCT */
+struct task_chr_io_accounting {
+};
+#endif /* CONFIG_TASK_XACCT */
+
#ifdef CONFIG_TASK_IO_ACCOUNTING
struct task_io_accounting {
/*
@@ -31,7 +47,12 @@ struct task_io_accounting {
*/
u64 cancelled_write_bytes;
};
-#else
+#else /* CONFIG_TASK_IO_ACCOUNTING */
struct task_io_accounting {
};
-#endif
+#endif /* CONFIG_TASK_IO_ACCOUNTING */
+
+struct proc_io_accounting {
+ struct task_chr_io_accounting chr;
+ struct task_io_accounting blk;
+};