Mercurial > nomad > old-fuse
changeset 84:141fbaedf8f9
implement umem_{alloc,zalloc,free} in fakeumem
Closes bug #11.
Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
author | Josef 'Jeff' Sipek <jeffpc@josefsipek.net> |
---|---|
date | Sat, 17 Oct 2015 08:17:56 -0400 |
parents | ba392bf7439c |
children | 4de24cf7f81f |
files | src/fakeumem/fakeumem.c src/fakeumem/include/umem.h |
diffstat | 2 files changed, 38 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/fakeumem/fakeumem.c Sat Oct 17 08:05:35 2015 -0400 +++ b/src/fakeumem/fakeumem.c Sat Oct 17 08:17:56 2015 -0400 @@ -21,6 +21,7 @@ */ #include <errno.h> +#include <string.h> #include <umem.h> @@ -60,3 +61,36 @@ { free(buf); } + +void *umem_alloc(size_t size, int flags) +{ + void *tmp; + + /* + * Yes, this is terrible busy wait loop if we're short on memory. + * Alas, it should work well enough for now. + */ + do { + tmp = malloc(size); + if (tmp) + return tmp; + } while (flags & UMEM_NOFAIL); + + return NULL; +} + +void *umem_zalloc(size_t size, int flags) +{ + void *tmp; + + tmp = umem_alloc(size, flags); + if (tmp) + memset(tmp, 0, size); + + return tmp; +} + +void umem_free(void *buf, size_t size) +{ + free(buf); +}
--- a/src/fakeumem/include/umem.h Sat Oct 17 08:05:35 2015 -0400 +++ b/src/fakeumem/include/umem.h Sat Oct 17 08:17:56 2015 -0400 @@ -51,4 +51,8 @@ extern void *umem_cache_alloc(umem_cache_t *cache, int flags); extern void umem_cache_free(umem_cache_t *cache, void *buf); +extern void *umem_alloc(size_t size, int flags); +extern void *umem_zalloc(size_t size, int flags); +extern void umem_free(void *buf, size_t size); + #endif