Messages in this thread Patch in this message | | | From | Andi Kleen <> | Subject | [PATCH 4/4] posix-timers: turn it_signal into it_valid flag | Date | Mon, 29 Aug 2011 16:39:17 -0700 |
| |
From: Andi Kleen <ak@linux.intel.com>
Now that the timer IDR is per process we don't need to save the signal_struct in the timer anymore. Still need this as a flag for RCU, so turn it into a it_valid flag.
Suggested by Eric Dumazet
Signed-off-by: Andi Kleen <ak@linux.intel.com> --- include/linux/posix-timers.h | 2 +- kernel/posix-timers.c | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/include/linux/posix-timers.h b/include/linux/posix-timers.h index 959c141..02c1f04 100644 --- a/include/linux/posix-timers.h +++ b/include/linux/posix-timers.h @@ -63,7 +63,7 @@ struct k_itimer { int it_requeue_pending; /* waiting to requeue this timer */ #define REQUEUE_PENDING 1 int it_sigev_notify; /* notify word of sigevent struct */ - struct signal_struct *it_signal; + int it_valid; union { struct pid *it_pid; /* pid of process to send signal to */ struct task_struct *it_process; /* for clock_nanosleep */ diff --git a/kernel/posix-timers.c b/kernel/posix-timers.c index 320659d..5b27641 100644 --- a/kernel/posix-timers.c +++ b/kernel/posix-timers.c @@ -618,7 +618,7 @@ SYSCALL_DEFINE3(timer_create, const clockid_t, which_clock, goto out; spin_lock_irq(¤t->sighand->siglock); - new_timer->it_signal = current->signal; + new_timer->it_valid = 1; list_add(&new_timer->list, ¤t->signal->posix_timers); spin_unlock_irq(¤t->sighand->siglock); @@ -650,7 +650,7 @@ static struct k_itimer *__lock_timer(timer_t timer_id, unsigned long *flags) timr = idr_find(&s->posix_timers_id, (int)timer_id); if (timr) { spin_lock_irqsave(&timr->it_lock, *flags); - if (timr->it_signal == current->signal) { + if (timr->it_valid) { rcu_read_unlock(); return timr; } @@ -908,7 +908,7 @@ retry_delete: * This keeps any tasks waiting on the spin lock from thinking * they got something (see the lock code above). */ - timer->it_signal = NULL; + timer->it_valid = 0; unlock_timer(timer, flags); release_posix_timer(timer, IT_ID_SET); @@ -934,7 +934,7 @@ retry_delete: * This keeps any tasks waiting on the spin lock from thinking * they got something (see the lock code above). */ - timer->it_signal = NULL; + timer->it_valid = 0; unlock_timer(timer, flags); release_posix_timer(timer, IT_ID_SET); -- 1.7.4.4
| |