Skip to content

Commit 5c8f23e

Browse files
Frederic WeisbeckerKAGA-KOKO
authored andcommitted
posix-cpu-timers: Consolidate timer base accessor
Remove the ad-hoc timer base accessors and provide a consolidated one. Signed-off-by: Frederic Weisbecker <[email protected]> Signed-off-by: Thomas Gleixner <[email protected]> Acked-by: Peter Zijlstra (Intel) <[email protected]> Link: https://lore.kernel.org/r/[email protected]
1 parent d9c1b2a commit 5c8f23e

File tree

1 file changed

+13
-15
lines changed

1 file changed

+13
-15
lines changed

kernel/time/posix-cpu-timers.c

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -407,6 +407,17 @@ static int posix_cpu_timer_create(struct k_itimer *new_timer)
407407
return 0;
408408
}
409409

410+
static struct posix_cputimer_base *timer_base(struct k_itimer *timer,
411+
struct task_struct *tsk)
412+
{
413+
int clkidx = CPUCLOCK_WHICH(timer->it_clock);
414+
415+
if (CPUCLOCK_PERTHREAD(timer->it_clock))
416+
return tsk->posix_cputimers.bases + clkidx;
417+
else
418+
return tsk->signal->posix_cputimers.bases + clkidx;
419+
}
420+
410421
/*
411422
* Dequeue the timer and reset the base if it was its earliest expiration.
412423
* It makes sure the next tick recalculates the base next expiration so we
@@ -421,18 +432,11 @@ static void disarm_timer(struct k_itimer *timer, struct task_struct *p)
421432
{
422433
struct cpu_timer *ctmr = &timer->it.cpu;
423434
struct posix_cputimer_base *base;
424-
int clkidx;
425435

426436
if (!cpu_timer_dequeue(ctmr))
427437
return;
428438

429-
clkidx = CPUCLOCK_WHICH(timer->it_clock);
430-
431-
if (CPUCLOCK_PERTHREAD(timer->it_clock))
432-
base = p->posix_cputimers.bases + clkidx;
433-
else
434-
base = p->signal->posix_cputimers.bases + clkidx;
435-
439+
base = timer_base(timer, p);
436440
if (cpu_timer_getexpires(ctmr) == base->nextevt)
437441
base->nextevt = 0;
438442
}
@@ -531,15 +535,9 @@ void posix_cpu_timers_exit_group(struct task_struct *tsk)
531535
*/
532536
static void arm_timer(struct k_itimer *timer, struct task_struct *p)
533537
{
534-
int clkidx = CPUCLOCK_WHICH(timer->it_clock);
538+
struct posix_cputimer_base *base = timer_base(timer, p);
535539
struct cpu_timer *ctmr = &timer->it.cpu;
536540
u64 newexp = cpu_timer_getexpires(ctmr);
537-
struct posix_cputimer_base *base;
538-
539-
if (CPUCLOCK_PERTHREAD(timer->it_clock))
540-
base = p->posix_cputimers.bases + clkidx;
541-
else
542-
base = p->signal->posix_cputimers.bases + clkidx;
543541

544542
if (!cpu_timer_enqueue(&base->tqhead, ctmr))
545543
return;

0 commit comments

Comments
 (0)