aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kernel/kernel.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/kernel/kernel.c b/kernel/kernel.c
index b3760d4..f688823 100644
--- a/kernel/kernel.c
+++ b/kernel/kernel.c
@@ -242,9 +242,12 @@ sleep(uint32_t sec, uint32_t usec)
cli();
- kern.cur->release = NOW(kern.cycles, TCNT1) + SEC(sec) + USEC(usec);
+ /* remove current task from RTR queue */
TAILQ_REMOVE(&kern.rq, kern.cur, r_link);
+ /* set next wakeup time and put it on Wait queue */
+ kern.cur->release = NOW(kern.cycles, TCNT1) + SEC(sec) + USEC(usec);
+
/* find right place */
TAILQ_FOREACH(tp, &kern.tq, t_link)
if (SPAN(tp->release, kern.cur->release) < 0)