summaryrefslogtreecommitdiff
path: root/sys/src/9/port/segment.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2015-04-16 16:07:36 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2015-04-16 16:07:36 +0200
commitef647a54c006a2a748463c81132c22ecb01d2dac (patch)
tree18321fac136c84015951d9aa10225c537044c017 /sys/src/9/port/segment.c
parent39cf6b34e34e02aa9bbec28295459769175681ad (diff)
kernel: cannot interrupt segmentio commands
once we submit a command to segmentio process, we have to wait for it to complete even if we got interrupted.
Diffstat (limited to 'sys/src/9/port/segment.c')
-rw-r--r--sys/src/9/port/segment.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/sys/src/9/port/segment.c b/sys/src/9/port/segment.c
index 3bf5c1079..299d8c96b 100644
--- a/sys/src/9/port/segment.c
+++ b/sys/src/9/port/segment.c
@@ -799,8 +799,11 @@ docmd(Segio *sio, int cmd)
{
sio->err = nil;
sio->cmd = cmd;
+ while(waserror())
+ ;
wakeup(&sio->cmdwait);
sleep(&sio->replywait, cmddone, sio);
+ poperror();
if(sio->err != nil)
error(sio->err);
}