summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2015-08-21 05:39:59 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2015-08-31 09:59:41 +0200
commit341f629614052656f1e1676143595a7be908dec2 (patch)
tree44ec0b8372568fecb50f01abd36408171d674ec3
parentsptests/sprbtree01: Avoid internal API (diff)
downloadrtems-341f629614052656f1e1676143595a7be908dec2.tar.bz2
rbtree: Add _RBTree_Minimum(), _RBTree_Maximum()
-rw-r--r--cpukit/sapi/include/rtems/rbtree.h16
-rw-r--r--cpukit/score/include/rtems/score/rbtree.h30
-rw-r--r--cpukit/score/include/rtems/score/scheduleredfimpl.h2
-rw-r--r--cpukit/score/src/threadqops.c2
4 files changed, 38 insertions, 12 deletions
diff --git a/cpukit/sapi/include/rtems/rbtree.h b/cpukit/sapi/include/rtems/rbtree.h
index 900506fdc7..cf4cd60a9a 100644
--- a/cpukit/sapi/include/rtems/rbtree.h
+++ b/cpukit/sapi/include/rtems/rbtree.h
@@ -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 );
}
/**
diff --git a/cpukit/score/include/rtems/score/rbtree.h b/cpukit/score/include/rtems/score/rbtree.h
index 299b75ad2c..9c5bf65e34 100644
--- a/cpukit/score/include/rtems/score/rbtree.h
+++ b/cpukit/score/include/rtems/score/rbtree.h
@@ -484,6 +484,36 @@ RTEMS_INLINE_ROUTINE void _RBTree_Initialize_empty(
}
/**
+ * @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.
*
* @param[in] node is the node.
diff --git a/cpukit/score/include/rtems/score/scheduleredfimpl.h b/cpukit/score/include/rtems/score/scheduleredfimpl.h
index af0749df88..4feea71e51 100644
--- a/cpukit/score/include/rtems/score/scheduleredfimpl.h
+++ b/cpukit/score/include/rtems/score/scheduleredfimpl.h
@@ -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;
diff --git a/cpukit/score/src/threadqops.c b/cpukit/score/src/threadqops.c
index d19067fab1..c9e2b5d9ba 100644
--- a/cpukit/score/src/threadqops.c
+++ b/cpukit/score/src/threadqops.c
@@ -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;
}