diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2017-05-06 22:29:08 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2017-05-11 13:56:21 -0400 |
commit | f331936969552c9864e8ef58ec329e7060a5af60 (patch) | |
tree | f46b4f64ee7672343b7eece9a9c1aa18f76b84b4 /src/generic/alloc.c | |
parent | 8f1d0c2a7c49b596cb5a9a8b92b3200485049cf6 (diff) | |
download | kutter-f331936969552c9864e8ef58ec329e7060a5af60.tar.gz kutter-f331936969552c9864e8ef58ec329e7060a5af60.tar.xz kutter-f331936969552c9864e8ef58ec329e7060a5af60.zip |
basecmd: Avoid calling malloc() from main code
Introduce a new board function alloc_chunk() to allocate dynamic
memory. This allows the board code to implement memory allocations
without using the standard malloc() interface.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'src/generic/alloc.c')
-rw-r--r-- | src/generic/alloc.c | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/src/generic/alloc.c b/src/generic/alloc.c index 826e4f9e..37de4d6a 100644 --- a/src/generic/alloc.c +++ b/src/generic/alloc.c @@ -1,13 +1,37 @@ // Dummy implementation for alloc commands // -// Copyright (C) 2016 Kevin O'Connor <kevin@koconnor.net> +// Copyright (C) 2016,2017 Kevin O'Connor <kevin@koconnor.net> // // This file may be distributed under the terms of the GNU GPLv3 license. -#include "misc.h" +#include <stdlib.h> // malloc +#include <string.h> // memset +#include "command.h" // shutdown +#include "misc.h" // alloc_chunk +#include "sched.h" // sched_shutdown // Return the maximum allocation size that can succeed up to 'reqsize' -size_t alloc_maxsize(size_t reqsize) +size_t +alloc_chunk_maxsize(size_t reqsize) { return reqsize; } + +// Allocate an area of memory +void * +alloc_chunk(size_t size) +{ + void *data = malloc(size); + if (!data) + shutdown("alloc_chunk failed"); + memset(data, 0, size); + return data; +} + +// Allocate an array of chunks +void * +alloc_chunks(size_t size, size_t count, size_t *avail) +{ + *avail = count; + return alloc_chunk(size * count); +} |