diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2006-06-27 11:54:56 +0200 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-06-28 02:32:47 +0200 |
commit | 61a87122869b6340a63b6f9f84097d3688604b90 (patch) | |
tree | 11d60d29763a42abd66453a920cc06bebc852427 /kernel/rtmutex_common.h | |
parent | [PATCH] pi-futex: rt mutex debug (diff) | |
download | linux-61a87122869b6340a63b6f9f84097d3688604b90.tar.xz linux-61a87122869b6340a63b6f9f84097d3688604b90.zip |
[PATCH] pi-futex: rt mutex tester
RT-mutex tester: scriptable tester for rt mutexes, which allows userspace
scripting of mutex unit-tests (and dynamic tests as well), using the actual
rt-mutex implementation of the kernel.
[akpm@osdl.org: fixlet]
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'kernel/rtmutex_common.h')
-rw-r--r-- | kernel/rtmutex_common.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/kernel/rtmutex_common.h b/kernel/rtmutex_common.h index 50eed60eb085..e068024eeffc 100644 --- a/kernel/rtmutex_common.h +++ b/kernel/rtmutex_common.h @@ -15,6 +15,28 @@ #include <linux/rtmutex.h> /* + * The rtmutex in kernel tester is independent of rtmutex debugging. We + * call schedule_rt_mutex_test() instead of schedule() for the tasks which + * belong to the tester. That way we can delay the wakeup path of those + * threads to provoke lock stealing and testing of complex boosting scenarios. + */ +#ifdef CONFIG_RT_MUTEX_TESTER + +extern void schedule_rt_mutex_test(struct rt_mutex *lock); + +#define schedule_rt_mutex(_lock) \ + do { \ + if (!(current->flags & PF_MUTEX_TESTER)) \ + schedule(); \ + else \ + schedule_rt_mutex_test(_lock); \ + } while (0) + +#else +# define schedule_rt_mutex(_lock) schedule() +#endif + +/* * This is the control structure for tasks blocked on a rt_mutex, * which is allocated on the kernel stack on of the blocked task. * |