zalloc.c (223854) | zalloc.c (223905) |
---|---|
1/* 2 * This module derived from code donated to the FreeBSD Project by 3 * Matthew Dillon <dillon@backplane.com> 4 * 5 * Copyright (c) 1998 The FreeBSD Project 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 14 unchanged lines hidden (view full) --- 23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 * SUCH DAMAGE. 28 */ 29 30#include <sys/cdefs.h> | 1/* 2 * This module derived from code donated to the FreeBSD Project by 3 * Matthew Dillon <dillon@backplane.com> 4 * 5 * Copyright (c) 1998 The FreeBSD Project 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 14 unchanged lines hidden (view full) --- 23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 * SUCH DAMAGE. 28 */ 29 30#include <sys/cdefs.h> |
31__FBSDID("$FreeBSD: head/lib/libstand/zalloc.c 223854 2011-07-08 01:35:33Z avatar $"); | 31__FBSDID("$FreeBSD: head/lib/libstand/zalloc.c 223905 2011-07-10 07:25:34Z avatar $"); |
32 33/* 34 * LIB/MEMORY/ZALLOC.C - self contained low-overhead memory pool/allocation 35 * subsystem 36 * 37 * This subsystem implements memory pools and memory allocation 38 * routines. 39 * --- 32 unchanged lines hidden (view full) --- 72 73/* 74 * znalloc() - allocate memory (without zeroing) from pool. Call reclaim 75 * and retry if appropriate, return NULL if unable to allocate 76 * memory. 77 */ 78 79void * | 32 33/* 34 * LIB/MEMORY/ZALLOC.C - self contained low-overhead memory pool/allocation 35 * subsystem 36 * 37 * This subsystem implements memory pools and memory allocation 38 * routines. 39 * --- 32 unchanged lines hidden (view full) --- 72 73/* 74 * znalloc() - allocate memory (without zeroing) from pool. Call reclaim 75 * and retry if appropriate, return NULL if unable to allocate 76 * memory. 77 */ 78 79void * |
80znalloc(MemPool *mp, iaddr_t bytes) | 80znalloc(MemPool *mp, uintptr_t bytes) |
81{ 82 /* 83 * align according to pool object size (can be 0). This is 84 * inclusive of the MEMNODE_SIZE_MASK minimum alignment. 85 * 86 */ 87 bytes = (bytes + MEMNODE_SIZE_MASK) & ~MEMNODE_SIZE_MASK; 88 --- 42 unchanged lines hidden (view full) --- 131 return(NULL); 132} 133 134/* 135 * zfree() - free previously allocated memory 136 */ 137 138void | 81{ 82 /* 83 * align according to pool object size (can be 0). This is 84 * inclusive of the MEMNODE_SIZE_MASK minimum alignment. 85 * 86 */ 87 bytes = (bytes + MEMNODE_SIZE_MASK) & ~MEMNODE_SIZE_MASK; 88 --- 42 unchanged lines hidden (view full) --- 131 return(NULL); 132} 133 134/* 135 * zfree() - free previously allocated memory 136 */ 137 138void |
139zfree(MemPool *mp, void *ptr, iaddr_t bytes) | 139zfree(MemPool *mp, void *ptr, uintptr_t bytes) |
140{ 141 /* 142 * align according to pool object size (can be 0). This is 143 * inclusive of the MEMNODE_SIZE_MASK minimum alignment. 144 */ 145 bytes = (bytes + MEMNODE_SIZE_MASK) & ~MEMNODE_SIZE_MASK; 146 147 if (bytes == 0) 148 return; 149 150 /* 151 * panic if illegal pointer 152 */ 153 154 if ((char *)ptr < (char *)mp->mp_Base || 155 (char *)ptr + bytes > (char *)mp->mp_End || | 140{ 141 /* 142 * align according to pool object size (can be 0). This is 143 * inclusive of the MEMNODE_SIZE_MASK minimum alignment. 144 */ 145 bytes = (bytes + MEMNODE_SIZE_MASK) & ~MEMNODE_SIZE_MASK; 146 147 if (bytes == 0) 148 return; 149 150 /* 151 * panic if illegal pointer 152 */ 153 154 if ((char *)ptr < (char *)mp->mp_Base || 155 (char *)ptr + bytes > (char *)mp->mp_End || |
156 ((iaddr_t)ptr & MEMNODE_SIZE_MASK) != 0) | 156 ((uintptr_t)ptr & MEMNODE_SIZE_MASK) != 0) |
157 panic("zfree(%p,%ju): wild pointer", ptr, (uintmax_t)bytes); 158 159 /* 160 * free the segment 161 */ 162 163 { 164 MemNode **pmn; --- 75 unchanged lines hidden (view full) --- 240 * must free it to make it available to the memory subsystem. 241 * 242 * Note: mp_Size may not reflect (mp_End - mp_Base) range 243 * due to other parts of the system doing their own sbrk() 244 * calls. 245 */ 246 247void | 157 panic("zfree(%p,%ju): wild pointer", ptr, (uintmax_t)bytes); 158 159 /* 160 * free the segment 161 */ 162 163 { 164 MemNode **pmn; --- 75 unchanged lines hidden (view full) --- 240 * must free it to make it available to the memory subsystem. 241 * 242 * Note: mp_Size may not reflect (mp_End - mp_Base) range 243 * due to other parts of the system doing their own sbrk() 244 * calls. 245 */ 246 247void |
248zextendPool(MemPool *mp, void *base, iaddr_t bytes) | 248zextendPool(MemPool *mp, void *base, uintptr_t bytes) |
249{ 250 if (mp->mp_Size == 0) { 251 mp->mp_Base = base; 252 mp->mp_Used = bytes; 253 mp->mp_End = (char *)base + bytes; 254 mp->mp_Size = bytes; 255 } else { 256 void *pend = (char *)mp->mp_Base + mp->mp_Size; --- 51 unchanged lines hidden --- | 249{ 250 if (mp->mp_Size == 0) { 251 mp->mp_Base = base; 252 mp->mp_Used = bytes; 253 mp->mp_End = (char *)base + bytes; 254 mp->mp_Size = bytes; 255 } else { 256 void *pend = (char *)mp->mp_Base + mp->mp_Size; --- 51 unchanged lines hidden --- |