From 0183e33d9a4759764716e771b85e19f7a997b8bd Mon Sep 17 00:00:00 2001 From: Timo Teras Date: Wed, 10 Mar 2010 20:11:06 +0200 Subject: mem: add mmap allocator use it for heaps and fiber stacks. --- src/mem-mmap.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/mem-mmap.c (limited to 'src/mem-mmap.c') diff --git a/src/mem-mmap.c b/src/mem-mmap.c new file mode 100644 index 0000000..b8e83cb --- /dev/null +++ b/src/mem-mmap.c @@ -0,0 +1,41 @@ +/* mem-mmap.c - mmap wrappings for large memory allocation + * + * Copyright (C) 2009 Timo Teräs + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 or later as + * published by the Free Software Foundation. + * + * See http://www.gnu.org/ for details. + */ + +#include +#include +#include + +void *tf_bmem_alloc(size_t size) +{ + void *ptr; + + ptr = mmap(NULL, size, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS, 0, 0); + if (ptr == MAP_FAILED) + return NULL; + return ptr; +} + +void *tf_bmem_resize(void *oldptr, size_t oldsize, size_t newsize) +{ + void *ptr; + + ptr = mremap(oldptr, oldsize, newsize, MREMAP_MAYMOVE); + if (ptr == MAP_FAILED) + return NULL; + return ptr; +} + +void tf_bmem_free(void *ptr, size_t size) +{ + munmap(ptr, size); +} -- cgit v1.2.3