M gnot/fns.h => gnot/fns.h +1 -0
@@ 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);
M pc/fns.h => pc/fns.h +1 -0
@@ 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);
M port/alloc.c => port/alloc.c +4 -4
@@ 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);
M port/page.c => port/page.c +2 -0
@@ 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);
M port/sturp.c => port/sturp.c +4 -3
@@ 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]);
}
M power/fns.h => power/fns.h +1 -0
@@ 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*);
M ss/fns.h => ss/fns.h +1 -0
@@ 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)