summaryrefslogtreecommitdiff
path: root/sys/src/9/port/segment.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2015-04-16 01:20:30 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2015-04-16 01:20:30 +0200
commitbcf54c0bfb188214f6097cf02fe60040cf0d6d7f (patch)
tree6461807d6f88a1db15ccb2f349b8c4847f41a5e9 /sys/src/9/port/segment.c
parent46070c3122227f5fc04c9b7a29d0652600fa7074 (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.c11
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);