score: Add _Objects_Activate_unlimited()

Update #3835.
This commit is contained in:
Sebastian Huber
2019-12-10 11:26:20 +01:00
parent 8a43adbe47
commit dd9e50102b
2 changed files with 31 additions and 12 deletions

View File

@@ -937,6 +937,36 @@ RTEMS_INLINE_ROUTINE void _Objects_Free(
( *information->free )( information, the_object );
}
/**
* @brief Activate the object.
*
* This function must be only used in case this objects information supports
* unlimited objects.
*
* @param information The object information block.
* @param the_object The object to activate.
*/
RTEMS_INLINE_ROUTINE void _Objects_Activate_unlimited(
Objects_Information *information,
Objects_Control *the_object
)
{
Objects_Maximum objects_per_block;
Objects_Maximum block;
_Assert( _Objects_Is_auto_extend( information ) );
objects_per_block = information->objects_per_block;
block = _Objects_Get_index( the_object->id ) - OBJECTS_INDEX_MINIMUM;
if ( block > objects_per_block ) {
block /= objects_per_block;
information->inactive_per_block[ block ]--;
information->inactive--;
}
}
/** @} */
#ifdef __cplusplus

View File

@@ -61,18 +61,7 @@ Objects_Control *_Objects_Allocate_unlimited( Objects_Information *information )
}
if ( the_object != NULL ) {
Objects_Maximum objects_per_block;
Objects_Maximum block;
objects_per_block = information->objects_per_block;
block = _Objects_Get_index( the_object->id ) - OBJECTS_INDEX_MINIMUM;
if ( block > objects_per_block ) {
block /= objects_per_block;
information->inactive_per_block[ block ]--;
information->inactive--;
}
_Objects_Activate_unlimited( information, the_object );
}
return the_object;