summaryrefslogtreecommitdiff
path: root/kernel/rtmutex.c
diff options
context:
space:
mode:
authorPierre Peiffer <pierre.peiffer@bull.net>2007-05-09 02:35:02 -0700
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-05-09 12:30:55 -0700
commitc19384b5b296905d4988c7c684ff540a0f9d65be (patch)
tree071cfe0855d409d63de80ec1b9b663738efb09de /kernel/rtmutex.c
parentec92d08292d3e9b0823eba138a4564d2d39f25c7 (diff)
downloadlinux-3.10-c19384b5b296905d4988c7c684ff540a0f9d65be.tar.gz
linux-3.10-c19384b5b296905d4988c7c684ff540a0f9d65be.tar.bz2
linux-3.10-c19384b5b296905d4988c7c684ff540a0f9d65be.zip
Make futex_wait() use an hrtimer for timeout
This patch modifies futex_wait() to use an hrtimer + schedule() in place of schedule_timeout(). schedule_timeout() is tick based, therefore the timeout granularity is the tick (1 ms, 4 ms or 10 ms depending on HZ). By using a high resolution timer for timeout wakeup, we can attain a much finer timeout granularity (in the microsecond range). This parallels what is already done for futex_lock_pi(). The timeout passed to the syscall is no longer converted to jiffies and is therefore passed to do_futex() and futex_wait() as an absolute ktime_t therefore keeping nanosecond resolution. Also this removes the need to pass the nanoseconds timeout part to futex_lock_pi() in val2. In futex_wait(), if there is no timeout then a regular schedule() is performed. Otherwise, an hrtimer is fired before schedule() is called. [akpm@linux-foundation.org: fix `make headers_check'] Signed-off-by: Sebastien Dugue <sebastien.dugue@bull.net> Signed-off-by: Pierre Peiffer <pierre.peiffer@bull.net> Cc: Ingo Molnar <mingo@elte.hu> Cc: Ulrich Drepper <drepper@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'kernel/rtmutex.c')
0 files changed, 0 insertions, 0 deletions