From 17fa9164ec9b3e12e01c47ff7bcf3f35487fc407 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Mon, 5 Mar 2012 16:12:40 +0000 Subject: minor changes --- kernel/dmx.c | 2 +- kernel/kernel.c | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/kernel/dmx.c b/kernel/dmx.c index c7eda70..64389ec 100644 --- a/kernel/dmx.c +++ b/kernel/dmx.c @@ -40,7 +40,7 @@ main() lcd_init(); init(48); - exec(heartbeat, NULL, 56); + exec(heartbeat, NULL, 48); exec(rgb, &rgbargs, 72); exec(pwm, &pwmargs[0], 64); exec(pwm, &pwmargs[1], 64); diff --git a/kernel/kernel.c b/kernel/kernel.c index 3d2873a..d35fa3e 100644 --- a/kernel/kernel.c +++ b/kernel/kernel.c @@ -47,7 +47,7 @@ struct task { struct kernel { TAILQ_HEAD(queue, task) runq, timeq, waitq[SEMAPHORES]; struct task idle[1 + TASKS]; - struct task *nextfree; + struct task *last; struct task *current; uint16_t cycles; uint8_t *freemem; @@ -139,19 +139,19 @@ init(uint8_t stack) DDRB |= _BV(PB1); /* DEBUG */ #endif - memset(&kernel, 0, sizeof(kernel)); - TAILQ_INIT(&kernel.runq); TAILQ_INIT(&kernel.timeq); for (i = 0; i < SEMAPHORES; i++) TAILQ_INIT(&kernel.waitq[i]); - kernel.cycles = 0; - kernel.nextfree = kernel.idle + 1; - kernel.freemem = (void *)(RAMEND - stack); kernel.idle->release = 0; + kernel.idle->sp = SP; /* XXX not needed at all */ TAILQ_INSERT_TAIL(&kernel.runq, kernel.idle, r_link); kernel.current = TAILQ_FIRST(&kernel.runq); + kernel.last = kernel.idle; + + kernel.cycles = 0; + kernel.freemem = (uint8_t *)(RAMEND - stack); kernel.semaphore = 0; kernel.rqlen = 0; @@ -167,7 +167,7 @@ exec(void (*fun)(void *), void *args, uint8_t stack) cli(); sp = kernel.freemem; - kernel.freemem -= stack; + kernel.freemem -= stack + 2; /* +PC */ /* initialize stack */ *sp-- = LO8(fun); /* PC(lo) */ @@ -182,7 +182,7 @@ exec(void (*fun)(void *), void *args, uint8_t stack) sp -= 6; memset(sp, 0, 6); /* r26-r31 */ - tp = kernel.nextfree++; + tp = ++kernel.last; tp->release = 0; tp->sp = (uint16_t)sp; /* SP */ TAILQ_INSERT_TAIL(&kernel.runq, tp, r_link); -- cgit v1.2.3