diff options
author | William Harrington <kb0iic@berzerkula.org> | 2025-01-14 16:06:02 -0600 |
---|---|---|
committer | William Harrington <kb0iic@berzerkula.org> | 2025-01-14 16:06:02 -0600 |
commit | 0cc9b20c15460213e488bf5e70963b941482f628 (patch) | |
tree | bb0143245583ec846630f39bfa2258dba640ccd7 /sdk/other/memalloc.c | |
parent | 0e084ade5069756d487b5c948c48b777e37c00c9 (diff) |
Add source.
Diffstat (limited to 'sdk/other/memalloc.c')
-rw-r--r-- | sdk/other/memalloc.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/sdk/other/memalloc.c b/sdk/other/memalloc.c new file mode 100644 index 0000000..6d31108 --- /dev/null +++ b/sdk/other/memalloc.c @@ -0,0 +1,35 @@ +/* + * Advanced memory pool allocation scheme. + * $Id$ + * Copyright (c) 1997 by Tycho Softworks. + * For conditions of distribution and reuse consult product license. + */ + +#include <other/memory.h> +#include <std/math.h> + +void *memalloc(MEMPOOL *mem, int len) +{ + _MEMFREE *free = mem->mem_free; + _MEMCELL *cell = NULL; + + len = align(len, __OBJALIGN); + + while(free) + { + if(free->size == len) + { + cell = free->list; + break; + } + free = free->next; + } + + if(cell) + { + free->list = cell->next; + return cell; + } + + return memreq(mem, len); +} |