From 2d68478c93d79ca401e1870c800d542a42546885 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Fri, 16 Mar 2012 13:50:32 +0000 Subject: fix running task # --- kernel/kernel.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/kernel/kernel.c b/kernel/kernel.c index c188537..4eb1cfe 100644 --- a/kernel/kernel.c +++ b/kernel/kernel.c @@ -39,7 +39,8 @@ struct task { uint32_t release; /* release time */ uint16_t sp; /* stack pointer */ - uint8_t *stack; + uint8_t *stack; /* stack area */ + uint8_t id; /* task id */ TAILQ_ENTRY(task) r_link; TAILQ_ENTRY(task) t_link; TAILQ_ENTRY(task) w_link; @@ -127,6 +128,7 @@ init(void) TAILQ_INIT(&kern.wq[i]); kern.idle = calloc(1, sizeof(struct task)); + kern.idle->id = 0; kern.idle->release = 0; kern.idle->sp = SP; /* XXX not needed at all */ TAILQ_INSERT_TAIL(&kern.rq, kern.idle, r_link); @@ -143,6 +145,7 @@ exec(void (*fun)(void *), void *args, uint8_t stack) { struct task *tp; uint8_t *sp; + static uint8_t id = 0; cli(); @@ -163,6 +166,7 @@ exec(void (*fun)(void *), void *args, uint8_t stack) sp -= 6; memset(sp, 0, 6); /* r26-r31 */ + tp->id = ++id; tp->release = 0; tp->sp = (uint16_t)sp; /* SP */ TAILQ_INSERT_TAIL(&kern.rq, tp, r_link); @@ -242,7 +246,7 @@ now(void) uint8_t running(void) { - return kern.cur - kern.idle; + return kern.cur->id; } void -- cgit v1.2.3