From 9b3f187a02049d81a63bb85497c5a4ebb9d37a97 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Mon, 29 Nov 2004 22:45:43 +0000 Subject: 2004-11-29 Joel Sherrill * 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. --- cpukit/score/include/rtems/score/heap.h | 43 +++++++++++++++++++++++++------ cpukit/score/include/rtems/score/object.h | 4 +-- 2 files changed, 37 insertions(+), 10 deletions(-) (limited to 'cpukit/score/include') diff --git a/cpukit/score/include/rtems/score/heap.h b/cpukit/score/include/rtems/score/heap.h index 8b3f8f9a9b..c68bfd0fd1 100644 --- a/cpukit/score/include/rtems/score/heap.h +++ b/cpukit/score/include/rtems/score/heap.h @@ -54,18 +54,31 @@ typedef enum { HEAP_GET_INFORMATION_BLOCK_ERROR } Heap_Get_information_status; +/** + * Information block returned by the Heap routines used to + * obtain statistics. This information is returned about + * either free or used blocks. + */ + +typedef struct { + /** Number of blocks of this type. */ + uint32_t number; + /** Largest blocks of this type. */ + uint32_t largest; + /** Total size of the blocks of this type. */ + uint32_t total; + +} Heap_Information; + + /** * Information block returned by _Heap_Get_information */ typedef struct { - /** This field is the number of free blocks in this heap. */ - uint32_t free_blocks; - /** This field is the amount of free memory in this heap. */ - uint32_t free_size; - /** This field is the number of used blocks in this heap. */ - uint32_t used_blocks; - /** This field is the amount of used memory in this heap. */ - uint32_t used_size; + /** This field is information on the used blocks in the heap. */ + Heap_Information Free; + /** This field is information on the used blocks in the heap. */ + Heap_Information Used; } Heap_Information_block; /** @@ -278,6 +291,20 @@ Heap_Get_information_status _Heap_Get_information( Heap_Information_block *the_info ); +/** + * This heap routine returns information about the free blocks + * in the specified heap. + * + * @param the_heap (in) pointer to heap header. + * @param info (in) pointer to the free block information. + * + * @return free block information filled in. + */ + +void _Heap_Get_free_information( + Heap_Control *the_heap, + Heap_Information *info +); #ifndef __RTEMS_APPLICATION__ #include diff --git a/cpukit/score/include/rtems/score/object.h b/cpukit/score/include/rtems/score/object.h index 1be8f214d7..f56382887e 100644 --- a/cpukit/score/include/rtems/score/object.h +++ b/cpukit/score/include/rtems/score/object.h @@ -231,7 +231,7 @@ typedef struct { void **object_blocks; /* the object memory to remove */ boolean is_string; /* TRUE if names are strings */ uint16_t name_length; /* maximum length of names */ - Objects_Thread_queue_Extract_callout *extract; + Objects_Thread_queue_Extract_callout extract; #if defined(RTEMS_MULTIPROCESSING) Chain_Control *global_table; /* pointer to global table */ #endif @@ -351,7 +351,7 @@ void _Objects_Initialize_information ( #if defined(RTEMS_MULTIPROCESSING) , boolean supports_global, - Objects_Thread_queue_Extract_callout *extract + Objects_Thread_queue_Extract_callout extract #endif ); -- cgit v1.2.3