From fcb6db9fcd6c6ddb0a30fe7a6f69dc79f5304927 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Wed, 13 Jun 2012 08:53:00 +0000 Subject: fix signal --- kernel/kernel.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/kernel/kernel.c b/kernel/kernel.c index fb3521a..395aa5f 100644 --- a/kernel/kernel.c +++ b/kernel/kernel.c @@ -250,10 +250,9 @@ signal(uint8_t chan) if ((tp = TAILQ_FIRST(&kern.wq[chan]))) { /* release first waiting task from wait queue */ TAILQ_REMOVE(&kern.wq[chan], tp, w_link); - kern.cur->prio = kern.cur->defprio; - kern.cur->rq = &kern.rq[kern.cur->prio]; - TAILQ_INSERT_TAIL(kern.cur->rq, tp, r_link); - swtch(); + tp->prio = tp->defprio; + tp->rq = &kern.rq[tp->prio]; + TAILQ_INSERT_TAIL(tp->rq, tp, r_link); } else { /* clear semaphore and continue */ kern.semaphore &= ~_BV(chan); -- cgit v1.2.3