Skip to content

Commit

Permalink
posix-timers: lock_timer: make it readable
Browse files Browse the repository at this point in the history
Cleanup.  Imho makes the code much more understandable.  At least this
patch lessens both the source and compiled code.

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>
  • Loading branch information
Oleg Nesterov authored and Thomas Gleixner committed Sep 24, 2008
1 parent 5a51b71 commit 31d9284
Showing 1 changed file with 10 additions and 13 deletions.
23 changes: 10 additions & 13 deletions kernel/posix-timers.c
Original file line number Diff line number Diff line change
Expand Up @@ -556,31 +556,28 @@ sys_timer_create(const clockid_t which_clock,
* the find to the timer lock. To avoid a dead lock, the timer id MUST
* be release with out holding the timer lock.
*/
static struct k_itimer * lock_timer(timer_t timer_id, unsigned long *flags)
static struct k_itimer *lock_timer(timer_t timer_id, unsigned long *flags)
{
struct k_itimer *timr;
/*
* Watch out here. We do a irqsave on the idr_lock and pass the
* flags part over to the timer lock. Must not let interrupts in
* while we are moving the lock.
*/

spin_lock_irqsave(&idr_lock, *flags);
timr = idr_find(&posix_timers_id, (int) timer_id);
timr = idr_find(&posix_timers_id, (int)timer_id);
if (timr) {
spin_lock(&timr->it_lock);

if (!timr->it_process ||
!same_thread_group(timr->it_process, current)) {
spin_unlock(&timr->it_lock);
spin_unlock_irqrestore(&idr_lock, *flags);
timr = NULL;
} else
if (timr->it_process &&
same_thread_group(timr->it_process, current)) {
spin_unlock(&idr_lock);
} else
spin_unlock_irqrestore(&idr_lock, *flags);
return timr;
}
spin_unlock(&timr->it_lock);
}
spin_unlock_irqrestore(&idr_lock, *flags);

return timr;
return NULL;
}

/*
Expand Down

0 comments on commit 31d9284

Please sign in to comment.