diff options
| author | Ingo Molnar <mingo@elte.hu> | 2002-09-12 21:36:11 -0700 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2002-09-12 21:36:11 -0700 |
| commit | 2c66151cbc2cc68465489fdf64d16bd1c6ca4d0e (patch) | |
| tree | a726906587dfd198db17c02be4694e617e7a9401 /fs/exec.c | |
| parent | f2e3a5d66f21eacafe15a846f2010200ed0cb8b6 (diff) | |
[PATCH] sys_exit() threading improvements, BK-curr
This implements the 'keep the initial thread around until every thread
in the group exits' concept in a different, less intrusive way, along
your suggestions. There is no exit_done completion handling anymore,
freeing of the task is still done by wait4(). This has the following
side-effect: detached threads/processes can only be started within a
thread group, not in a standalone way.
(This also fixes the bugs introduced by the ->exit_done code, which made
it possible for a zombie task to be reactivated.)
I've introduced the p->group_leader pointer, which can/will be used for
other purposes in the future as well - since from now on the thread
group leader is always existent. Right now it's used to notify the
parent of the thread group leader from the last non-leader thread that
exits [if the thread group leader is a zombie already].
Diffstat (limited to 'fs/exec.c')
| -rw-r--r-- | fs/exec.c | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/fs/exec.c b/fs/exec.c index 50616244da2f..317b1c395ef2 100644 --- a/fs/exec.c +++ b/fs/exec.c @@ -515,7 +515,6 @@ static inline int make_private_signals(void) atomic_set(&newsig->count, 1); newsig->group_exit = 0; newsig->group_exit_code = 0; - init_completion(&newsig->group_exit_done); memcpy(newsig->action, current->sig->action, sizeof(newsig->action)); init_sigpending(&newsig->shared_pending); |
