diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2017-07-19 23:10:08 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2017-07-20 10:44:31 -0400 |
commit | 649d26e093497991ebc1a89f4a5cfeb29d4602d4 (patch) | |
tree | 7efde06f1f198198f1497ceb4b1db1a00ae4690a /src/generic/alloc.c | |
parent | 2ee42997e4b8ac4d8ca84cc53ecc9859baafbbbd (diff) | |
download | kutter-649d26e093497991ebc1a89f4a5cfeb29d4602d4.tar.gz kutter-649d26e093497991ebc1a89f4a5cfeb29d4602d4.tar.xz kutter-649d26e093497991ebc1a89f4a5cfeb29d4602d4.zip |
basecmd: Move low-level alloc code into basecmd.c
Implement new dynmem_start() and dynmem_end() functions instead of
alloc_chunk() and alloc_chunks() in the board code. This simplifies
the board code.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
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)]; } |