[rtems commit] rbtree: Add _RBTree_Minimum(), _RBTree_Maximum()

Sebastian Huber sebh at rtems.org
Mon Aug 31 08:41:20 UTC 2015


Module:    rtems
Branch:    master
Commit:    341f629614052656f1e1676143595a7be908dec2
Changeset: http://git.rtems.org/rtems/commit/?id=341f629614052656f1e1676143595a7be908dec2

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Fri Aug 21 05:39:59 2015 +0200

rbtree: Add _RBTree_Minimum(), _RBTree_Maximum()

---

 cpukit/sapi/include/rtems/rbtree.h                 | 16 +++++-------
 cpukit/score/include/rtems/score/rbtree.h          | 30 ++++++++++++++++++++++
 .../score/include/rtems/score/scheduleredfimpl.h   |  2 +-
 cpukit/score/src/threadqops.c                      |  2 +-
 4 files changed, 38 insertions(+), 12 deletions(-)

diff --git a/cpukit/sapi/include/rtems/rbtree.h b/cpukit/sapi/include/rtems/rbtree.h
index 900506f..cf4cd60 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 299b75a..9c5bf65 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 af0749d..4feea71 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 d19067f..c9e2b5d 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;
 }



More information about the vc mailing list