summaryrefslogtreecommitdiffstats
path: root/cpukit
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2016-04-08 07:50:42 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2016-04-12 07:36:19 +0200
commitb4b062f4df2139480e6ae5a35427046d34f677c7 (patch)
treef33f1b7a77c4538e66be193586a3d3271407780b /cpukit
parentrtems: Add and use _Region_Get_and_lock() (diff)
downloadrtems-b4b062f4df2139480e6ae5a35427046d34f677c7.tar.bz2
rtems: Delete Region_Control::number_of_used_blocks
Use Heap_Statistics::used_blocks instead.
Diffstat (limited to 'cpukit')
-rw-r--r--cpukit/libmisc/monitor/mon-region.c3
-rw-r--r--cpukit/rtems/include/rtems/rtems/region.h1
-rw-r--r--cpukit/rtems/src/regioncreate.c9
-rw-r--r--cpukit/rtems/src/regiondelete.c4
-rw-r--r--cpukit/rtems/src/regiongetsegment.c1
-rw-r--r--cpukit/rtems/src/regionprocessqueue.c1
-rw-r--r--cpukit/rtems/src/regionreturnsegment.c2
7 files changed, 9 insertions, 12 deletions
diff --git a/cpukit/libmisc/monitor/mon-region.c b/cpukit/libmisc/monitor/mon-region.c
index 289a00b32f..17e6d185cb 100644
--- a/cpukit/libmisc/monitor/mon-region.c
+++ b/cpukit/libmisc/monitor/mon-region.c
@@ -19,13 +19,14 @@ rtems_monitor_region_canonical(
)
{
const Region_Control *rtems_region = (const Region_Control *) region_void;
+ const Heap_Control *heap = &rtems_region->Memory;
canonical_region->attribute = rtems_region->attribute_set;
canonical_region->start_addr = rtems_region->starting_address;
canonical_region->length = rtems_region->length;
canonical_region->page_size = rtems_region->page_size;
canonical_region->max_seg_size = rtems_region->maximum_segment_size;
- canonical_region->used_blocks = rtems_region->number_of_used_blocks;
+ canonical_region->used_blocks = heap->stats.used_blocks;
}
diff --git a/cpukit/rtems/include/rtems/rtems/region.h b/cpukit/rtems/include/rtems/rtems/region.h
index 0c288994dd..8ae52f3e2b 100644
--- a/cpukit/rtems/include/rtems/rtems/region.h
+++ b/cpukit/rtems/include/rtems/rtems/region.h
@@ -65,7 +65,6 @@ typedef struct {
uintptr_t page_size; /* in bytes */
uintptr_t maximum_segment_size; /* in bytes */
rtems_attribute attribute_set;
- uint32_t number_of_used_blocks; /* blocks allocated */
Heap_Control Memory;
} Region_Control;
diff --git a/cpukit/rtems/src/regioncreate.c b/cpukit/rtems/src/regioncreate.c
index 482c43b4d3..8f1f7c5669 100644
--- a/cpukit/rtems/src/regioncreate.c
+++ b/cpukit/rtems/src/regioncreate.c
@@ -87,11 +87,10 @@ rtems_status_code rtems_region_create(
_Region_Free( the_region );
return_status = RTEMS_INVALID_SIZE;
} else {
- the_region->starting_address = starting_address;
- the_region->length = length;
- the_region->page_size = page_size;
- the_region->attribute_set = attribute_set;
- the_region->number_of_used_blocks = 0;
+ the_region->starting_address = starting_address;
+ the_region->length = length;
+ the_region->page_size = page_size;
+ the_region->attribute_set = attribute_set;
_Objects_Open(
&_Region_Information,
diff --git a/cpukit/rtems/src/regiondelete.c b/cpukit/rtems/src/regiondelete.c
index 684c2a9b96..e9ced7b768 100644
--- a/cpukit/rtems/src/regiondelete.c
+++ b/cpukit/rtems/src/regiondelete.c
@@ -36,7 +36,9 @@ rtems_status_code rtems_region_delete(
return RTEMS_INVALID_ID;
}
- if ( the_region->number_of_used_blocks != 0 ) {
+ _Heap_Protection_free_all_delayed_blocks( &the_region->Memory );
+
+ if ( the_region->Memory.stats.used_blocks != 0 ) {
status = RTEMS_RESOURCE_IN_USE;
} else {
_Objects_Close( &_Region_Information, &the_region->Object );
diff --git a/cpukit/rtems/src/regiongetsegment.c b/cpukit/rtems/src/regiongetsegment.c
index ecc6378383..d59de38e4a 100644
--- a/cpukit/rtems/src/regiongetsegment.c
+++ b/cpukit/rtems/src/regiongetsegment.c
@@ -58,7 +58,6 @@ rtems_status_code rtems_region_get_segment(
the_segment = _Region_Allocate_segment( the_region, size );
if ( the_segment != NULL ) {
- the_region->number_of_used_blocks += 1;
*segment = the_segment;
status = RTEMS_SUCCESSFUL;
} else if ( _Options_Is_no_wait( option_set ) ) {
diff --git a/cpukit/rtems/src/regionprocessqueue.c b/cpukit/rtems/src/regionprocessqueue.c
index 1c9d273b05..db5759a8d0 100644
--- a/cpukit/rtems/src/regionprocessqueue.c
+++ b/cpukit/rtems/src/regionprocessqueue.c
@@ -64,7 +64,6 @@ void _Region_Process_queue(
break;
*(void **)the_thread->Wait.return_argument = the_segment;
- the_region->number_of_used_blocks += 1;
_Thread_queue_Extract( the_thread );
the_thread->Wait.return_code = RTEMS_SUCCESSFUL;
}
diff --git a/cpukit/rtems/src/regionreturnsegment.c b/cpukit/rtems/src/regionreturnsegment.c
index 8ec84fb9c4..ff742cffc2 100644
--- a/cpukit/rtems/src/regionreturnsegment.c
+++ b/cpukit/rtems/src/regionreturnsegment.c
@@ -34,8 +34,6 @@ rtems_status_code rtems_region_return_segment(
}
if ( _Region_Free_segment( the_region, segment ) ) {
- the_region->number_of_used_blocks -= 1;
-
/* Unlocks allocator */
_Region_Process_queue( the_region );
return RTEMS_SUCCESSFUL;