aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorBjoern B. Brandenburg <bbb@cs.unc.edu>2009-05-04 01:17:08 -0400
committerBjoern B. Brandenburg <bbb@cs.unc.edu>2009-05-04 01:17:08 -0400
commit5b0c2aac1d78f1db36c85bd5cd1e215c7cbd2dd6 (patch)
treec5183d5dc2a84fcc36cc30aa38d00bb4b0e1d892 /kernel
parente20dd584519687867aedc46535c447102e52c70e (diff)
rt domain: evil hack to avoid recursive hrtimer lock acquisition
This is a really dirty hack, but works for now since our real-time tasks do not use hrtimer_wakeup(). The need for this will go away when we port since newer versions of the Linux kernel allow timers to be activated directly in the scheduler.
Diffstat (limited to 'kernel')
-rw-r--r--kernel/hrtimer.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c
index 2bd9fc2a59..7b8576b6bd 100644
--- a/kernel/hrtimer.c
+++ b/kernel/hrtimer.c
@@ -1314,6 +1314,9 @@ void hrtimer_run_queues(void)
1314 run_hrtimer_queue(cpu_base, i); 1314 run_hrtimer_queue(cpu_base, i);
1315} 1315}
1316 1316
1317/* FIXME: this won't be needed anymore once we port to Linux > 2.6.24 */
1318void hrtimer_wakeup_hack(int onoff);
1319
1317/* 1320/*
1318 * Sleep related functions: 1321 * Sleep related functions:
1319 */ 1322 */
@@ -1324,8 +1327,11 @@ static enum hrtimer_restart hrtimer_wakeup(struct hrtimer *timer)
1324 struct task_struct *task = t->task; 1327 struct task_struct *task = t->task;
1325 1328
1326 t->task = NULL; 1329 t->task = NULL;
1327 if (task) 1330 if (task) {
1331 hrtimer_wakeup_hack(1);
1328 wake_up_process(task); 1332 wake_up_process(task);
1333 hrtimer_wakeup_hack(0);
1334 }
1329 1335
1330 return HRTIMER_NORESTART; 1336 return HRTIMER_NORESTART;
1331} 1337}