diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2012-04-10 10:25:14 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2012-04-11 11:24:18 +0200 |
commit | dc62a48cc5fc95f9bbe7ab2ed2712b70987bde6f (patch) | |
tree | ed98e81b6edd2b670c7a29f6004ef9e289d89fa3 /cpukit/score/inline/rtems | |
parent | PR2052: LEON3: fix open_eth interrupt initialization bug (diff) | |
download | rtems-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.inl | 74 |
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) |