|
|
1.1 ! root 1: /* mkpool.c - mkpool */ ! 2: ! 3: #include <conf.h> ! 4: #include <kernel.h> ! 5: #include <mark.h> ! 6: #include <bufpool.h> ! 7: ! 8: /*------------------------------------------------------------------------ ! 9: * mkpool -- allocate memory for a buffer pool and link together ! 10: *------------------------------------------------------------------------ ! 11: */ ! 12: SYSCALL mkpool(bufsiz, numbufs) ! 13: int bufsiz, numbufs; ! 14: { ! 15: PStype ps; ! 16: int poolid; ! 17: char *where; ! 18: ! 19: #ifdef MEMMARK ! 20: if ( unmarked(bpmark) ) ! 21: poolinit(); ! 22: #endif ! 23: disable(ps); ! 24: if (bufsiz<BPMINB || bufsiz>BPMAXB ! 25: || numbufs<1 || numbufs>BPMAXN ! 26: || nbpools >= NBPOOLS ! 27: || (where=(char *)getmem((bufsiz+sizeof(int))*numbufs)) ! 28: == (char *)SYSERR) { ! 29: restore(ps); ! 30: return(SYSERR); ! 31: } ! 32: poolid = nbpools++; ! 33: bptab[poolid].bpnext = where; ! 34: bptab[poolid].bpsize = bufsiz; ! 35: bptab[poolid].bpsem = screate(numbufs); ! 36: bufsiz+=sizeof(int); ! 37: for (numbufs-- ; numbufs>0 ; numbufs--,where+=bufsiz) ! 38: *( (int *) where ) = (int)(where+bufsiz); ! 39: *( (int *) where) = (int) NULL; ! 40: restore(ps); ! 41: return(poolid); ! 42: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.