Add a couple of small comments, it is not easy to see what this code does.
Signed-off-by: Oleg Nesterov <[email protected]>
--- 25/fs/exec.c~7_DOC_EXIT_EXEC 2008-02-17 23:40:07.000000000 +0300
+++ 25/fs/exec.c 2008-03-03 06:54:31.000000000 +0300
@@ -802,7 +802,7 @@ static int de_thread(struct task_struct
if (!thread_group_leader(tsk)) {
leader = tsk->group_leader;
- sig->notify_count = -1;
+ sig->notify_count = -1; /* for exit_notify() */
for (;;) {
write_lock_irq(&tasklist_lock);
if (likely(leader->exit_state))
--- 25/kernel/exit.c~7_DOC_EXIT_EXEC 2008-03-03 06:46:00.000000000 +0300
+++ 25/kernel/exit.c 2008-03-03 07:07:17.000000000 +0300
@@ -808,6 +808,7 @@ static void exit_notify(struct task_stru
state = EXIT_DEAD;
tsk->exit_state = state;
+ /* mt-exec, de_thread() is waiting for us */
if (thread_group_leader(tsk) &&
tsk->signal->notify_count < 0 &&
tsk->signal->group_exit_task)
It's better than nothing! I'd still like to revisit the whole MT exec
picture when we can.
Thanks,
Roland
On 03/04, Roland McGrath wrote:
>
> I'd still like to revisit the whole MT exec
> picture when we can.
Yes, I do remember the previous discussion, and I very much
agree with your idea how we should do this.
Oleg.