| plan 9 kernel history: overview | file list | diff list |
2002/0114/port/allocb.c (diff list | history)
| 1999/0710/sys/src/9/port/allocb.c:19,25 – 1999/0712/sys/src/9/port/allocb.c:19,25 (short | long) | ||
| 1999/0710 | } ialloc; /* | |
| 1999/0712 | * allocate blocks, round the data base up to a multiple of BLOCKALIGN. | |
| 1999/0710 | */ Block* allocb(int size) | |
| 1999/0710/sys/src/9/port/allocb.c:29,35 – 1999/0712/sys/src/9/port/allocb.c:29,35 | ||
| 1999/0710 | int n; n = sizeof(Block) + size; | |
| 1999/0712 | b = mallocz(n+Hdrspc, 0); | |
| 1999/0710 | if(b == 0) exhausted("Blocks"); memset(b, 0, sizeof(Block)); | |
| 1999/0710/sys/src/9/port/allocb.c:72,78 – 1999/0712/sys/src/9/port/allocb.c:72,78 | ||
| 1999/0710 | } n = sizeof(Block) + size; | |
| 1999/0712 | b = mallocz(n+Hdrspc, 0); | |
| 1999/0710 | if(b == 0){ print("iallocb: no memory %lud/%lud\n", ialloc.bytes, conf.ialloc); | |
| 1999/0712/sys/src/9/port/allocb.c:19,25 – 1999/0713/sys/src/9/port/allocb.c:19,25 (short | long) | ||
| 1999/0710 | } ialloc; /* | |
| 1999/0712 |
| |
| 1999/0713 | * allocate blocks, round the data base upt to a multiple of BLOCKALIGN. | |
| 1999/0710 | */ Block* allocb(int size) | |
| 1999/0712/sys/src/9/port/allocb.c:29,35 – 1999/0713/sys/src/9/port/allocb.c:29,35 | ||
| 1999/0710 | int n; n = sizeof(Block) + size; | |
| 1999/0712 |
| |
| 1999/0713 | b = malloc(n+Hdrspc); | |
| 1999/0710 | if(b == 0) exhausted("Blocks"); memset(b, 0, sizeof(Block)); | |
| 1999/0712/sys/src/9/port/allocb.c:72,78 – 1999/0713/sys/src/9/port/allocb.c:72,78 | ||
| 1999/0710 | } n = sizeof(Block) + size; | |
| 1999/0712 |
| |
| 1999/0713 | b = malloc(n+Hdrspc); | |
| 1999/0710 | if(b == 0){ print("iallocb: no memory %lud/%lud\n", ialloc.bytes, conf.ialloc); | |
| 1999/0713/sys/src/9/port/allocb.c:50,56 – 1999/0714/sys/src/9/port/allocb.c:50,56 (short | long) | ||
|
Change tagwithpc to setmalloctag.
rsc Fri Mar 4 12:44:25 2005 | ||
| 1999/0710 | if(b->rp < b->base) panic("allocb"); b->wp = b->rp; | |
| 1999/0714 | setmalloctag(b, getcallerpc(&size)); | |
| 1999/0710 | return b; } | |
| 1999/0713/sys/src/9/port/allocb.c:102,108 – 1999/0714/sys/src/9/port/allocb.c:102,108 | ||
| 1999/0710 | ilock(&ialloc); ialloc.bytes += b->lim - b->base; iunlock(&ialloc); | |
| 1999/0714 | setmalloctag(b, getcallerpc(&size)); | |
| 1999/0710 | return b; } | |
| 1999/0714/sys/src/9/port/allocb.c:19,25 – 1999/1110/sys/src/9/port/allocb.c:19,25 (short | long) | ||
| 1999/0710 | } ialloc; /* | |
| 1999/0713 |
| |
| 1999/1110 | * allocate blocks, round the data base up to a multiple of BLOCKALIGN. | |
| 1999/0710 | */ Block* allocb(int size) | |
| 1999/1110/sys/src/9/port/allocb.c:18,39 – 2001/0504/sys/src/9/port/allocb.c:18,37 (short | long) | ||
| 1999/0710 | ulong bytes; } ialloc; | |
| 1999/1110 |
| |
| 1999/0710 |
| |
| 2001/0504 | static Block* _allocb(int size) | |
| 1999/0710 | { Block *b; ulong addr; | |
| 1999/0713 |
| |
| 1999/0710 |
| |
| 2001/0504 | if((b = mallocz(sizeof(Block)+size+Hdrspc, 0)) == nil) return nil; | |
| 1999/0710 | ||
| 2001/0504 | b->next = nil; b->list = nil; b->free = 0; b->flag = 0; | |
| 1999/0710 | /* align start of data portion by rounding up */ addr = (ulong)b; addr = ROUND(addr + sizeof(Block), BLOCKALIGN); | |
| 1999/1110/sys/src/9/port/allocb.c:48,69 – 2001/0504/sys/src/9/port/allocb.c:46,79 | ||
| 1999/0710 | /* leave sluff at beginning for added headers */ b->rp = b->lim - ROUND(size, BLOCKALIGN); if(b->rp < b->base) | |
| 2001/0504 | panic("_allocb"); | |
| 1999/0710 | b->wp = b->rp; | |
| 2001/0504 | return b; } Block* allocb(int size) { Block *b; /* * Check in a process and wait until successful. * Can still error out of here, though. */ if(up == nil) panic("allocb without up: %uX\n", getcallerpc(&size)); if((b = _allocb(size)) == nil) panic("allocb: no memory\n"); | |
| 1999/0714 | setmalloctag(b, getcallerpc(&size)); | |
| 1999/0710 | return b; } | |
| 1999/1110/sys/src/9/port/allocb.c:71,108 – 2001/0504/sys/src/9/port/allocb.c:81,97 | ||
| 1999/0710 | return 0; } | |
| 1999/0713 |
| |
| 1999/0710 |
| |
| 2001/0504 | if((b = _allocb(size)) == nil){ | |
| 1999/0710 | print("iallocb: no memory %lud/%lud\n", ialloc.bytes, conf.ialloc); return nil; } | |
| 2001/0504 | setmalloctag(b, getcallerpc(&size)); | |
| 1999/0710 | b->flag = BINTR; ilock(&ialloc); ialloc.bytes += b->lim - b->base; iunlock(&ialloc); | |
| 1999/0714 |
| |
| 1999/0710 | return b; } | |
| 2001/0504/sys/src/9/port/allocb.c:4,10 – 2001/0527/sys/src/9/port/allocb.c:4,9 (short | long) | ||
| 1999/0710 | #include "dat.h" #include "fns.h" #include "error.h" | |
| 2001/0527/sys/src/9/port/allocb.c:63,69 – 2001/0804/sys/src/9/port/allocb.c:63,73 (short | long) | ||
| 2001/0504 | if(up == nil) panic("allocb without up: %uX\n", getcallerpc(&size)); if((b = _allocb(size)) == nil) | |
| 2001/0804 | { xsummary(); mallocsummary(); panic("allocb: no memory for %d bytes\n", size); } | |
| 1999/0714 | setmalloctag(b, getcallerpc(&size)); | |
| 1999/0710 | return b; | |
| 2001/0804/sys/src/9/port/allocb.c:62,73 – 2001/0822/sys/src/9/port/allocb.c:62,72 (short | long) | ||
| 2001/0504 | */ if(up == nil) panic("allocb without up: %uX\n", getcallerpc(&size)); | |
| 2001/0804 |
| |
| 2001/0822 | if((b = _allocb(size)) == nil){ xsummary(); mallocsummary(); | |
| 2001/0804 | panic("allocb: no memory for %d bytes\n", size); | |
| 2001/0822 | } | |
| 1999/0714 | setmalloctag(b, getcallerpc(&size)); | |
| 1999/0710 | return b; | |
| 2001/0822/sys/src/9/port/allocb.c:61,67 – 2002/0114/sys/src/9/port/allocb.c:61,67 (short | long) | ||
|
Bug fix: print format.
rsc Fri Mar 4 12:44:25 2005 | ||
| 2001/0504 | * Can still error out of here, though. */ if(up == nil) | |
| 2002/0114 | panic("allocb without up: %luX\n", getcallerpc(&size)); | |
| 2001/0822 | if((b = _allocb(size)) == nil){ xsummary(); mallocsummary(); | |
| 2002/0114/sys/src/9/port/allocb.c:76,91 – 2002/0711/sys/src/9/port/allocb.c:76,94 (short | long) | ||
| 1999/0710 | iallocb(int size) { Block *b; | |
| 2002/0711 | static int m1, m2; | |
| 1999/0710 | if(ialloc.bytes > conf.ialloc){ | |
| 2002/0711 | if((m1++%10000)==0) print("iallocb: limited %lud/%lud\n", ialloc.bytes, conf.ialloc); | |
| 1999/0710 | return 0; } | |
| 2001/0504 | if((b = _allocb(size)) == nil){ | |
| 1999/0710 |
| |
| 2002/0711 | if((m2++%10000)==0) print("iallocb: no memory %lud/%lud\n", ialloc.bytes, conf.ialloc); | |
| 1999/0710 | return nil; } | |
| 2001/0504 | setmalloctag(b, getcallerpc(&size)); | |