diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2015-04-16 16:07:36 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2015-04-16 16:07:36 +0200 |
commit | ef647a54c006a2a748463c81132c22ecb01d2dac (patch) | |
tree | 18321fac136c84015951d9aa10225c537044c017 /sys/src/9/port/segment.c | |
parent | 39cf6b34e34e02aa9bbec28295459769175681ad (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.c | 3 |
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); } |