From 373022108ba389fb3d50a3d50f9baf64c6c82171 Mon Sep 17 00:00:00 2001 From: Holger Lubitz Date: Mon, 23 Jul 2007 17:48:39 +0200 Subject: [PATCH] malloc attribute changes --- src/arch/i386/core/umalloc.c | 2 ++ src/core/malloc.c | 4 ++++ src/crypto/cryptoLayer.h | 6 ++++-- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/arch/i386/core/umalloc.c b/src/arch/i386/core/umalloc.c index bfd62ef1..5bad072e 100644 --- a/src/arch/i386/core/umalloc.c +++ b/src/arch/i386/core/umalloc.c @@ -135,6 +135,7 @@ static void ecollect_free ( void ) { * Calling realloc() with a new size of zero is a valid way to free a * memory block. */ +__attribute__ ((malloc)) userptr_t urealloc ( userptr_t ptr, size_t new_size ) { struct external_memory extmem; userptr_t new = ptr; @@ -208,6 +209,7 @@ userptr_t urealloc ( userptr_t ptr, size_t new_size ) { * * Memory is guaranteed to be aligned to a page boundary. */ +__attribute__ ((malloc)) userptr_t umalloc ( size_t size ) { return urealloc ( UNULL, size ); } diff --git a/src/core/malloc.c b/src/core/malloc.c index 2d892f42..6b8add94 100644 --- a/src/core/malloc.c +++ b/src/core/malloc.c @@ -95,6 +95,7 @@ static char heap[HEAP_SIZE] __attribute__ (( aligned ( __alignof__(void *) ))); * * @c align must be a power of two. @c size may not be zero. */ +__attribute__ ((malloc)) void * alloc_memblock ( size_t size, size_t align ) { struct memory_block *block; size_t align_mask; @@ -248,6 +249,7 @@ void free_memblock ( void *ptr, size_t size ) { * Calling realloc() with a new size of zero is a valid way to free a * memory block. */ +__attribute__ ((malloc)) void * realloc ( void *old_ptr, size_t new_size ) { struct autosized_block *old_block; struct autosized_block *new_block; @@ -297,6 +299,7 @@ void * realloc ( void *old_ptr, size_t new_size ) { * Allocates memory with no particular alignment requirement. @c ptr * will be aligned to at least a multiple of sizeof(void*). */ +__attribute__ ((malloc)) void * malloc ( size_t size ) { return realloc ( NULL, size ); } @@ -326,6 +329,7 @@ void free ( void *ptr ) { * This function name is non-standard, but pretty intuitive. * zalloc(size) is always equivalent to calloc(1,size) */ +__attribute__ ((malloc)) void * zalloc ( size_t size ) { void *data; diff --git a/src/crypto/cryptoLayer.h b/src/crypto/cryptoLayer.h index 538b84f2..91614298 100644 --- a/src/crypto/cryptoLayer.h +++ b/src/crypto/cryptoLayer.h @@ -31,12 +31,14 @@ typedef void psPool_t; #define sslAssert( ... ) assert ( __VA_ARGS__ ) -static inline __attribute__ (( always_inline )) void * +static inline __attribute__ (( always_inline )) __attribute__ ((malloc)) +void * psMalloc ( psPool_t *pool __unused, size_t len ) { return malloc ( len ); } -static inline __attribute__ (( always_inline )) void * +static inline __attribute__ (( always_inline )) __attribute__ ((malloc)) +void * psRealloc ( void *ptr, size_t len ) { return realloc ( ptr, len ); }