summaryrefslogtreecommitdiffstats
path: root/cpukit/score/include
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/include
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/include')
-rw-r--r--cpukit/score/include/rtems/score/heap.h43
-rw-r--r--cpukit/score/include/rtems/score/object.h4
2 files changed, 37 insertions, 10 deletions
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
@@ -55,17 +55,30 @@ typedef enum {
} 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 <rtems/score/heap.inl>
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
);