diff options
author | Arjan van de Ven <arjan@linux.intel.com> | 2008-09-08 09:03:57 -0700 |
---|---|---|
committer | Arjan van de Ven <arjan@linux.intel.com> | 2008-09-11 07:17:00 -0700 |
commit | ae4b748e81b7e366f04f55229d5e372e372c33af (patch) | |
tree | 27ce1d7a205df69c79bbdd35fc721401d79a13cb /kernel/futex.c | |
parent | 3bd012060f962567aadb52b27b2fc8fdc91102c7 (diff) | |
download | lwn-ae4b748e81b7e366f04f55229d5e372e372c33af.tar.gz lwn-ae4b748e81b7e366f04f55229d5e372e372c33af.zip |
hrtimer: make the futex() system call use the per process slack value
This patch makes the futex() system call use the per process
slack value; with this users are able to externally control existing
applications to reduce the wakeup rate.
Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Diffstat (limited to 'kernel/futex.c')
-rw-r--r-- | kernel/futex.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/kernel/futex.c b/kernel/futex.c index 4cd5b4319b04..8af10027514b 100644 --- a/kernel/futex.c +++ b/kernel/futex.c @@ -1296,10 +1296,14 @@ 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); - hrtimer_set_expires(&t.timer, *abs_time); + hrtimer_set_expires_range_ns(&t.timer, *abs_time, slack); hrtimer_start_expires(&t.timer, HRTIMER_MODE_ABS); if (!hrtimer_active(&t.timer)) |