diff options
Diffstat (limited to 'kernel/hrtimer.c')
| -rw-r--r-- | kernel/hrtimer.c | 44 |
1 files changed, 23 insertions, 21 deletions
diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c index 782137dc755f..ae307feec74c 100644 --- a/kernel/hrtimer.c +++ b/kernel/hrtimer.c | |||
| @@ -517,7 +517,7 @@ static void hrtimer_force_reprogram(struct hrtimer_cpu_base *cpu_base) | |||
| 517 | if (!base->first) | 517 | if (!base->first) |
| 518 | continue; | 518 | continue; |
| 519 | timer = rb_entry(base->first, struct hrtimer, node); | 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 | if (expires.tv64 < cpu_base->expires_next.tv64) | 521 | if (expires.tv64 < cpu_base->expires_next.tv64) |
| 522 | cpu_base->expires_next = expires; | 522 | cpu_base->expires_next = expires; |
| 523 | } | 523 | } |
| @@ -539,10 +539,10 @@ static int hrtimer_reprogram(struct hrtimer *timer, | |||
| 539 | struct hrtimer_clock_base *base) | 539 | struct hrtimer_clock_base *base) |
| 540 | { | 540 | { |
| 541 | ktime_t *expires_next = &__get_cpu_var(hrtimer_bases).expires_next; | 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 | int res; | 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 | * When the callback is running, we do not reprogram the clock event | 548 | * When the callback is running, we do not reprogram the clock event |
| @@ -794,7 +794,7 @@ u64 hrtimer_forward(struct hrtimer *timer, ktime_t now, ktime_t interval) | |||
| 794 | u64 orun = 1; | 794 | u64 orun = 1; |
| 795 | ktime_t delta; | 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 | if (delta.tv64 < 0) | 799 | if (delta.tv64 < 0) |
| 800 | return 0; | 800 | return 0; |
| @@ -806,8 +806,8 @@ u64 hrtimer_forward(struct hrtimer *timer, ktime_t now, ktime_t interval) | |||
| 806 | s64 incr = ktime_to_ns(interval); | 806 | s64 incr = ktime_to_ns(interval); |
| 807 | 807 | ||
| 808 | orun = ktime_divns(delta, incr); | 808 | orun = ktime_divns(delta, incr); |
| 809 | timer->expires = ktime_add_ns(timer->expires, incr * orun); | 809 | hrtimer_add_expires_ns(timer, incr * orun); |
| 810 | if (timer->expires.tv64 > now.tv64) | 810 | if (hrtimer_get_expires_tv64(timer) > now.tv64) |
| 811 | return orun; | 811 | return orun; |
| 812 | /* | 812 | /* |
| 813 | * This (and the ktime_add() below) is the | 813 | * This (and the ktime_add() below) is the |
| @@ -815,7 +815,7 @@ u64 hrtimer_forward(struct hrtimer *timer, ktime_t now, ktime_t interval) | |||
| 815 | */ | 815 | */ |
| 816 | orun++; | 816 | orun++; |
| 817 | } | 817 | } |
| 818 | timer->expires = ktime_add_safe(timer->expires, interval); | 818 | hrtimer_add_expires(timer, interval); |
| 819 | 819 | ||
| 820 | return orun; | 820 | return orun; |
| 821 | } | 821 | } |
| @@ -847,7 +847,8 @@ static void enqueue_hrtimer(struct hrtimer *timer, | |||
| 847 | * We dont care about collisions. Nodes with | 847 | * We dont care about collisions. Nodes with |
| 848 | * the same expiry time stay together. | 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 | link = &(*link)->rb_left; | 852 | link = &(*link)->rb_left; |
| 852 | } else { | 853 | } else { |
| 853 | link = &(*link)->rb_right; | 854 | link = &(*link)->rb_right; |
| @@ -982,7 +983,7 @@ hrtimer_start(struct hrtimer *timer, ktime_t tim, const enum hrtimer_mode mode) | |||
| 982 | #endif | 983 | #endif |
| 983 | } | 984 | } |
| 984 | 985 | ||
| 985 | timer->expires = tim; | 986 | hrtimer_set_expires(timer, tim); |
| 986 | 987 | ||
| 987 | timer_stats_hrtimer_set_start_info(timer); | 988 | timer_stats_hrtimer_set_start_info(timer); |
| 988 | 989 | ||
| @@ -1076,7 +1077,7 @@ ktime_t hrtimer_get_remaining(const struct hrtimer *timer) | |||
| 1076 | ktime_t rem; | 1077 | ktime_t rem; |
| 1077 | 1078 | ||
| 1078 | base = lock_hrtimer_base(timer, &flags); | 1079 | base = lock_hrtimer_base(timer, &flags); |
| 1079 | rem = ktime_sub(timer->expires, base->get_time()); | 1080 | rem = hrtimer_expires_remaining(timer); |
| 1080 | unlock_hrtimer_base(timer, &flags); | 1081 | unlock_hrtimer_base(timer, &flags); |
| 1081 | 1082 | ||
| 1082 | return rem; | 1083 | return rem; |
| @@ -1108,7 +1109,7 @@ ktime_t hrtimer_get_next_event(void) | |||
| 1108 | continue; | 1109 | continue; |
| 1109 | 1110 | ||
| 1110 | timer = rb_entry(base->first, struct hrtimer, node); | 1111 | timer = rb_entry(base->first, struct hrtimer, node); |
| 1111 | delta.tv64 = timer->expires.tv64; | 1112 | delta.tv64 = hrtimer_get_expires_tv64(timer); |
| 1112 | delta = ktime_sub(delta, base->get_time()); | 1113 | delta = ktime_sub(delta, base->get_time()); |
| 1113 | if (delta.tv64 < mindelta.tv64) | 1114 | if (delta.tv64 < mindelta.tv64) |
| 1114 | mindelta.tv64 = delta.tv64; | 1115 | mindelta.tv64 = delta.tv64; |
| @@ -1308,10 +1309,10 @@ void hrtimer_interrupt(struct clock_event_device *dev) | |||
| 1308 | 1309 | ||
| 1309 | timer = rb_entry(node, struct hrtimer, node); | 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 | ktime_t expires; | 1313 | ktime_t expires; |
| 1313 | 1314 | ||
| 1314 | expires = ktime_sub(timer->expires, | 1315 | expires = ktime_sub(hrtimer_get_expires(timer), |
| 1315 | base->offset); | 1316 | base->offset); |
| 1316 | if (expires.tv64 < expires_next.tv64) | 1317 | if (expires.tv64 < expires_next.tv64) |
| 1317 | expires_next = expires; | 1318 | expires_next = expires; |
| @@ -1414,7 +1415,8 @@ void hrtimer_run_queues(void) | |||
| 1414 | struct hrtimer *timer; | 1415 | struct hrtimer *timer; |
| 1415 | 1416 | ||
| 1416 | timer = rb_entry(node, struct hrtimer, node); | 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 | break; | 1420 | break; |
| 1419 | 1421 | ||
| 1420 | if (timer->cb_mode == HRTIMER_CB_SOFTIRQ) { | 1422 | if (timer->cb_mode == HRTIMER_CB_SOFTIRQ) { |
| @@ -1462,7 +1464,7 @@ static int __sched do_nanosleep(struct hrtimer_sleeper *t, enum hrtimer_mode mod | |||
| 1462 | 1464 | ||
| 1463 | do { | 1465 | do { |
| 1464 | set_current_state(TASK_INTERRUPTIBLE); | 1466 | set_current_state(TASK_INTERRUPTIBLE); |
| 1465 | hrtimer_start(&t->timer, t->timer.expires, mode); | 1467 | hrtimer_start_expires(&t->timer, mode); |
| 1466 | if (!hrtimer_active(&t->timer)) | 1468 | if (!hrtimer_active(&t->timer)) |
| 1467 | t->task = NULL; | 1469 | t->task = NULL; |
| 1468 | 1470 | ||
| @@ -1484,7 +1486,7 @@ static int update_rmtp(struct hrtimer *timer, struct timespec __user *rmtp) | |||
| 1484 | struct timespec rmt; | 1486 | struct timespec rmt; |
| 1485 | ktime_t rem; | 1487 | ktime_t rem; |
| 1486 | 1488 | ||
| 1487 | rem = ktime_sub(timer->expires, timer->base->get_time()); | 1489 | rem = hrtimer_expires_remaining(timer); |
| 1488 | if (rem.tv64 <= 0) | 1490 | if (rem.tv64 <= 0) |
| 1489 | return 0; | 1491 | return 0; |
| 1490 | rmt = ktime_to_timespec(rem); | 1492 | rmt = ktime_to_timespec(rem); |
| @@ -1503,7 +1505,7 @@ long __sched hrtimer_nanosleep_restart(struct restart_block *restart) | |||
| 1503 | 1505 | ||
| 1504 | hrtimer_init_on_stack(&t.timer, restart->nanosleep.index, | 1506 | hrtimer_init_on_stack(&t.timer, restart->nanosleep.index, |
| 1505 | HRTIMER_MODE_ABS); | 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 | if (do_nanosleep(&t, HRTIMER_MODE_ABS)) | 1510 | if (do_nanosleep(&t, HRTIMER_MODE_ABS)) |
| 1509 | goto out; | 1511 | goto out; |
| @@ -1530,7 +1532,7 @@ long hrtimer_nanosleep(struct timespec *rqtp, struct timespec __user *rmtp, | |||
| 1530 | int ret = 0; | 1532 | int ret = 0; |
| 1531 | 1533 | ||
| 1532 | hrtimer_init_on_stack(&t.timer, clockid, mode); | 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 | if (do_nanosleep(&t, mode)) | 1536 | if (do_nanosleep(&t, mode)) |
| 1535 | goto out; | 1537 | goto out; |
| 1536 | 1538 | ||
| @@ -1550,7 +1552,7 @@ long hrtimer_nanosleep(struct timespec *rqtp, struct timespec __user *rmtp, | |||
| 1550 | restart->fn = hrtimer_nanosleep_restart; | 1552 | restart->fn = hrtimer_nanosleep_restart; |
| 1551 | restart->nanosleep.index = t.timer.base->index; | 1553 | restart->nanosleep.index = t.timer.base->index; |
| 1552 | restart->nanosleep.rmtp = rmtp; | 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 | ret = -ERESTART_RESTARTBLOCK; | 1557 | ret = -ERESTART_RESTARTBLOCK; |
| 1556 | out: | 1558 | out: |
| @@ -1724,11 +1726,11 @@ int __sched schedule_hrtimeout(ktime_t *expires, | |||
| 1724 | } | 1726 | } |
| 1725 | 1727 | ||
| 1726 | hrtimer_init_on_stack(&t.timer, CLOCK_MONOTONIC, mode); | 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 | hrtimer_init_sleeper(&t, current); | 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 | if (!hrtimer_active(&t.timer)) | 1734 | if (!hrtimer_active(&t.timer)) |
| 1733 | t.task = NULL; | 1735 | t.task = NULL; |
| 1734 | 1736 | ||
