diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2015-04-16 01:20:30 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2015-04-16 01:20:30 +0200 |
commit | bcf54c0bfb188214f6097cf02fe60040cf0d6d7f (patch) | |
tree | 6461807d6f88a1db15ccb2f349b8c4847f41a5e9 /sys/src/9/port/segment.c | |
parent | 46070c3122227f5fc04c9b7a29d0652600fa7074 (diff) |
kernel: pass segio error string by pointer
there's no need to waste space for a error buffer in the Segio
structure, as the segmentio kproc will be waiting for the next
command after an error and will not overwite it until we issue
another command.
Diffstat (limited to 'sys/src/9/port/segment.c')
-rw-r--r-- | sys/src/9/port/segment.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/sys/src/9/port/segment.c b/sys/src/9/port/segment.c index ad3cc0a92..3bf5c1079 100644 --- a/sys/src/9/port/segment.c +++ b/sys/src/9/port/segment.c @@ -797,11 +797,11 @@ cmddone(void *arg) static void docmd(Segio *sio, int cmd) { - sio->err[0] = 0; + sio->err = nil; sio->cmd = cmd; wakeup(&sio->cmdwait); sleep(&sio->replywait, cmddone, sio); - if(sio->err[0]) + if(sio->err != nil) error(sio->err); } @@ -838,10 +838,9 @@ segmentioproc(void *arg) ; for(done = 0; !done;){ sleep(&sio->cmdwait, cmdready, sio); - if(waserror()){ - strncpy(sio->err, up->errstr, sizeof(sio->err)-1); - sio->err[sizeof(sio->err)-1] = 0; - } else { + if(waserror()) + sio->err = up->errstr; + else { if(sio->s != nil && up->seg[sno] != sio->s){ putseg(up->seg[sno]); incref(sio->s); |