From 4d04ef80160fe748e746549b022854d88e55e188 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Fri, 23 Dec 2011 14:47:33 +0000 Subject: add actual required stack sizes --- kernel/kernel.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'kernel/kernel.c') diff --git a/kernel/kernel.c b/kernel/kernel.c index eb91e91..dc29f57 100644 --- a/kernel/kernel.c +++ b/kernel/kernel.c @@ -28,7 +28,7 @@ #include "queue.h" #define DEBUG 1 -#define NPRIO 4 +#define NPRIO 2 enum State { TERMINATED, RTR, RUNQ, SLEEPING, WAITING }; @@ -102,14 +102,16 @@ ISR(TIMER1_COMPA_vect, ISR_NAKED) if (tp->prio > prio) prio = tp->prio; /* put task on queue */ - tp->state = RUNQ; SIMPLEQ_INSERT_TAIL(&kernel.runq[tp->prio], tp, link); + tp->state = RUNQ; } } /* idle if all queues empty */ - if (prio == 0 && SIMPLEQ_EMPTY(&kernel.runq[0])) - SIMPLEQ_INSERT_TAIL(&kernel.runq[0], &kernel.task[0], link); + if (prio == 0 && SIMPLEQ_EMPTY(&kernel.runq[prio])) { + SIMPLEQ_INSERT_TAIL(&kernel.runq[prio], kernel.task, link); + kernel.task->state = RUNQ; + } /* pick highest priority and restore stack pointer */ kernel.current = SIMPLEQ_FIRST(&kernel.runq[prio]); @@ -148,11 +150,12 @@ init(uint8_t stack) kernel.task->release = 0; kernel.task->prio = 0; kernel.task->state = RUNQ; + + SIMPLEQ_INSERT_TAIL(&kernel.runq[0], kernel.task, link); + kernel.last = kernel.task; kernel.current = kernel.task; - SIMPLEQ_INSERT_TAIL(&kernel.runq[0], &kernel.task[0], link); - sei(); } -- cgit v1.2.3