summaryrefslogtreecommitdiffstats
path: root/cpukit/libcsupport/src/malloc_deferred.c
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/libcsupport/src/malloc_deferred.c')
-rw-r--r--cpukit/libcsupport/src/malloc_deferred.c25
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