--- xinu/sys/freebuf.c 2018/04/24 17:39:02 1.1.1.1 +++ xinu/sys/freebuf.c 2018/04/24 17:39:27 1.1.1.2 @@ -9,23 +9,28 @@ * freebuf -- free a buffer that was allocated from a pool by getbuf *------------------------------------------------------------------------ */ -SYSCALL freebuf(buf) +freebuf(buf) int *buf; { - PStype ps; int poolid; +#ifdef DEBUG + dotrace("freebuf", &buf, 1); +#endif #ifdef MEMMARK if ( unmarked(bpmark) ) return(SYSERR); #endif poolid = *(--buf); - if (poolid<0 || poolid>=nbpools) + if (poolid<0 || poolid>=nbpools) { + kprintf("Bad poolid\n"); + regdump(); return(SYSERR); - disable(ps); - *buf = (int)bptab[poolid].bpnext; - bptab[poolid].bpnext = (char *)buf; - restore(ps); + } + disable(); + *buf = bptab[poolid].bpnext; + bptab[poolid].bpnext = buf; + restore(); signal(bptab[poolid].bpsem); return(OK); }