From 00673f93826bf1fbde728d202c319a684bb87150 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Mon, 23 Nov 2009 21:35:34 -0500 Subject: nommu: use MAP_UNINITIALIZE for mallocs Now that the kernel supports MAP_UNINITIALIZE, have the malloc places use it to get real uninitialized memory on no-mmu systems. This avoids a lot of normally useless overhead involved in zeroing out all of the memory (sometimes multiple times). Signed-off-by: Mike Frysinger --- libc/stdlib/malloc-simple/alloc.c | 2 +- libc/stdlib/malloc-standard/malloc.h | 2 +- libc/stdlib/malloc/malloc.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) (limited to 'libc/stdlib') diff --git a/libc/stdlib/malloc-simple/alloc.c b/libc/stdlib/malloc-simple/alloc.c index 36355c1e9..51da14ac8 100644 --- a/libc/stdlib/malloc-simple/alloc.c +++ b/libc/stdlib/malloc-simple/alloc.c @@ -36,7 +36,7 @@ void *malloc(size_t size) #ifdef __ARCH_USE_MMU__ # define MMAP_FLAGS MAP_PRIVATE | MAP_ANONYMOUS #else -# define MMAP_FLAGS MAP_SHARED | MAP_ANONYMOUS +# define MMAP_FLAGS MAP_SHARED | MAP_ANONYMOUS | MAP_UNINITIALIZE #endif result = mmap((void *) 0, size + sizeof(size_t), PROT_READ | PROT_WRITE, diff --git a/libc/stdlib/malloc-standard/malloc.h b/libc/stdlib/malloc-standard/malloc.h index 90c9fd14d..7a2e66d16 100644 --- a/libc/stdlib/malloc-standard/malloc.h +++ b/libc/stdlib/malloc-standard/malloc.h @@ -356,7 +356,7 @@ __UCLIBC_MUTEX_EXTERN(__malloc_lock); #else #define MMAP(addr, size, prot) \ - (mmap((addr), (size), (prot), MAP_SHARED|MAP_ANONYMOUS, 0, 0)) + (mmap((addr), (size), (prot), MAP_SHARED|MAP_ANONYMOUS|MAP_UNINITIALIZE, 0, 0)) #endif diff --git a/libc/stdlib/malloc/malloc.c b/libc/stdlib/malloc/malloc.c index f4bbc71a2..337206f09 100644 --- a/libc/stdlib/malloc/malloc.c +++ b/libc/stdlib/malloc/malloc.c @@ -124,7 +124,7 @@ __malloc_from_heap (size_t size, struct heap_free_area **heap MAP_PRIVATE | MAP_ANONYMOUS, 0, 0); #else block = mmap ((void *)0, block_size, PROT_READ | PROT_WRITE, - MAP_SHARED | MAP_ANONYMOUS, 0, 0); + MAP_SHARED | MAP_ANONYMOUS | MAP_UNINITIALIZE, 0, 0); #endif #endif /* MALLOC_USE_SBRK */ -- cgit v1.2.3