diff options
Diffstat (limited to 'src/generic/alloc.c')
-rw-r--r-- | src/generic/alloc.c | 32 |
1 files changed, 9 insertions, 23 deletions
diff --git a/src/generic/alloc.c b/src/generic/alloc.c index 37de4d6a..1ff75113 100644 --- a/src/generic/alloc.c +++ b/src/generic/alloc.c @@ -1,37 +1,23 @@ -// Dummy implementation for alloc commands +// Generic implementation of dynamic memory pool // // Copyright (C) 2016,2017 Kevin O'Connor <kevin@koconnor.net> // // This file may be distributed under the terms of the GNU GPLv3 license. -#include <stdlib.h> // malloc -#include <string.h> // memset -#include "command.h" // shutdown -#include "misc.h" // alloc_chunk -#include "sched.h" // sched_shutdown +#include "misc.h" // dynmem_start -// Return the maximum allocation size that can succeed up to 'reqsize' -size_t -alloc_chunk_maxsize(size_t reqsize) -{ - return reqsize; -} +static char dynmem_pool[20 * 1024]; -// Allocate an area of memory +// Return the start of memory available for dynamic allocations void * -alloc_chunk(size_t size) +dynmem_start(void) { - void *data = malloc(size); - if (!data) - shutdown("alloc_chunk failed"); - memset(data, 0, size); - return data; + return dynmem_pool; } -// Allocate an array of chunks +// Return the end of memory available for dynamic allocations void * -alloc_chunks(size_t size, size_t count, size_t *avail) +dynmem_end(void) { - *avail = count; - return alloc_chunk(size * count); + return &dynmem_pool[sizeof(dynmem_pool)]; } |