| plan 9 kernel history: overview | file list | diff list |
1995/0902/port/qio.c (diff list | history)
| 1995/0714/sys/src/9/port/qio.c:138,144 – 1995/0902/sys/src/9/port/qio.c:138,146 (short | long | prev | next) | ||
| 1993/0526 | } /* | |
| 1994/0208 |
| |
| 1995/0902 | * allocate blocks (round data base address to 64 bit boundary). * if mallocz gives us more than we asked for, leave room at the front * for header. | |
| 1993/0526 | */ Block* allocb(int size) | |
| 1995/0714/sys/src/9/port/qio.c:145,153 – 1995/0902/sys/src/9/port/qio.c:147,156 | ||
| 1993/0526 | { Block *b; | |
| 1994/0208 | ulong addr; | |
| 1995/0902 | int n; | |
| 1993/0526 | ||
| 1994/0322 |
| |
| 1995/0902 | n = sizeof(Block) + size + (BY2V-1); b = mallocz(n, 0); | |
| 1993/0526 | if(b == 0) exhausted("Blocks"); | |
| 1994/0322 | memset(b, 0, sizeof(Block)); | |
| 1995/0714/sys/src/9/port/qio.c:155,165 – 1995/0902/sys/src/9/port/qio.c:158,195 | ||
| 1994/0208 | addr = (ulong)b; | |
| 1994/0322 | addr = ROUND(addr + sizeof(Block), BY2V); | |
| 1994/0208 | b->base = (uchar*)addr; | |
| 1995/0902 | b->lim = ((uchar*)b) + msize(b); | |
| 1993/0804 | b->rp = b->base; | |
| 1994/0208 |
| |
| 1995/0902 | n = b->lim - b->base - size; b->rp += n & ~(BY2V-1); b->wp = b->rp; | |
| 1993/0526 | return b; | |
| 1995/0902 | } ulong bpadoverhead; /* * pad a block to the front */ Block* bpad(Block *bp, int size) { int n; Block *nbp; if(bp->rp - bp->base > size) return bp; n = bp->wp - bp->rp; bpadoverhead += n; nbp = allocb(size+n); nbp->rp += size; nbp->wp = nbp->rp; memmove(nbp->wp, bp->rp, n); nbp->wp += n; freeb(bp); return nbp; | |
| 1993/0526 | } /* | |