|
|
1.1 root 1: /* freebuf.c - freebuf */
2:
3: #include <conf.h>
4: #include <kernel.h>
5: #include <mark.h>
6: #include <bufpool.h>
7:
8: /*------------------------------------------------------------------------
9: * freebuf -- free a buffer that was allocated from a pool by getbuf
10: *------------------------------------------------------------------------
11: */
12: SYSCALL freebuf(buf)
13: int *buf;
14: {
15: PStype ps;
16: int poolid;
17:
18: #ifdef MEMMARK
19: if ( unmarked(bpmark) )
20: return(SYSERR);
21: #endif
22: poolid = *(--buf);
23: if (poolid<0 || poolid>=nbpools)
24: return(SYSERR);
25: disable(ps);
26: *buf = (int)bptab[poolid].bpnext;
27: bptab[poolid].bpnext = (char *)buf;
28: restore(ps);
29: signal(bptab[poolid].bpsem);
30: return(OK);
31: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.