[rtems commit] libcsupport: Adjust malloc_walk() prototype

Sebastian Huber sebh at rtems.org
Wed May 16 10:35:35 UTC 2012


Module:    rtems
Branch:    master
Commit:    502629707d8f28e2b1548ebdf03599612d7b6ef5
Changeset: http://git.rtems.org/rtems/commit/?id=502629707d8f28e2b1548ebdf03599612d7b6ef5

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Wed May 16 12:09:56 2012 +0200

libcsupport: Adjust malloc_walk() prototype

The header file <rtems/malloc.h> provides now also the malloc_walk()
prototype.

The malloc_walk() prototype reflects now the _Protected_heap_Walk() API.
The return status helps to print only in case of an error.

---

 cpukit/libcsupport/include/rtems/libcsupport.h |    2 +-
 cpukit/libcsupport/include/rtems/malloc.h      |    1 +
 cpukit/libcsupport/src/malloc_walk.c           |    4 ++--
 testsuites/libtests/malloctest/init.c          |   12 ++++++------
 testsuites/libtests/malloctest/task1.c         |    8 ++++----
 5 files changed, 14 insertions(+), 13 deletions(-)

diff --git a/cpukit/libcsupport/include/rtems/libcsupport.h b/cpukit/libcsupport/include/rtems/libcsupport.h
index bbe8e41..d264047 100644
--- a/cpukit/libcsupport/include/rtems/libcsupport.h
+++ b/cpukit/libcsupport/include/rtems/libcsupport.h
@@ -34,7 +34,7 @@ void RTEMS_Malloc_Initialize(
 );
 
 extern void malloc_dump(void);
-extern void malloc_walk(size_t source, size_t printf_enabled);
+extern bool malloc_walk(int source, bool printf_enabled);
 void malloc_set_heap_pointer(Heap_Control *new_heap);
 Heap_Control *malloc_get_heap_pointer( void );
 extern void libc_init(void);
diff --git a/cpukit/libcsupport/include/rtems/malloc.h b/cpukit/libcsupport/include/rtems/malloc.h
index e4d7ee8..7f56a84 100644
--- a/cpukit/libcsupport/include/rtems/malloc.h
+++ b/cpukit/libcsupport/include/rtems/malloc.h
@@ -18,6 +18,7 @@
 
 #include <rtems.h>
 #include <rtems/bspIo.h>
+#include <rtems/libcsupport.h> /* for malloc_walk() */
 
 #include <stdint.h>
 
diff --git a/cpukit/libcsupport/src/malloc_walk.c b/cpukit/libcsupport/src/malloc_walk.c
index 209d19b..fa81088 100644
--- a/cpukit/libcsupport/src/malloc_walk.c
+++ b/cpukit/libcsupport/src/malloc_walk.c
@@ -18,9 +18,9 @@
 
 #include <stdlib.h>
 
-void malloc_walk(size_t source, size_t printf_enabled)
+bool malloc_walk(int source, bool printf_enabled)
 {
-  _Protected_heap_Walk( RTEMS_Malloc_Heap, (int) source, printf_enabled );
+  return _Protected_heap_Walk( RTEMS_Malloc_Heap, source, printf_enabled );
 }
 
 #endif
diff --git a/testsuites/libtests/malloctest/init.c b/testsuites/libtests/malloctest/init.c
index b81df2c..a93edc4 100644
--- a/testsuites/libtests/malloctest/init.c
+++ b/testsuites/libtests/malloctest/init.c
@@ -34,10 +34,7 @@
 #include <inttypes.h>
 #include <errno.h>
 #include <rtems/score/protectedheap.h>
-
-/* HACK: Blatant visibility violations */
-extern int malloc_info(Heap_Information_block *the_info);
-extern void malloc_walk(size_t source, size_t printf_enabled);
+#include <rtems/malloc.h>
 
 /*
  *  A simple test of realloc
@@ -47,6 +44,7 @@ static void test_realloc(void)
   void *p1, *p2, *p3, *p4;
   size_t i;
   int sc;
+  bool malloc_walk_ok;
 
   /* Test growing reallocation "in place" */
   p1 = malloc(1);
@@ -103,11 +101,13 @@ static void test_realloc(void)
    * Walk the C Program Heap
    */
   puts( "malloc_walk - normal path" );
-  malloc_walk( 1234, 0 );
+  malloc_walk_ok = malloc_walk( 1234, false );
+  rtems_test_assert( malloc_walk_ok );
 
   puts( "malloc_walk - in critical section path" );
   _Thread_Disable_dispatch();
-  malloc_walk( 1234, 0 );
+  malloc_walk_ok = malloc_walk( 1234, false );
+  rtems_test_assert( malloc_walk_ok );
   _Thread_Enable_dispatch();
 
   /*
diff --git a/testsuites/libtests/malloctest/task1.c b/testsuites/libtests/malloctest/task1.c
index c042c8a..1416ae1 100644
--- a/testsuites/libtests/malloctest/task1.c
+++ b/testsuites/libtests/malloctest/task1.c
@@ -20,9 +20,6 @@
 #include <string.h>
 #include <stdlib.h>
 
-/* HACK: Blatant visibility violation */
-extern void malloc_walk(size_t source, size_t printf_enabled);
-
 #define NUM_PASSES 100
 
 rtems_task Task_1_through_5(
@@ -42,6 +39,8 @@ rtems_task Task_1_through_5(
 
   while (TRUE)
   {
+    bool malloc_walk_ok;
+
     if ( passes++ > NUM_PASSES ) {
 	puts("*** END OF MALLOC TEST ***");
         rtems_test_exit(0);
@@ -61,7 +60,8 @@ rtems_task Task_1_through_5(
     printf("mallocing %d bytes\n",mem_amt);
     memset( mem_ptr, mem_amt, mem_amt );
     malloc_report_statistics();
-    malloc_walk(1,FALSE);
+    malloc_walk_ok = malloc_walk( 1, false );
+    rtems_test_assert( malloc_walk_ok );
     status = rtems_task_wake_after(
       task_number( tid ) * 1 * rtems_clock_get_ticks_per_second()/4 );
     for (i=0; i < mem_amt; i++)




More information about the vc mailing list