diff options
author | KaiGai Kohei <kaigai@ak.jp.nec.com> | 2006-06-25 08:49:24 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-06-25 13:01:25 -0400 |
commit | 0e4648141af02331f21aabcd34940c70f09a2d04 (patch) | |
tree | 3e4dea992a8e3f3194be04a0fd3e14c24a313ee7 /include/linux/sched.h | |
parent | 6bc392741d661eb84be503d1fdf14b6746615e4c (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.h | 7 |
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 | ||
361 | struct 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 */ |