aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/acct.h
diff options
context:
space:
mode:
authorKaiGai Kohei <kaigai@ak.jp.nec.com>2006-06-25 08:49:24 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-06-25 13:01:25 -0400
commit0e4648141af02331f21aabcd34940c70f09a2d04 (patch)
tree3e4dea992a8e3f3194be04a0fd3e14c24a313ee7 /include/linux/acct.h
parent6bc392741d661eb84be503d1fdf14b6746615e4c (diff)
[PATCH] pacct: add pacct_struct to fix some pacct bugs.
The pacct facility need an i/o operation when an accounting record is generated. There is a possibility to wake OOM killer up. If OOM killer is activated, it kills some processes to make them release process memory regions. But acct_process() is called in the killed processes context before calling exit_mm(), so those processes cannot release own memory. In the results, any processes stop in this point and it finally cause a system stall.
Diffstat (limited to 'include/linux/acct.h')
-rw-r--r--include/linux/acct.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/include/linux/acct.h b/include/linux/acct.h
index 3d54fbcf969e..5bca9b3ef2d7 100644
--- a/include/linux/acct.h
+++ b/include/linux/acct.h
@@ -121,12 +121,16 @@ struct vfsmount;
121struct super_block; 121struct super_block;
122extern void acct_auto_close_mnt(struct vfsmount *m); 122extern void acct_auto_close_mnt(struct vfsmount *m);
123extern void acct_auto_close(struct super_block *sb); 123extern void acct_auto_close(struct super_block *sb);
124extern void acct_init_pacct(struct pacct_struct *pacct);
125extern void acct_collect();
124extern void acct_process(long exitcode); 126extern void acct_process(long exitcode);
125extern void acct_update_integrals(struct task_struct *tsk); 127extern void acct_update_integrals(struct task_struct *tsk);
126extern void acct_clear_integrals(struct task_struct *tsk); 128extern void acct_clear_integrals(struct task_struct *tsk);
127#else 129#else
128#define acct_auto_close_mnt(x) do { } while (0) 130#define acct_auto_close_mnt(x) do { } while (0)
129#define acct_auto_close(x) do { } while (0) 131#define acct_auto_close(x) do { } while (0)
132#define acct_init_pacct(x) do { } while (0)
133#define acct_collect() do { } while (0)
130#define acct_process(x) do { } while (0) 134#define acct_process(x) do { } while (0)
131#define acct_update_integrals(x) do { } while (0) 135#define acct_update_integrals(x) do { } while (0)
132#define acct_clear_integrals(task) do { } while (0) 136#define acct_clear_integrals(task) do { } while (0)