From 48aeb271f77ed8239c8461de3c3c697044387b2f Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Sat, 16 Jan 1993 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1993-01-16 --- gnot/fns.h | 1 + pc/fns.h | 1 + port/alloc.c | 8 ++++---- port/page.c | 2 ++ port/sturp.c | 7 ++++--- power/fns.h | 1 + ss/fns.h | 1 + 7 files changed, 14 insertions(+), 7 deletions(-) diff --git a/gnot/fns.h b/gnot/fns.h index 924b972bbe21c5e11ae5c973b321cd526320fcdf..658f25d04bc812bc37d9497bc2887d8a56b7e6b6 100644 --- a/gnot/fns.h +++ b/gnot/fns.h @@ -26,6 +26,7 @@ KMap* kmap(Page*); void kmapinit(void); void kunmap(KMap*); void mmuinit(void); +#define mmunewpage(x) void mousebuttons(int); void mouseclock(void); int portprobe(char*, int, int, int, long); diff --git a/pc/fns.h b/pc/fns.h index 6553720c6e27a8386ea5a6b095c7603dd02a2457..a510d4276ad8241419408345fdbc8a906197d03f 100644 --- a/pc/fns.h +++ b/pc/fns.h @@ -40,6 +40,7 @@ void* l1update(uchar*, uchar*, long); void* l2update(uchar*, uchar*, long); void mathinit(void); void mmuinit(void); +#define mmunewpage(x) int modem(int); void mousectl(char*); uchar nvramread(int); diff --git a/port/alloc.c b/port/alloc.c index 1ee2e42ef5e31813d4db4cec80a8290e080eb439..745773ede9f4b141047dd130ed1add34ed69e806 100644 --- a/port/alloc.c +++ b/port/alloc.c @@ -277,7 +277,7 @@ good: unlock(&arena); if(bp->magic != 0) - panic("malloc"); + panic("malloc %lux", bp->magic); bp->magic = Magic2n; @@ -365,12 +365,12 @@ free(void *ptr) Bucket *bp, **l; bp = (Bucket*)((ulong)ptr - bdatoff); + l = &arena.btab[bp->size]; + + lock(&arena); if(bp->magic != Magic2n) panic("free"); - bp->magic = 0; - lock(&arena); - l = &arena.btab[bp->size]; bp->next = *l; *l = bp; unlock(&arena); diff --git a/port/page.c b/port/page.c index 704ee6855e12d7d77f72041a5bc1515e0bdc8d27..b8acfa6c21fcde96083caf256924f4503b710883 100644 --- a/port/page.c +++ b/port/page.c @@ -122,6 +122,7 @@ retry: p->modref = 0; for(i = 0; i < MAXMACH; i++) p->cachectl[i] = PG_NOFLUSH; + mmunewpage(p); unlock(p); if(clear){ @@ -248,6 +249,7 @@ duppage(Page *p) /* Always call with p locked */ uncachepage(np); np->va = p->va; np->daddr = p->daddr; + mmunewpage(np); copypage(p, np); cachepage(np, p->image); unlock(np); diff --git a/port/sturp.c b/port/sturp.c index 7b967b2fde322793311b788594c99e5ecbfdb04d..da712ab108038ff58cfa4f9497a906ee929cba62 100644 --- a/port/sturp.c +++ b/port/sturp.c @@ -237,11 +237,14 @@ urpclose(Queue *q) /* * free all staged but unsent messages */ - for(i = 0; i < 7; i++) + for(i = 0; i < 7; i++){ + qlock(&up->xl[i]); if(up->xb[i]){ freeb(up->xb[i]); up->xb[i] = 0; } + qunlock(&up->xl[i]); + } qunlock(&up->xmit); qlock(up); @@ -890,8 +893,6 @@ rcvack(Urp *up, int msg) qlock(&up->xl[i]); if(up->xb[i]) freeb(up->xb[i]); - else - urpvomit("rcvack", up); up->xb[i] = 0; qunlock(&up->xl[i]); } diff --git a/power/fns.h b/power/fns.h index 4057e329e8334432e28f7c03900d32b6bf51ad7d..89e7d7f3aac398e5a38fdfa52a99a28194ff04e9 100644 --- a/power/fns.h +++ b/power/fns.h @@ -39,6 +39,7 @@ void lanceparity(void); void lancesetup(Lance*); void launchinit(void); void launch(int); +#define mmunewpage(x) int muxlock(int*, int*); void newstart(void); int newtlbpid(Proc*); diff --git a/ss/fns.h b/ss/fns.h index 35593e3811e3f1cb62454fc208aa7b84f236f82b..8ff54845f2aac9dd183510e0dd9289a33acf5f5b 100644 --- a/ss/fns.h +++ b/ss/fns.h @@ -43,6 +43,7 @@ void lanceintr(void); void lancesetup(Lance*); void lancetoggle(void); void mmuinit(void); +#define mmunewpage(x) void mousebuttons(int); void printinit(void); #define procrestore(p)