summaryrefslogtreecommitdiffstats
path: root/cpukit/score/src/heapgetinfo.c
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2004-11-29 22:45:43 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2004-11-29 22:45:43 +0000
commit9b3f187a02049d81a63bb85497c5a4ebb9d37a97 (patch)
tree7796f90657fdd839f998a88f2cc4d0688ffb29c9 /cpukit/score/src/heapgetinfo.c
parentAdd another module ID code. (diff)
downloadrtems-9b3f187a02049d81a63bb85497c5a4ebb9d37a97.tar.bz2
2004-11-29 Joel Sherrill <joel@OARcorp.com>
* libcsupport/src/mallocfreespace.c, rtems/Makefile.am, rtems/include/rtems/rtems/region.h, score/Makefile.am, score/include/rtems/score/heap.h, score/src/heapgetinfo.c: Add capability to return information about just the free blocks in a region or heap. Also changed the semantics of free space available to be the largest block of memory that can be allocated. * rtems/src/regiongetfreeinfo.c, score/src/heapgetfreeinfo.c: New files. : score/include/rtems/score/object.h, score/src/objectinitializeinformation.c: Remove warning.
Diffstat (limited to 'cpukit/score/src/heapgetinfo.c')
-rw-r--r--cpukit/score/src/heapgetinfo.c24
1 files changed, 16 insertions, 8 deletions
diff --git a/cpukit/score/src/heapgetinfo.c b/cpukit/score/src/heapgetinfo.c
index b3f878f5f2..9e71ea7e43 100644
--- a/cpukit/score/src/heapgetinfo.c
+++ b/cpukit/score/src/heapgetinfo.c
@@ -40,12 +40,15 @@ Heap_Get_information_status _Heap_Get_information(
Heap_Block *the_block = 0; /* avoid warnings */
Heap_Block *next_block = 0; /* avoid warnings */
int notdone = 1;
+ uint32_t size;
- the_info->free_blocks = 0;
- the_info->free_size = 0;
- the_info->used_blocks = 0;
- the_info->used_size = 0;
+ the_info->Free.number = 0;
+ the_info->Free.total = 0;
+ the_info->Free.largest = 0;
+ the_info->Used.number = 0;
+ the_info->Used.total = 0;
+ the_info->Used.largest = 0;
/*
* We don't want to allow walking the heap until we have
@@ -72,12 +75,17 @@ Heap_Get_information_status _Heap_Get_information(
* Accumulate size
*/
+ size = _Heap_Block_size(the_block);
if ( _Heap_Is_block_free(the_block) ) {
- the_info->free_blocks++;
- the_info->free_size += _Heap_Block_size(the_block);
+ the_info->Free.number++;
+ the_info->Free.total += size;
+ if ( size > the_info->Free.largest )
+ the_info->Free.largest = size;
} else {
- the_info->used_blocks++;
- the_info->used_size += _Heap_Block_size(the_block);
+ the_info->Used.number++;
+ the_info->Used.total += size;
+ if ( size > the_info->Used.largest )
+ the_info->Used.largest = size;
}
/*