aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/futex.c
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2008-10-22 09:48:06 +0200
committerThomas Gleixner <tglx@linutronix.de>2008-10-22 09:48:06 +0200
commit268a3dcfea2077fca60d3715caa5c96f9b5e6ea7 (patch)
treec2232774508424e677e27f296090a68c775e4669 /kernel/futex.c
parentc4bd822e7b12a9008241d76db45b665f2fef180c (diff)
parent592aa999d6a272856c9bfbdaac0cfba1bb37c24c (diff)
downloadkernel_samsung_smdk4412-268a3dcfea2077fca60d3715caa5c96f9b5e6ea7.zip
kernel_samsung_smdk4412-268a3dcfea2077fca60d3715caa5c96f9b5e6ea7.tar.gz
kernel_samsung_smdk4412-268a3dcfea2077fca60d3715caa5c96f9b5e6ea7.tar.bz2
Merge branch 'timers/range-hrtimers' into v28-range-hrtimers-for-linus-v2
Conflicts: kernel/time/tick-sched.c Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'kernel/futex.c')
-rw-r--r--kernel/futex.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/kernel/futex.c b/kernel/futex.c
index 7d1136e..8af1002 100644
--- a/kernel/futex.c
+++ b/kernel/futex.c
@@ -1296,13 +1296,16 @@ static int futex_wait(u32 __user *uaddr, struct rw_semaphore *fshared,
if (!abs_time)
schedule();
else {
+ unsigned long slack;
+ slack = current->timer_slack_ns;
+ if (rt_task(current))
+ slack = 0;
hrtimer_init_on_stack(&t.timer, CLOCK_MONOTONIC,
HRTIMER_MODE_ABS);
hrtimer_init_sleeper(&t, current);
- t.timer.expires = *abs_time;
+ hrtimer_set_expires_range_ns(&t.timer, *abs_time, slack);
- hrtimer_start(&t.timer, t.timer.expires,
- HRTIMER_MODE_ABS);
+ hrtimer_start_expires(&t.timer, HRTIMER_MODE_ABS);
if (!hrtimer_active(&t.timer))
t.task = NULL;
@@ -1404,7 +1407,7 @@ static int futex_lock_pi(u32 __user *uaddr, struct rw_semaphore *fshared,
hrtimer_init_on_stack(&to->timer, CLOCK_REALTIME,
HRTIMER_MODE_ABS);
hrtimer_init_sleeper(to, current);
- to->timer.expires = *time;
+ hrtimer_set_expires(&to->timer, *time);
}
q.pi_state = NULL;