static int zap_process(struct task_struct *start, int exit_code, int flags) { struct task_struct *t; int nr = 0; /* ignore all signals except SIGKILL, see prepare_signal() */ start->signal->flags = SIGNAL_GROUP_COREDUMP | flags; start->signal->group_exit_code = exit_code; start->signal->group_stop_count = 0; for_each_thread(start, t) { task_clear_jobctl_pending(t, JOBCTL_PENDING_MASK); if (t != current && t->mm) { sigaddset(&t->pending.signal, SIGKILL); signal_wake_up(t, 1); nr++; } }
static int zap_process(struct task_struct *start, int exit_code) { struct task_struct *t; int nr = 0; start->signal->group_exit_code = exit_code; start->signal->group_stop_count = 0; t = start; do { task_clear_jobctl_pending(t, JOBCTL_PENDING_MASK); if (t != current && t->mm) { sigaddset(&t->pending.signal, SIGKILL); signal_wake_up(t, 1); nr++; } } while_each_thread(start, t); return nr; }