diff options
author | Oleg Nesterov <oleg@tv-sign.ru> | 2008-09-22 17:42:49 -0400 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2008-09-24 09:45:48 -0400 |
commit | 717835d94d3e3d343a302df0a3cb9405887c3e2a (patch) | |
tree | 52da10bec8843d3869049440776d91cde95b04a4 /kernel | |
parent | 36b2f046000b358b62b9d116cb10a2b1c5be5cbf (diff) |
posix-timers: move the initialization of timer->sigq from send to create path
posix_timer_event() always populates timer->sigq with the same numbers,
move this code into sys_timer_create().
Note that with this patch we can kill it_sigev_signo and it_sigev_value.
Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Cc: mingo@elte.hu
Cc: Roland McGrath <roland@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/posix-timers.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/kernel/posix-timers.c b/kernel/posix-timers.c index 5b761903b49a..c459b29efdd4 100644 --- a/kernel/posix-timers.c +++ b/kernel/posix-timers.c | |||
@@ -312,11 +312,6 @@ int posix_timer_event(struct k_itimer *timr, int si_private) | |||
312 | */ | 312 | */ |
313 | timr->sigq->info.si_sys_private = si_private; | 313 | timr->sigq->info.si_sys_private = si_private; |
314 | 314 | ||
315 | timr->sigq->info.si_signo = timr->it_sigev_signo; | ||
316 | timr->sigq->info.si_code = SI_TIMER; | ||
317 | timr->sigq->info.si_tid = timr->it_id; | ||
318 | timr->sigq->info.si_value = timr->it_sigev_value; | ||
319 | |||
320 | shared = !(timr->it_sigev_notify & SIGEV_THREAD_ID); | 315 | shared = !(timr->it_sigev_notify & SIGEV_THREAD_ID); |
321 | ret = send_sigqueue(timr->sigq, timr->it_process, shared); | 316 | ret = send_sigqueue(timr->sigq, timr->it_process, shared); |
322 | /* If we failed to send the signal the timer stops. */ | 317 | /* If we failed to send the signal the timer stops. */ |
@@ -537,6 +532,11 @@ sys_timer_create(const clockid_t which_clock, | |||
537 | get_task_struct(process); | 532 | get_task_struct(process); |
538 | } | 533 | } |
539 | 534 | ||
535 | new_timer->sigq->info.si_code = SI_TIMER; | ||
536 | new_timer->sigq->info.si_tid = new_timer->it_id; | ||
537 | new_timer->sigq->info.si_signo = new_timer->it_sigev_signo; | ||
538 | new_timer->sigq->info.si_value = new_timer->it_sigev_value; | ||
539 | |||
540 | spin_lock_irq(¤t->sighand->siglock); | 540 | spin_lock_irq(¤t->sighand->siglock); |
541 | new_timer->it_process = process; | 541 | new_timer->it_process = process; |
542 | list_add(&new_timer->list, ¤t->signal->posix_timers); | 542 | list_add(&new_timer->list, ¤t->signal->posix_timers); |