From 0851cd0d947e3e2f35e0ab776526ab58f80c4d8c Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Mon, 12 Dec 2011 13:27:16 +0000 Subject: primitive round-robin --- kernel/kernel.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/kernel/kernel.c b/kernel/kernel.c index a4850c5..e408016 100644 --- a/kernel/kernel.c +++ b/kernel/kernel.c @@ -77,8 +77,11 @@ ISR(TIMER1_COMPA_vect, ISR_NAKED) kernel.task->deadline = nexthit; rtr = kernel.task; + t = kernel.running; + do { + if (++t > kernel.last) + t = kernel.task; - for (t = &kernel.task[1]; t <= kernel.last; t++) { /* release tasks from time-wait-queue */ if (t->state == TIMEQ) { if (DISTANCE(t->release, now) > 0) @@ -96,7 +99,7 @@ ISR(TIMER1_COMPA_vect, ISR_NAKED) #endif rtr = t; } - } + } while (t != kernel.running); /* switch task */ kernel.running->sp = SP; -- cgit v1.2.3