signal: retarget_shared_pending: consider shared/unblocked signals only
authorOleg Nesterov <oleg@redhat.com>
Wed, 27 Apr 2011 17:18:39 +0000 (19:18 +0200)
committerOleg Nesterov <oleg@redhat.com>
Thu, 28 Apr 2011 11:01:35 +0000 (13:01 +0200)
commitf646e227b88a164a841d6b6dd969d8a45272dd83
treebd11235d720e384efc20e01f116bbf904ca58b4f
parent0edceb7bcd82802f721f3c94eed9b3e2869d3740
signal: retarget_shared_pending: consider shared/unblocked signals only

exit_signals() checks signal_pending() before retarget_shared_pending() but
this is suboptimal. We can avoid the while_each_thread() loop in case when
there are no shared signals visible to us.

Add the "shared_pending.signal & ~blocked" check. We don't use tsk->blocked
directly but pass ~blocked as an argument, this is needed for the next patch.

Note: we can optimize this more. while_each_thread(t) can check t->blocked
into account and stop after every pending signal has the new target, see the
next patch.

Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Reviewed-by: Matt Fleming <matt.fleming@linux.intel.com>
Acked-by: Tejun Heo <tj@kernel.org>
kernel/signal.c