Commit cc584b213f252bf698849cf4be2377cd3ec7501a

Authored by Arjan van de Ven
1 parent 23dd7bb09b

hrtimer: convert kernel/* to the new hrtimer apis

In order to be able to do range hrtimers we need to use accessor functions
to the "expire" member of the hrtimer struct.
This patch converts kernel/* to these accessors.

Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>

Showing 8 changed files with 47 additions and 52 deletions Side-by-side Diff

... ... @@ -1299,10 +1299,9 @@
1299 1299 hrtimer_init_on_stack(&t.timer, CLOCK_MONOTONIC,
1300 1300 HRTIMER_MODE_ABS);
1301 1301 hrtimer_init_sleeper(&t, current);
1302   - t.timer.expires = *abs_time;
  1302 + hrtimer_set_expires(&t.timer, *abs_time);
1303 1303  
1304   - hrtimer_start(&t.timer, t.timer.expires,
1305   - HRTIMER_MODE_ABS);
  1304 + hrtimer_start_expires(&t.timer, HRTIMER_MODE_ABS);
1306 1305 if (!hrtimer_active(&t.timer))
1307 1306 t.task = NULL;
1308 1307  
... ... @@ -1404,7 +1403,7 @@
1404 1403 hrtimer_init_on_stack(&to->timer, CLOCK_REALTIME,
1405 1404 HRTIMER_MODE_ABS);
1406 1405 hrtimer_init_sleeper(to, current);
1407   - to->timer.expires = *time;
  1406 + hrtimer_set_expires(&to->timer, *time);
1408 1407 }
1409 1408  
1410 1409 q.pi_state = NULL;
... ... @@ -517,7 +517,7 @@
517 517 if (!base->first)
518 518 continue;
519 519 timer = rb_entry(base->first, struct hrtimer, node);
520   - expires = ktime_sub(timer->expires, base->offset);
  520 + expires = ktime_sub(hrtimer_get_expires(timer), base->offset);
521 521 if (expires.tv64 < cpu_base->expires_next.tv64)
522 522 cpu_base->expires_next = expires;
523 523 }
524 524  
... ... @@ -539,10 +539,10 @@
539 539 struct hrtimer_clock_base *base)
540 540 {
541 541 ktime_t *expires_next = &__get_cpu_var(hrtimer_bases).expires_next;
542   - ktime_t expires = ktime_sub(timer->expires, base->offset);
  542 + ktime_t expires = ktime_sub(hrtimer_get_expires(timer), base->offset);
543 543 int res;
544 544  
545   - WARN_ON_ONCE(timer->expires.tv64 < 0);
  545 + WARN_ON_ONCE(hrtimer_get_expires_tv64(timer) < 0);
546 546  
547 547 /*
548 548 * When the callback is running, we do not reprogram the clock event
... ... @@ -794,7 +794,7 @@
794 794 u64 orun = 1;
795 795 ktime_t delta;
796 796  
797   - delta = ktime_sub(now, timer->expires);
  797 + delta = ktime_sub(now, hrtimer_get_expires(timer));
798 798  
799 799 if (delta.tv64 < 0)
800 800 return 0;
... ... @@ -806,8 +806,8 @@
806 806 s64 incr = ktime_to_ns(interval);
807 807  
808 808 orun = ktime_divns(delta, incr);
809   - timer->expires = ktime_add_ns(timer->expires, incr * orun);
810   - if (timer->expires.tv64 > now.tv64)
  809 + hrtimer_add_expires_ns(timer, incr * orun);
  810 + if (hrtimer_get_expires_tv64(timer) > now.tv64)
811 811 return orun;
812 812 /*
813 813 * This (and the ktime_add() below) is the
... ... @@ -815,7 +815,7 @@
815 815 */
816 816 orun++;
817 817 }
818   - timer->expires = ktime_add_safe(timer->expires, interval);
  818 + hrtimer_add_expires(timer, interval);
819 819  
820 820 return orun;
821 821 }
... ... @@ -847,7 +847,8 @@
847 847 * We dont care about collisions. Nodes with
848 848 * the same expiry time stay together.
849 849 */
850   - if (timer->expires.tv64 < entry->expires.tv64) {
  850 + if (hrtimer_get_expires_tv64(timer) <
  851 + hrtimer_get_expires_tv64(entry)) {
851 852 link = &(*link)->rb_left;
852 853 } else {
853 854 link = &(*link)->rb_right;
... ... @@ -982,7 +983,7 @@
982 983 #endif
983 984 }
984 985  
985   - timer->expires = tim;
  986 + hrtimer_set_expires(timer, tim);
986 987  
987 988 timer_stats_hrtimer_set_start_info(timer);
988 989  
... ... @@ -1076,7 +1077,7 @@
1076 1077 ktime_t rem;
1077 1078  
1078 1079 base = lock_hrtimer_base(timer, &flags);
1079   - rem = ktime_sub(timer->expires, base->get_time());
  1080 + rem = hrtimer_expires_remaining(timer);
1080 1081 unlock_hrtimer_base(timer, &flags);
1081 1082  
1082 1083 return rem;
... ... @@ -1108,7 +1109,7 @@
1108 1109 continue;
1109 1110  
1110 1111 timer = rb_entry(base->first, struct hrtimer, node);
1111   - delta.tv64 = timer->expires.tv64;
  1112 + delta.tv64 = hrtimer_get_expires_tv64(timer);
1112 1113 delta = ktime_sub(delta, base->get_time());
1113 1114 if (delta.tv64 < mindelta.tv64)
1114 1115 mindelta.tv64 = delta.tv64;
1115 1116  
... ... @@ -1308,10 +1309,10 @@
1308 1309  
1309 1310 timer = rb_entry(node, struct hrtimer, node);
1310 1311  
1311   - if (basenow.tv64 < timer->expires.tv64) {
  1312 + if (basenow.tv64 < hrtimer_get_expires_tv64(timer)) {
1312 1313 ktime_t expires;
1313 1314  
1314   - expires = ktime_sub(timer->expires,
  1315 + expires = ktime_sub(hrtimer_get_expires(timer),
1315 1316 base->offset);
1316 1317 if (expires.tv64 < expires_next.tv64)
1317 1318 expires_next = expires;
... ... @@ -1414,7 +1415,8 @@
1414 1415 struct hrtimer *timer;
1415 1416  
1416 1417 timer = rb_entry(node, struct hrtimer, node);
1417   - if (base->softirq_time.tv64 <= timer->expires.tv64)
  1418 + if (base->softirq_time.tv64 <=
  1419 + hrtimer_get_expires_tv64(timer))
1418 1420 break;
1419 1421  
1420 1422 if (timer->cb_mode == HRTIMER_CB_SOFTIRQ) {
... ... @@ -1462,7 +1464,7 @@
1462 1464  
1463 1465 do {
1464 1466 set_current_state(TASK_INTERRUPTIBLE);
1465   - hrtimer_start(&t->timer, t->timer.expires, mode);
  1467 + hrtimer_start_expires(&t->timer, mode);
1466 1468 if (!hrtimer_active(&t->timer))
1467 1469 t->task = NULL;
1468 1470  
... ... @@ -1484,7 +1486,7 @@
1484 1486 struct timespec rmt;
1485 1487 ktime_t rem;
1486 1488  
1487   - rem = ktime_sub(timer->expires, timer->base->get_time());
  1489 + rem = hrtimer_expires_remaining(timer);
1488 1490 if (rem.tv64 <= 0)
1489 1491 return 0;
1490 1492 rmt = ktime_to_timespec(rem);
... ... @@ -1503,7 +1505,7 @@
1503 1505  
1504 1506 hrtimer_init_on_stack(&t.timer, restart->nanosleep.index,
1505 1507 HRTIMER_MODE_ABS);
1506   - t.timer.expires.tv64 = restart->nanosleep.expires;
  1508 + hrtimer_set_expires_tv64(&t.timer, restart->nanosleep.expires);
1507 1509  
1508 1510 if (do_nanosleep(&t, HRTIMER_MODE_ABS))
1509 1511 goto out;
... ... @@ -1530,7 +1532,7 @@
1530 1532 int ret = 0;
1531 1533  
1532 1534 hrtimer_init_on_stack(&t.timer, clockid, mode);
1533   - t.timer.expires = timespec_to_ktime(*rqtp);
  1535 + hrtimer_set_expires(&t.timer, timespec_to_ktime(*rqtp));
1534 1536 if (do_nanosleep(&t, mode))
1535 1537 goto out;
1536 1538  
... ... @@ -1550,7 +1552,7 @@
1550 1552 restart->fn = hrtimer_nanosleep_restart;
1551 1553 restart->nanosleep.index = t.timer.base->index;
1552 1554 restart->nanosleep.rmtp = rmtp;
1553   - restart->nanosleep.expires = t.timer.expires.tv64;
  1555 + restart->nanosleep.expires = hrtimer_get_expires_tv64(&t.timer);
1554 1556  
1555 1557 ret = -ERESTART_RESTARTBLOCK;
1556 1558 out:
1557 1559  
... ... @@ -1724,11 +1726,11 @@
1724 1726 }
1725 1727  
1726 1728 hrtimer_init_on_stack(&t.timer, CLOCK_MONOTONIC, mode);
1727   - t.timer.expires = *expires;
  1729 + hrtimer_set_expires(&t.timer, *expires);
1728 1730  
1729 1731 hrtimer_init_sleeper(&t, current);
1730 1732  
1731   - hrtimer_start(&t.timer, t.timer.expires, mode);
  1733 + hrtimer_start_expires(&t.timer, mode);
1732 1734 if (!hrtimer_active(&t.timer))
1733 1735 t.task = NULL;
1734 1736  
kernel/posix-timers.c
... ... @@ -668,7 +668,7 @@
668 668 (timr->it_sigev_notify & ~SIGEV_THREAD_ID) == SIGEV_NONE))
669 669 timr->it_overrun += (unsigned int) hrtimer_forward(timer, now, iv);
670 670  
671   - remaining = ktime_sub(timer->expires, now);
  671 + remaining = ktime_sub(hrtimer_get_expires(timer), now);
672 672 /* Return 0 only, when the timer is expired and not pending */
673 673 if (remaining.tv64 <= 0) {
674 674 /*
... ... @@ -762,7 +762,7 @@
762 762 hrtimer_init(&timr->it.real.timer, timr->it_clock, mode);
763 763 timr->it.real.timer.function = posix_timer_fn;
764 764  
765   - timer->expires = timespec_to_ktime(new_setting->it_value);
  765 + hrtimer_set_expires(timer, timespec_to_ktime(new_setting->it_value));
766 766  
767 767 /* Convert interval */
768 768 timr->it.real.interval = timespec_to_ktime(new_setting->it_interval);
769 769  
... ... @@ -771,14 +771,12 @@
771 771 if (((timr->it_sigev_notify & ~SIGEV_THREAD_ID) == SIGEV_NONE)) {
772 772 /* Setup correct expiry time for relative timers */
773 773 if (mode == HRTIMER_MODE_REL) {
774   - timer->expires =
775   - ktime_add_safe(timer->expires,
776   - timer->base->get_time());
  774 + hrtimer_add_expires(timer, timer->base->get_time());
777 775 }
778 776 return 0;
779 777 }
780 778  
781   - hrtimer_start(timer, timer->expires, mode);
  779 + hrtimer_start_expires(timer, mode);
782 780 return 0;
783 781 }
784 782  
... ... @@ -631,8 +631,7 @@
631 631  
632 632 /* Setup the timer, when timeout != NULL */
633 633 if (unlikely(timeout)) {
634   - hrtimer_start(&timeout->timer, timeout->timer.expires,
635   - HRTIMER_MODE_ABS);
  634 + hrtimer_start_expires(&timeout->timer, HRTIMER_MODE_ABS);
636 635 if (!hrtimer_active(&timeout->timer))
637 636 timeout->task = NULL;
638 637 }
... ... @@ -221,9 +221,8 @@
221 221  
222 222 now = hrtimer_cb_get_time(&rt_b->rt_period_timer);
223 223 hrtimer_forward(&rt_b->rt_period_timer, now, rt_b->rt_period);
224   - hrtimer_start(&rt_b->rt_period_timer,
225   - rt_b->rt_period_timer.expires,
226   - HRTIMER_MODE_ABS);
  224 + hrtimer_start_expires(&rt_b->rt_period_timer,
  225 + HRTIMER_MODE_ABS);
227 226 }
228 227 spin_unlock(&rt_b->rt_runtime_lock);
229 228 }
... ... @@ -1058,7 +1057,7 @@
1058 1057 struct hrtimer *timer = &rq->hrtick_timer;
1059 1058 ktime_t time = ktime_add_ns(timer->base->get_time(), delay);
1060 1059  
1061   - timer->expires = time;
  1060 + hrtimer_set_expires(timer, time);
1062 1061  
1063 1062 if (rq == this_rq()) {
1064 1063 hrtimer_restart(timer);
... ... @@ -142,8 +142,7 @@
142 142 time_state = TIME_OOP;
143 143 printk(KERN_NOTICE "Clock: "
144 144 "inserting leap second 23:59:60 UTC\n");
145   - leap_timer.expires = ktime_add_ns(leap_timer.expires,
146   - NSEC_PER_SEC);
  145 + hrtimer_add_expires_ns(&leap_timer, NSEC_PER_SEC);
147 146 res = HRTIMER_RESTART;
148 147 break;
149 148 case TIME_DEL:
kernel/time/tick-sched.c
... ... @@ -288,7 +288,7 @@
288 288 goto out;
289 289 }
290 290  
291   - ts->idle_tick = ts->sched_timer.expires;
  291 + ts->idle_tick = hrtimer_get_expires(&ts->sched_timer);
292 292 ts->tick_stopped = 1;
293 293 ts->idle_jiffies = last_jiffies;
294 294 rcu_enter_nohz();
295 295  
296 296  
... ... @@ -419,21 +419,21 @@
419 419 ts->tick_stopped = 0;
420 420 ts->idle_exittime = now;
421 421 hrtimer_cancel(&ts->sched_timer);
422   - ts->sched_timer.expires = ts->idle_tick;
  422 + hrtimer_set_expires(&ts->sched_timer, ts->idle_tick);
423 423  
424 424 while (1) {
425 425 /* Forward the time to expire in the future */
426 426 hrtimer_forward(&ts->sched_timer, now, tick_period);
427 427  
428 428 if (ts->nohz_mode == NOHZ_MODE_HIGHRES) {
429   - hrtimer_start(&ts->sched_timer,
430   - ts->sched_timer.expires,
  429 + hrtimer_start_expires(&ts->sched_timer,
431 430 HRTIMER_MODE_ABS);
432 431 /* Check, if the timer was already in the past */
433 432 if (hrtimer_active(&ts->sched_timer))
434 433 break;
435 434 } else {
436   - if (!tick_program_event(ts->sched_timer.expires, 0))
  435 + if (!tick_program_event(
  436 + hrtimer_get_expires(&ts->sched_timer), 0))
437 437 break;
438 438 }
439 439 /* Update jiffies and reread time */
... ... @@ -446,7 +446,7 @@
446 446 static int tick_nohz_reprogram(struct tick_sched *ts, ktime_t now)
447 447 {
448 448 hrtimer_forward(&ts->sched_timer, now, tick_period);
449   - return tick_program_event(ts->sched_timer.expires, 0);
  449 + return tick_program_event(hrtimer_get_expires(&ts->sched_timer), 0);
450 450 }
451 451  
452 452 /*
... ... @@ -529,7 +529,7 @@
529 529 next = tick_init_jiffy_update();
530 530  
531 531 for (;;) {
532   - ts->sched_timer.expires = next;
  532 + hrtimer_set_expires(&ts->sched_timer, next);
533 533 if (!tick_program_event(next, 0))
534 534 break;
535 535 next = ktime_add(next, tick_period);
536 536  
537 537  
... ... @@ -625,16 +625,15 @@
625 625 ts->sched_timer.cb_mode = HRTIMER_CB_IRQSAFE_NO_SOFTIRQ;
626 626  
627 627 /* Get the next period (per cpu) */
628   - ts->sched_timer.expires = tick_init_jiffy_update();
  628 + hrtimer_set_expires(&ts->sched_timer, tick_init_jiffy_update());
629 629 offset = ktime_to_ns(tick_period) >> 1;
630 630 do_div(offset, num_possible_cpus());
631 631 offset *= smp_processor_id();
632   - ts->sched_timer.expires = ktime_add_ns(ts->sched_timer.expires, offset);
  632 + hrtimer_add_expires_ns(&ts->sched_timer, offset);
633 633  
634 634 for (;;) {
635 635 hrtimer_forward(&ts->sched_timer, now, tick_period);
636   - hrtimer_start(&ts->sched_timer, ts->sched_timer.expires,
637   - HRTIMER_MODE_ABS);
  636 + hrtimer_start_expires(&ts->sched_timer, HRTIMER_MODE_ABS);
638 637 /* Check, if the timer was already in the past */
639 638 if (hrtimer_active(&ts->sched_timer))
640 639 break;
kernel/time/timer_list.c
... ... @@ -66,8 +66,8 @@
66 66 #endif
67 67 SEQ_printf(m, "\n");
68 68 SEQ_printf(m, " # expires at %Lu nsecs [in %Ld nsecs]\n",
69   - (unsigned long long)ktime_to_ns(timer->expires),
70   - (long long)(ktime_to_ns(timer->expires) - now));
  69 + (unsigned long long)ktime_to_ns(hrtimer_get_expires(timer)),
  70 + (long long)(ktime_to_ns(hrtimer_get_expires(timer)) - now));
71 71 }
72 72  
73 73 static void