[PATCH] hrtimer: Replace timerqueue_getnext() uses with direct access to 'active.next'

From: Ingo Molnar
Date: Thu Apr 09 2015 - 02:53:33 EST



* Ingo Molnar <mingo@xxxxxxxxxx> wrote:

> I'd also suggest the removal of the timerqueue_getnext()
> obfuscation: it 'sounds' complex but in reality it's a simple
> dereference to active.next. I think this is what triggered this
> rather pointless maintenance of active_bases.

The patch below does this - it's more readable to me in this fashion,
the 'next' field is already very clearly named, no need for a
(longer!) helper function there.

I lightly tested the 3 patches with hrtimers enabled under a virtual
machine.

Thanks,

Ingo

---
kernel/time/hrtimer.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)

Index: tip/kernel/time/hrtimer.c
===================================================================
--- tip.orig/kernel/time/hrtimer.c
+++ tip/kernel/time/hrtimer.c
@@ -451,7 +451,7 @@ static ktime_t __hrtimer_get_next_event(
struct timerqueue_node *next;
struct hrtimer *timer;

- next = timerqueue_getnext(&base->active);
+ next = base->active.next;
if (!next)
continue;

@@ -876,7 +876,7 @@ static void __remove_hrtimer(struct hrti
if (!(timer->state & HRTIMER_STATE_ENQUEUED))
goto out;

- next_timer = timerqueue_getnext(&base->active);
+ next_timer = base->active.next;
timerqueue_del(&base->active, &timer->node);
if (&timer->node == next_timer) {
#ifdef CONFIG_HIGH_RES_TIMERS
@@ -1271,7 +1271,7 @@ retry:

basenow = ktime_add(now, base->offset);

- while ((node = timerqueue_getnext(&base->active))) {
+ while ((node = base->active.next)) {
struct hrtimer *timer;

timer = container_of(node, struct hrtimer, node);
@@ -1438,7 +1438,7 @@ void hrtimer_run_queues(void)

for (index = 0; index < HRTIMER_MAX_CLOCK_BASES; index++) {
base = &cpu_base->clock_base[index];
- if (!timerqueue_getnext(&base->active))
+ if (!base->active.next)
continue;

if (gettime) {
@@ -1448,7 +1448,7 @@ void hrtimer_run_queues(void)

raw_spin_lock(&cpu_base->lock);

- while ((node = timerqueue_getnext(&base->active))) {
+ while ((node = base->active.next)) {
struct hrtimer *timer;

timer = container_of(node, struct hrtimer, node);
@@ -1631,7 +1631,7 @@ static void migrate_hrtimer_list(struct
struct hrtimer *timer;
struct timerqueue_node *node;

- while ((node = timerqueue_getnext(&old_base->active))) {
+ while ((node = old_base->active.next)) {
timer = container_of(node, struct hrtimer, node);
BUG_ON(hrtimer_callback_running(timer));
debug_deactivate(timer);
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/