mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2026-09-22 18:10:52 +08:00
rbtree: Add _RBTree_Minimum(), _RBTree_Maximum()
This commit is contained in:
@@ -147,27 +147,23 @@ RTEMS_INLINE_ROUTINE rtems_rbtree_node *rtems_rbtree_root(
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return pointer to RBTree Minimum
|
||||
*
|
||||
* This function returns a pointer to the minimum node of @a the_rbtree.
|
||||
* @copydoc _RBTree_Minimum()
|
||||
*/
|
||||
RTEMS_INLINE_ROUTINE rtems_rbtree_node *rtems_rbtree_min(
|
||||
const rtems_rbtree_control *the_rbtree
|
||||
)
|
||||
{
|
||||
return _RBTree_First( the_rbtree, RBT_LEFT );
|
||||
return _RBTree_Minimum( the_rbtree );
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return pointer to RBTree maximum.
|
||||
*
|
||||
* This function returns a pointer to the maximum node of @a the_rbtree.
|
||||
* @copydoc _RBTree_Maximum()
|
||||
*/
|
||||
RTEMS_INLINE_ROUTINE rtems_rbtree_node *rtems_rbtree_max(
|
||||
const rtems_rbtree_control *the_rbtree
|
||||
)
|
||||
{
|
||||
return _RBTree_First( the_rbtree, RBT_RIGHT );
|
||||
return _RBTree_Maximum( the_rbtree );
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -338,7 +334,7 @@ RTEMS_INLINE_ROUTINE rtems_rbtree_node *rtems_rbtree_peek_min(
|
||||
const rtems_rbtree_control *the_rbtree
|
||||
)
|
||||
{
|
||||
return _RBTree_First( the_rbtree, RBT_LEFT );
|
||||
return rtems_rbtree_min( the_rbtree );
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -352,7 +348,7 @@ RTEMS_INLINE_ROUTINE rtems_rbtree_node *rtems_rbtree_peek_max(
|
||||
const rtems_rbtree_control *the_rbtree
|
||||
)
|
||||
{
|
||||
return _RBTree_First( the_rbtree, RBT_RIGHT );
|
||||
return rtems_rbtree_max( the_rbtree );
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -483,6 +483,36 @@ RTEMS_INLINE_ROUTINE void _RBTree_Initialize_empty(
|
||||
the_rbtree->first[RBT_RIGHT] = NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Returns the minimum node of the red-black tree.
|
||||
*
|
||||
* @param[in] the_rbtree The red-black tree control.
|
||||
*
|
||||
* @retval NULL The red-black tree is empty.
|
||||
* @retval node The minimum node.
|
||||
*/
|
||||
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Minimum(
|
||||
const RBTree_Control *the_rbtree
|
||||
)
|
||||
{
|
||||
return _RBTree_First( the_rbtree, RBT_LEFT );
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Returns the maximum node of the red-black tree.
|
||||
*
|
||||
* @param[in] the_rbtree The red-black tree control.
|
||||
*
|
||||
* @retval NULL The red-black tree is empty.
|
||||
* @retval node The maximum node.
|
||||
*/
|
||||
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Maximum(
|
||||
const RBTree_Control *the_rbtree
|
||||
)
|
||||
{
|
||||
return _RBTree_First( the_rbtree, RBT_RIGHT );
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Returns the predecessor of a node.
|
||||
*
|
||||
|
||||
@@ -87,7 +87,7 @@ RTEMS_INLINE_ROUTINE void _Scheduler_EDF_Schedule_body(
|
||||
{
|
||||
Scheduler_EDF_Context *context =
|
||||
_Scheduler_EDF_Get_context( scheduler );
|
||||
RBTree_Node *first = _RBTree_First( &context->Ready, RBT_LEFT );
|
||||
RBTree_Node *first = _RBTree_Minimum( &context->Ready );
|
||||
Scheduler_EDF_Node *node =
|
||||
RTEMS_CONTAINER_OF( first, Scheduler_EDF_Node, Node );
|
||||
Thread_Control *heir = node->thread;
|
||||
|
||||
@@ -231,7 +231,7 @@ static Thread_Control *_Thread_queue_Priority_first(
|
||||
{
|
||||
RBTree_Node *first;
|
||||
|
||||
first = _RBTree_First( &heads->Heads.Priority, RBT_LEFT );
|
||||
first = _RBTree_Minimum( &heads->Heads.Priority );
|
||||
|
||||
return first != NULL ? THREAD_RBTREE_NODE_TO_THREAD( first ) : NULL;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user