From 649d26e093497991ebc1a89f4a5cfeb29d4602d4 Mon Sep 17 00:00:00 2001 From: Kevin O'Connor Date: Wed, 19 Jul 2017 23:10:08 -0400 Subject: 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 --- src/generic/alloc.c | 32 +++++++++----------------------- 1 file changed, 9 insertions(+), 23 deletions(-) (limited to 'src/generic/alloc.c') 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 // // This file may be distributed under the terms of the GNU GPLv3 license. -#include // malloc -#include // 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)]; } -- cgit v1.2.3-70-g09d2