mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
[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.
This commit is contained in:
parent
6bc392741d
commit
0e4648141a
5 changed files with 51 additions and 16 deletions
|
@ -358,6 +358,10 @@ struct sighand_struct {
|
|||
spinlock_t siglock;
|
||||
};
|
||||
|
||||
struct pacct_struct {
|
||||
unsigned long ac_mem;
|
||||
};
|
||||
|
||||
/*
|
||||
* NOTE! "signal_struct" does not have it's own
|
||||
* locking, because a shared signal_struct always
|
||||
|
@ -449,6 +453,9 @@ struct signal_struct {
|
|||
struct key *session_keyring; /* keyring inherited over fork */
|
||||
struct key *process_keyring; /* keyring private to this process */
|
||||
#endif
|
||||
#ifdef CONFIG_BSD_PROCESS_ACCT
|
||||
struct pacct_struct pacct; /* per-process accounting information */
|
||||
#endif
|
||||
};
|
||||
|
||||
/* Context switch must be unlocked if interrupts are to be enabled */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue