projects/linux·commit db51aecc

signals: microoptimize the usage of ->curr_target

db51aecc · Oleg Nesterov <[email protected]> · 2008-04-30 00:52:52 -07:00

Suggested by Roland McGrath.

Initialize signal->curr_target in copy_signal().  This way ->curr_target is
never == NULL, we can kill the check in __group_complete_signal's hot path.

Signed-off-by: Oleg Nesterov <[email protected]>
Cc: Roland McGrath <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Commit
db51aeccd7097ce19a522a4c5ff91c320f870e2b
Parents
08d2c30c

Changes

2 files changed · +1 −5

FileStatusAddDelContent
kernel/fork.cmodified+1−1View file
kernel/signal.cmodified+0−4View file

kernel/fork.c

View file
diff --git a/kernel/fork.c b/kernel/fork.c
index 068ffe0..2bb675a 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -892,7 +892,7 @@ static int copy_signal(unsigned long clone_flags, struct task_struct *tsk)
sig->group_exit_code = 0;
sig->group_exit_task = NULL;
sig->group_stop_count = 0;
- sig->curr_target = NULL;
+ sig->curr_target = tsk;
init_sigpending(&sig->shared_pending);
INIT_LIST_HEAD(&sig->posix_timers);

kernel/signal.c

View file
diff --git a/kernel/signal.c b/kernel/signal.c
index 17859f0..0298bd3 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -863,10 +863,6 @@ __group_complete_signal(int sig, struct task_struct *p)
* Otherwise try to find a suitable thread.
*/
t = signal->curr_target;
- if (t == NULL)
- /* restart balancing at this thread */
- t = signal->curr_target = p;
-
while (!wants_signal(sig, t)) {
t = next_thread(t);
if (t == signal->curr_target)