diff options
Diffstat (limited to 'cpukit/libcsupport/src/malloc_deferred.c')
-rw-r--r-- | cpukit/libcsupport/src/malloc_deferred.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/cpukit/libcsupport/src/malloc_deferred.c b/cpukit/libcsupport/src/malloc_deferred.c index f37b852cba..ccb8dc3b8b 100644 --- a/cpukit/libcsupport/src/malloc_deferred.c +++ b/cpukit/libcsupport/src/malloc_deferred.c @@ -23,6 +23,7 @@ #ifdef RTEMS_NEWLIB #include <stdlib.h> +#include <string.h> #include "malloc_p.h" @@ -136,4 +137,28 @@ void _Malloc_Deferred_free( void *p ) rtems_chain_append_unprotected( &_Malloc_GC_list, node ); rtems_interrupt_lock_release( &_Malloc_GC_lock, &lock_context ); } + +void *rtems_malloc( size_t size ) +{ + if ( size == 0 ) { + return NULL; + } + + return rtems_heap_allocate_aligned_with_boundary( size, 0, 0 ); +} + +void *rtems_calloc( size_t nelem, size_t elsize ) +{ + size_t length; + void *p; + + length = nelem * elsize; + p = rtems_malloc( length ); + RTEMS_OBFUSCATE_VARIABLE( p ); + if ( RTEMS_PREDICT_FALSE( p == NULL ) ) { + return p; + } + + return memset( p, 0, length ); +} #endif |