aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/sched.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/sched.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/sched.h')
-rw-r--r--include/linux/sched.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 38b4791e6a5..abada7c1d5e 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -358,6 +358,10 @@ struct sighand_struct {
358 spinlock_t siglock; 358 spinlock_t siglock;
359}; 359};
360 360
361struct pacct_struct {
362 unsigned long ac_mem;
363};
364
361/* 365/*
362 * NOTE! "signal_struct" does not have it's own 366 * NOTE! "signal_struct" does not have it's own
363 * locking, because a shared signal_struct always 367 * locking, because a shared signal_struct always
@@ -449,6 +453,9 @@ struct signal_struct {
449 struct key *session_keyring; /* keyring inherited over fork */ 453 struct key *session_keyring; /* keyring inherited over fork */
450 struct key *process_keyring; /* keyring private to this process */ 454 struct key *process_keyring; /* keyring private to this process */
451#endif 455#endif
456#ifdef CONFIG_BSD_PROCESS_ACCT
457 struct pacct_struct pacct; /* per-process accounting information */
458#endif
452}; 459};
453 460
454/* Context switch must be unlocked if interrupts are to be enabled */ 461/* Context switch must be unlocked if interrupts are to be enabled */