summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'kernel')
-rw-r--r--kernel/time/hrtimer.c62
-rw-r--r--kernel/time/timer.c52
2 files changed, 8 insertions, 106 deletions
diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c
index 53291d7e72f9..9ba7c820fc23 100644
--- a/kernel/time/hrtimer.c
+++ b/kernel/time/hrtimer.c
@@ -1788,65 +1788,3 @@ int __sched schedule_hrtimeout(ktime_t *expires,
return schedule_hrtimeout_range(expires, 0, mode);
}
EXPORT_SYMBOL_GPL(schedule_hrtimeout);
-
-/*
- * As per schedule_hrtimeout but taskes a millisecond value and returns how
- * many milliseconds are left.
- */
-signed long __sched schedule_msec_hrtimeout(signed long timeout)
-{
- struct hrtimer_sleeper t;
- ktime_t expires;
- int delta, secs;
-
- if (!timeout) {
- __set_current_state(TASK_RUNNING);
- return 0;
- }
-
- secs = timeout / 1000;
- delta = (timeout % 1000) * NSEC_PER_MSEC;
- expires = ktime_set(secs, delta);
-
- hrtimer_init_on_stack(&t.timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
- hrtimer_set_expires_range_ns(&t.timer, expires, delta);
-
- hrtimer_init_sleeper(&t, current);
-
- hrtimer_start_expires(&t.timer, HRTIMER_MODE_REL);
-
- if (likely(t.task))
- schedule();
-
- hrtimer_cancel(&t.timer);
- destroy_hrtimer_on_stack(&t.timer);
-
- __set_current_state(TASK_RUNNING);
-
- expires = hrtimer_expires_remaining(&t.timer);
- timeout = ktime_to_ms(expires);
- return timeout < 0 ? 0 : timeout;
-}
-
-EXPORT_SYMBOL(schedule_msec_hrtimeout);
-
-signed long __sched schedule_min_hrtimeout(void)
-{
- return schedule_msec_hrtimeout(1);
-}
-
-EXPORT_SYMBOL(schedule_min_hrtimeout);
-
-signed long __sched schedule_msec_hrtimeout_interruptible(signed long timeout)
-{
- __set_current_state(TASK_INTERRUPTIBLE);
- return schedule_msec_hrtimeout(timeout);
-}
-EXPORT_SYMBOL(schedule_msec_hrtimeout_interruptible);
-
-signed long __sched schedule_msec_hrtimeout_uninterruptible(signed long timeout)
-{
- __set_current_state(TASK_UNINTERRUPTIBLE);
- return schedule_msec_hrtimeout(timeout);
-}
-EXPORT_SYMBOL(schedule_msec_hrtimeout_uninterruptible);
diff --git a/kernel/time/timer.c b/kernel/time/timer.c
index 0455ab7dd18d..f0be61c19bfb 100644
--- a/kernel/time/timer.c
+++ b/kernel/time/timer.c
@@ -1709,7 +1709,7 @@ static void process_timeout(unsigned long __data)
*
* In all cases the return value is guaranteed to be non-negative.
*/
-static signed long __schedule_timeout(signed long timeout, bool freezable)
+signed long __sched schedule_timeout(signed long timeout)
{
struct timer_list timer;
unsigned long expire;
@@ -1745,17 +1745,6 @@ static signed long __schedule_timeout(signed long timeout, bool freezable)
expire = timeout + jiffies;
- if (timeout == 1 && !freezable && hrtimer_resolution < NSEC_PER_SEC / HZ) {
- /*
- * Special case 1 as being a request for the minimum timeout
- * and use highres timers to timeout after 1ms to workaround
- * the granularity of low Hz tick timers.
- */
- if (!schedule_min_hrtimeout())
- return 0;
- goto out_timeout;
- }
-
setup_timer_on_stack(&timer, process_timeout, (unsigned long)current);
__mod_timer(&timer, expire, false);
schedule();
@@ -1763,26 +1752,14 @@ static signed long __schedule_timeout(signed long timeout, bool freezable)
/* Remove the timer from the object tracker */
destroy_timer_on_stack(&timer);
-out_timeout:
+
timeout = expire - jiffies;
-out:
+ out:
return timeout < 0 ? 0 : timeout;
}
-
-signed long __sched schedule_timeout(signed long timeout)
-{
- return __schedule_timeout(timeout, false);
-}
EXPORT_SYMBOL(schedule_timeout);
-signed long __sched fschedule_timeout(signed long timeout)
-{
- return __schedule_timeout(timeout, true);
-}
-EXPORT_SYMBOL(fschedule_timeout);
-
-
/*
* We can use __set_current_state() here because schedule_timeout() calls
* schedule() unconditionally.
@@ -1797,14 +1774,14 @@ EXPORT_SYMBOL(schedule_timeout_interruptible);
signed long __sched schedule_timeout_killable(signed long timeout)
{
__set_current_state(TASK_KILLABLE);
- return fschedule_timeout(timeout);
+ return schedule_timeout(timeout);
}
EXPORT_SYMBOL(schedule_timeout_killable);
signed long __sched schedule_timeout_uninterruptible(signed long timeout)
{
__set_current_state(TASK_UNINTERRUPTIBLE);
- return fschedule_timeout(timeout);
+ return schedule_timeout(timeout);
}
EXPORT_SYMBOL(schedule_timeout_uninterruptible);
@@ -1815,7 +1792,7 @@ EXPORT_SYMBOL(schedule_timeout_uninterruptible);
signed long __sched schedule_timeout_idle(signed long timeout)
{
__set_current_state(TASK_IDLE);
- return fschedule_timeout(timeout);
+ return schedule_timeout(timeout);
}
EXPORT_SYMBOL(schedule_timeout_idle);
@@ -1899,13 +1876,7 @@ void __init init_timers(void)
*/
void msleep(unsigned int msecs)
{
- unsigned long timeout;
-
- if (likely(hrtimer_resolution < NSEC_PER_SEC / HZ)) {
- while (msecs)
- msecs = schedule_msec_hrtimeout_uninterruptible(msecs);
- }
- timeout = msecs_to_jiffies(msecs) + 1;
+ unsigned long timeout = msecs_to_jiffies(msecs) + 1;
while (timeout)
timeout = schedule_timeout_uninterruptible(timeout);
@@ -1919,14 +1890,7 @@ EXPORT_SYMBOL(msleep);
*/
unsigned long msleep_interruptible(unsigned int msecs)
{
- unsigned long timeout;
-
- if (likely(hrtimer_resolution < NSEC_PER_SEC / HZ)) {
- while (msecs && !signal_pending(current))
- msecs = schedule_msec_hrtimeout_interruptible(msecs);
- return msecs;
- }
- timeout = msecs_to_jiffies(msecs) + 1;
+ unsigned long timeout = msecs_to_jiffies(msecs) + 1;
while (timeout && !signal_pending(current))
timeout = schedule_timeout_interruptible(timeout);