diff options
Diffstat (limited to 'src/generic')
-rw-r--r-- | src/generic/alloc.c | 32 | ||||
-rw-r--r-- | src/generic/misc.h | 4 |
2 files changed, 11 insertions, 25 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)]; } diff --git a/src/generic/misc.h b/src/generic/misc.h index 960eb6a2..b2f1c050 100644 --- a/src/generic/misc.h +++ b/src/generic/misc.h @@ -13,8 +13,8 @@ uint8_t timer_is_before(uint32_t time1, uint32_t time2); uint32_t timer_read_time(void); void timer_periodic(void); -void *alloc_chunk(size_t size); -void *alloc_chunks(size_t size, size_t count, size_t *avail); +void *dynmem_start(void); +void *dynmem_end(void); uint16_t crc16_ccitt(char *buf, uint8_t len); |