summaryrefslogtreecommitdiffstats
path: root/cpukit/score/inline/rtems
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2012-04-10 10:25:14 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2012-04-11 11:24:18 +0200
commitdc62a48cc5fc95f9bbe7ab2ed2712b70987bde6f (patch)
treeed98e81b6edd2b670c7a29f6004ef9e289d89fa3 /cpukit/score/inline/rtems
parentPR2052: LEON3: fix open_eth interrupt initialization bug (diff)
downloadrtems-dc62a48cc5fc95f9bbe7ab2ed2712b70987bde6f.tar.bz2
rbtree: PR1995: API change
New functions o _RBTree_Next_unprotected(), o _RBTree_Next(), o _RBTree_Successor_unprotected(), o _RBTree_Predecessor_unprotected(), o rtems_rbtree_successor_unprotected(), and o rtems_rbtree_predecessor_unprotected(). Change prototype of o _RBTree_Successor(), o _RBTree_Predecessor(), o rtems_rbtree_successor(), and o rtems_rbtree_predecessor().
Diffstat (limited to 'cpukit/score/inline/rtems')
-rw-r--r--cpukit/score/inline/rtems/score/rbtree.inl74
1 files changed, 48 insertions, 26 deletions
diff --git a/cpukit/score/inline/rtems/score/rbtree.inl b/cpukit/score/inline/rtems/score/rbtree.inl
index 2ce0b2bbdb..d646b067b8 100644
--- a/cpukit/score/inline/rtems/score/rbtree.inl
+++ b/cpukit/score/inline/rtems/score/rbtree.inl
@@ -376,42 +376,64 @@ RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Find_unprotected(
return found;
}
-/** @brief Find the nodes in-order predecessor
+/**
+ * @brief Returns the predecessor of a node.
+ *
+ * @param[in] rbtree The red-black tree.
+ * @param[in] node The node.
+ *
+ * @retval NULL The predecessor does not exist.
+ * @retval otherwise The predecessor node.
+ */
+RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Predecessor_unprotected(
+ const RBTree_Control *rbtree,
+ const RBTree_Node *node
+)
+{
+ return _RBTree_Next_unprotected( rbtree, node, RBT_LEFT );
+}
+
+/**
+ * @copydoc _RBTree_Predecessor_unprotected()
*
- * This function returns a pointer to the in-order predecessor
- * of @a the_node if it exists, and NULL if not.
+ * The function disables the interrupts protect the operation.
*/
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Predecessor(
- RBTree_Node *the_node
- )
+ const RBTree_Control *rbtree,
+ const RBTree_Node *node
+)
{
- RBTree_Node* iter_node;
- if (!the_node) return NULL;
- iter_node = the_node->child[RBT_LEFT];
- if (!iter_node) return NULL;
- while (iter_node->child[RBT_RIGHT]) {
- iter_node = iter_node->child[RBT_RIGHT];
- }
- return iter_node;
+ return _RBTree_Next( rbtree, node, RBT_LEFT );
}
-/** @brief Find the nodes in-order successor
+/**
+ * @brief Returns the successor of a node.
+ *
+ * @param[in] rbtree The red-black tree.
+ * @param[in] node The node.
+ *
+ * @retval NULL The successor does not exist.
+ * @retval otherwise The successor node.
+ */
+RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Successor_unprotected(
+ const RBTree_Control *rbtree,
+ const RBTree_Node *node
+)
+{
+ return _RBTree_Next_unprotected( rbtree, node, RBT_RIGHT );
+}
+
+/**
+ * @copydoc _RBTree_Successor_unprotected()
*
- * This function returns a pointer to the in-order successor
- * of @a the_node if it exists, and NULL if not.
+ * The function disables the interrupts protect the operation.
*/
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Successor(
- RBTree_Node *the_node
- )
+ const RBTree_Control *rbtree,
+ const RBTree_Node *node
+)
{
- RBTree_Node* iter_node;
- if (!the_node) return NULL;
- iter_node = the_node->child[RBT_RIGHT];
- if (!iter_node) return NULL;
- while (iter_node->child[RBT_LEFT]) {
- iter_node = iter_node->child[RBT_LEFT];
- }
- return iter_node;
+ return _RBTree_Next( rbtree, node, RBT_RIGHT );
}
/** @brief Get the First Node (unprotected)