From df6b68092cf2806d7c517e15d2db57b0b19a9788 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Fri, 22 Nov 2013 22:28:20 +0100 Subject: kernel: kproc error and exit catch the error() that can be thrown by sleep() and tsleep() in kprocs. add missing pexit() calls. always set the freemem argument to pexit() from kproc otherwise the process gets added to the broken list. --- sys/src/9/port/devsegment.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'sys/src/9/port/devsegment.c') diff --git a/sys/src/9/port/devsegment.c b/sys/src/9/port/devsegment.c index 2606cb8ac..e9806e933 100644 --- a/sys/src/9/port/devsegment.c +++ b/sys/src/9/port/devsegment.c @@ -530,6 +530,8 @@ segmentkproc(void *arg) incref(g->s); up->seg[sno] = g->s; + while(waserror()) + ; for(done = 0; !done;){ sleep(&g->cmdwait, cmdready, g); if(waserror()){ @@ -554,6 +556,8 @@ segmentkproc(void *arg) g->cmd = Cnone; wakeup(&g->replywait); } + + pexit("done", 1); } Dev segmentdevtab = { -- cgit v1.2.3