summaryrefslogtreecommitdiff
path: root/src/kernel/task/timer.c
diff options
context:
space:
mode:
authorAlexis211 <alexis211@gmail.com>2010-08-10 21:04:39 +0200
committerAlexis211 <alexis211@gmail.com>2010-08-10 21:04:39 +0200
commite7f5de73e8b3fe792a17c34a6c0bb85a84b0f50e (patch)
treee2b5794637fd01a2af9bb27eb502d496df01896e /src/kernel/task/timer.c
parentb2c444834ef0a384587a6a7d196eeb073825eac2 (diff)
downloadTCE-e7f5de73e8b3fe792a17c34a6c0bb85a84b0f50e.tar.gz
TCE-e7f5de73e8b3fe792a17c34a6c0bb85a84b0f50e.zip
Changed idt_waitIrq to support multiple waiting threads.
Diffstat (limited to 'src/kernel/task/timer.c')
-rw-r--r--src/kernel/task/timer.c5
1 files changed, 1 insertions, 4 deletions
diff --git a/src/kernel/task/timer.c b/src/kernel/task/timer.c
index 643ca54..65ad06a 100644
--- a/src/kernel/task/timer.c
+++ b/src/kernel/task/timer.c
@@ -61,10 +61,7 @@ void thread_sleep(uint32_t msecs) {
sf->wakeup_time = timer_time() + msecs;
sf->thread = current_thread;
//Insert it at the right place
- if (sleeping_threads == 0) {
- sleeping_threads = sf;
- sf->next = 0;
- } else if (sleeping_threads->wakeup_time >= sf->wakeup_time) {
+ if (sleeping_threads == 0 || sleeping_threads->wakeup_time >= sf->wakeup_time) {
sf->next = sleeping_threads;
sleeping_threads = sf;
} else {