From 540850800c7417167e74320d4f7319acc7ef114e Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Sun, 13 May 1990 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1990-05-13 --- gnot/devpipe.c | 4 +++- gnot/trap.c | 8 +++++--- port/chan.c | 4 +++- port/devmnt.c | 4 ++-- port/devpipe.c | 4 +++- port/stream.c | 2 ++ port/sysfile.c | 1 + 7 files changed, 19 insertions(+), 8 deletions(-) diff --git a/gnot/devpipe.c b/gnot/devpipe.c index bd5634ffad95fcbbf841640949790cf680b4daad..30c47fe2bb46c6176b34e48f1a754fc265d74478 100644 --- a/gnot/devpipe.c +++ b/gnot/devpipe.c @@ -129,7 +129,9 @@ pipewrite(Chan *c, void *va, long n) postnote(u->p, 1, "sys: write on closed pipe", NExit); error(0, Egreg); } - return streamwrite(c, va, n, 0); + n = streamwrite(c, va, n, 0); + poperror(); + return n; } void diff --git a/gnot/trap.c b/gnot/trap.c index eb50678bcfbe94eb5234abe480dc28eef2657767..9766f66c7400e288ad20196f4ee2d53b765251ce 100644 --- a/gnot/trap.c +++ b/gnot/trap.c @@ -5,6 +5,7 @@ #include "fns.h" #include "ureg.h" #include "io.h" +#include "errno.h" void notify(Ureg*); void noted(Ureg**); @@ -241,6 +242,7 @@ syscall(Ureg *aur) ulong sp; ulong r0; Ureg *ur; + char *msg; u->p->insyscall = 1; ur = aur; @@ -263,8 +265,8 @@ syscall(Ureg *aur) u->nerrlab = 0; ret = -1; if(!waserror()){ - if(r1 >= sizeof systab/BY2WD){ - pprint("bad sys call number %d pc %lux\n", r1, ((Ureg*)UREGADDR)->pc); + if(r0 >= sizeof systab/BY2WD){ + pprint("bad sys call number %d pc %lux\n", r0, ((Ureg*)UREGADDR)->pc); msg = "bad sys call"; Bad: postnote(u->p, 1, msg, NDebug); @@ -277,7 +279,7 @@ syscall(Ureg *aur) } if(sp<(USTKTOP-BY2PG) || sp>(USTKTOP-4*BY2WD)) validaddr(ur->sp, 4*BY2WD, 0); - ret = (*systab[r1])((ulong*)(sp+2*BY2WD)); + ret = (*systab[r0])((ulong*)(sp+2*BY2WD)); } u->nerrlab = 0; u->p->insyscall = 0; diff --git a/port/chan.c b/port/chan.c index 374bd4e1cb8c2b82f1ac78eca627093856bc8737..0822cf250e4ec42aede3535030603af913905365 100644 --- a/port/chan.c +++ b/port/chan.c @@ -490,8 +490,10 @@ namec(char *name, int amode, int omode, ulong perm) switch(amode){ case Aaccess: - if((nc=walk(c, elem, mntok)) == 0) + if((nc=walk(c, elem, mntok)) == 0){ + print("%d pc %lux\n", u->nerrlab, u->errlab[u->nerrlab-1].pc); error(0, Enonexist); + } c = nc; break; diff --git a/port/devmnt.c b/port/devmnt.c index e2f255d751729a80adf45e58e1f95f67ec2985d4..d870459ae5eebb2fdd5cc260fd6e0b5238f329cc 100644 --- a/port/devmnt.c +++ b/port/devmnt.c @@ -255,10 +255,10 @@ mntclone(Chan *c, Chan *nc) nc->mnt = c->mnt; nc->mchan = c->mchan; nc->mqid = c->qid; - if(new) - poperror(); mhfree(mh); poperror(); + if(new) + poperror(); incref(m); return nc; } diff --git a/port/devpipe.c b/port/devpipe.c index bd5634ffad95fcbbf841640949790cf680b4daad..30c47fe2bb46c6176b34e48f1a754fc265d74478 100644 --- a/port/devpipe.c +++ b/port/devpipe.c @@ -129,7 +129,9 @@ pipewrite(Chan *c, void *va, long n) postnote(u->p, 1, "sys: write on closed pipe", NExit); error(0, Egreg); } - return streamwrite(c, va, n, 0); + n = streamwrite(c, va, n, 0); + poperror(); + return n; } void diff --git a/port/stream.c b/port/stream.c index 72844a3f170413f4d6968add745d53c221c551e9..16c8e83a0df887775e84c9bbceb5874854f9052d 100644 --- a/port/stream.c +++ b/port/stream.c @@ -192,6 +192,8 @@ freeb(Block *bp) Bclass *bcp; int tries; + if((bp->flags&S_CLASS) >= Nclass) + panic("freeb class"); bcp = &bclass[bp->flags & S_CLASS]; lock(bcp); bp->rptr = bp->wptr = 0; diff --git a/port/sysfile.c b/port/sysfile.c index a3f1c6c8a535ee825be9a67316d69830e8662959..fe41dfde5129630c96bc3836c301c7b105ef1d62 100644 --- a/port/sysfile.c +++ b/port/sysfile.c @@ -283,6 +283,7 @@ sysstat(ulong *arg) validaddr(arg[0], 1, 0); c = namec((char*)arg[0], Aaccess, 0, 0); if(waserror()){ +print("stat error\n"); close(c); nexterror(); }