[PATCH 4/7] score: Rename Objects_Information::allocation_size
Sebastian Huber
sebastian.huber at embedded-brains.de
Mon Nov 26 13:12:11 UTC 2018
Rename Objects_Information::allocation_size in
Objects_Information::objects_per_block. Adjust integer types in
_Objects_Shrink_information() and _Objects_Free().
Update #3621.
---
cpukit/include/rtems/score/objectimpl.h | 4 +--
cpukit/score/src/objectallocate.c | 2 +-
cpukit/score/src/objectextendinformation.c | 15 +++++------
cpukit/score/src/objectfree.c | 24 ++++++++++--------
cpukit/score/src/objectinitializeinformation.c | 2 +-
cpukit/score/src/objectshrinkinformation.c | 35 +++++++++++++++-----------
6 files changed, 47 insertions(+), 35 deletions(-)
diff --git a/cpukit/include/rtems/score/objectimpl.h b/cpukit/include/rtems/score/objectimpl.h
index 3a64573f6b..c3597c33ff 100644
--- a/cpukit/include/rtems/score/objectimpl.h
+++ b/cpukit/include/rtems/score/objectimpl.h
@@ -131,7 +131,7 @@ typedef struct {
/** This is the number of objects on the Inactive list. */
Objects_Maximum inactive;
/** This is the number of objects in a block. */
- Objects_Maximum allocation_size;
+ Objects_Maximum objects_per_block;
/** This is the size in bytes of each object instance. */
uint16_t object_size;
/**
@@ -750,7 +750,7 @@ RTEMS_INLINE_ROUTINE Objects_Maximum _Objects_Extend_size(
const Objects_Information *information
)
{
- return information->auto_extend ? information->allocation_size : 0;
+ return information->auto_extend ? information->objects_per_block : 0;
}
/**
diff --git a/cpukit/score/src/objectallocate.c b/cpukit/score/src/objectallocate.c
index 97ced4bdf5..81e322757c 100644
--- a/cpukit/score/src/objectallocate.c
+++ b/cpukit/score/src/objectallocate.c
@@ -72,7 +72,7 @@ Objects_Control *_Objects_Allocate_unprotected(
block = (uint32_t) _Objects_Get_index( the_object->id ) -
_Objects_Get_index( information->minimum_id );
- block /= information->allocation_size;
+ block /= information->objects_per_block;
information->inactive_per_block[ block ]--;
information->inactive--;
diff --git a/cpukit/score/src/objectextendinformation.c b/cpukit/score/src/objectextendinformation.c
index 3fc9cdd464..b8e72f93b6 100644
--- a/cpukit/score/src/objectextendinformation.c
+++ b/cpukit/score/src/objectextendinformation.c
@@ -73,19 +73,19 @@ void _Objects_Extend_information(
if ( information->object_blocks == NULL )
block_count = 0;
else {
- block_count = information->maximum / information->allocation_size;
+ block_count = information->maximum / information->objects_per_block;
for ( ; block < block_count; block++ ) {
if ( information->object_blocks[ block ] == NULL ) {
do_extend = false;
break;
} else
- index_base += information->allocation_size;
+ index_base += information->objects_per_block;
}
}
- index_end = index_base + information->allocation_size;
+ index_end = index_base + information->objects_per_block;
- maximum = (uint32_t) information->maximum + information->allocation_size;
+ maximum = (uint32_t) information->maximum + information->objects_per_block;
/*
* We need to limit the number of objects to the maximum number
@@ -100,7 +100,8 @@ void _Objects_Extend_information(
* Allocate the name table, and the objects and if it fails either return or
* generate a fatal error depending on auto-extending being active.
*/
- object_block_size = information->allocation_size * information->object_size;
+ object_block_size = information->objects_per_block
+ * information->object_size;
if ( information->auto_extend ) {
new_object_block = _Workspace_Allocate( object_block_size );
if ( !new_object_block )
@@ -243,8 +244,8 @@ void _Objects_Extend_information(
* Assign the new object block to the object block table.
*/
information->object_blocks[ block ] = new_object_block;
- information->inactive_per_block[ block ] = information->allocation_size;
- information->inactive += information->allocation_size;
+ information->inactive_per_block[ block ] = information->objects_per_block;
+ information->inactive += information->objects_per_block;
/*
* Append to inactive chain.
diff --git a/cpukit/score/src/objectfree.c b/cpukit/score/src/objectfree.c
index 30ea1e36e5..3e7c8e409c 100644
--- a/cpukit/score/src/objectfree.c
+++ b/cpukit/score/src/objectfree.c
@@ -27,28 +27,32 @@ void _Objects_Free(
Objects_Control *the_object
)
{
- uint32_t allocation_size = information->allocation_size;
-
_Assert( _Objects_Allocator_is_owner() );
_Chain_Append_unprotected( &information->Inactive, &the_object->Node );
if ( information->auto_extend ) {
- uint32_t block;
+ Objects_Maximum objects_per_block;
+ Objects_Maximum block;
+ Objects_Maximum inactive;
+
+ objects_per_block = information->objects_per_block;
+ block = _Objects_Get_index( the_object->id );
+ block -= _Objects_Get_index( information->minimum_id );
+ block /= objects_per_block;
- block = (uint32_t) (_Objects_Get_index( the_object->id ) -
- _Objects_Get_index( information->minimum_id ));
- block /= information->allocation_size;
+ ++information->inactive_per_block[ block ];
- information->inactive_per_block[ block ]++;
- information->inactive++;
+ inactive = information->inactive;
+ ++inactive;
+ information->inactive = inactive;
/*
* Check if the threshold level has been met of
- * 1.5 x allocation_size are free.
+ * 1.5 x objects_per_block are free.
*/
- if ( information->inactive > ( allocation_size + ( allocation_size >> 1 ) ) ) {
+ if ( inactive > ( objects_per_block + ( objects_per_block >> 1 ) ) ) {
_Objects_Shrink_information( information );
}
}
diff --git a/cpukit/score/src/objectinitializeinformation.c b/cpukit/score/src/objectinitializeinformation.c
index 90f50d544c..a341dc1a5d 100644
--- a/cpukit/score/src/objectinitializeinformation.c
+++ b/cpukit/score/src/objectinitializeinformation.c
@@ -76,7 +76,7 @@ void _Objects_Do_initialize_information(
/*
* The allocation unit is the maximum value
*/
- information->allocation_size = maximum_per_allocation;
+ information->objects_per_block = maximum_per_allocation;
/*
* Provide a null local table entry for the case of any empty table.
diff --git a/cpukit/score/src/objectshrinkinformation.c b/cpukit/score/src/objectshrinkinformation.c
index db085e1042..cf3618f8fa 100644
--- a/cpukit/score/src/objectshrinkinformation.c
+++ b/cpukit/score/src/objectshrinkinformation.c
@@ -27,9 +27,10 @@ void _Objects_Shrink_information(
Objects_Information *information
)
{
- uint32_t block_count;
- uint32_t block;
- uint32_t index_base;
+ Objects_Maximum objects_per_block;
+ Objects_Maximum index_base;
+ Objects_Maximum block_count;
+ Objects_Maximum block;
_Assert( _Objects_Allocator_is_owner() );
@@ -37,20 +38,26 @@ void _Objects_Shrink_information(
* Search the list to find block or chunk with all objects inactive.
*/
+ objects_per_block = information->objects_per_block;
index_base = _Objects_Get_index( information->minimum_id );
- block_count = (information->maximum - index_base) /
- information->allocation_size;
+ block_count = ( information->maximum - index_base ) / objects_per_block;
for ( block = 0; block < block_count; block++ ) {
- if ( information->inactive_per_block[ block ] ==
- information->allocation_size ) {
- Chain_Node *node = _Chain_First( &information->Inactive );
- const Chain_Node *tail = _Chain_Immutable_tail( &information->Inactive );
- uint32_t index_end = index_base + information->allocation_size;
+ if ( information->inactive_per_block[ block ] == objects_per_block ) {
+ Chain_Node *node;
+ const Chain_Node *tail;
+ uint32_t index_end;
+
+ node = _Chain_First( &information->Inactive );
+ tail = _Chain_Immutable_tail( &information->Inactive );
+ index_end = index_base + objects_per_block;
while ( node != tail ) {
- Objects_Control *object = (Objects_Control *) node;
- uint32_t index = _Objects_Get_index( object->id );
+ Objects_Control *object;
+ uint32_t index;
+
+ object = (Objects_Control *) node;
+ index = _Objects_Get_index( object->id );
/*
* Get the next node before the node is extracted
@@ -70,11 +77,11 @@ void _Objects_Shrink_information(
information->object_blocks[ block ] = NULL;
information->inactive_per_block[ block ] = 0;
- information->inactive -= information->allocation_size;
+ information->inactive -= objects_per_block;
return;
}
- index_base += information->allocation_size;
+ index_base += objects_per_block;
}
}
--
2.16.4
More information about the devel
mailing list