rbtree: Add _RBTree_Minimum(), _RBTree_Maximum()

This commit is contained in:
Sebastian Huber
2015-08-31 09:59:41 +02:00
parent d7c93070cc
commit 341f629614
4 changed files with 38 additions and 12 deletions
+6 -10
View File
@@ -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 );
}
/**
+30
View File
@@ -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;
+1 -1
View File
@@ -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;
}