/* 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); }