diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-07-22 22:49:09 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-07-29 14:05:17 +0200 |
commit | b767683a5ea38b0b947e9f26f4b91cf730b5e217 (patch) | |
tree | 97cb54cadef8464308379e2edb5d75a58b65eed2 /cpukit | |
parent | rbtree: Simplify off-tree handling (diff) | |
download | rtems-b767683a5ea38b0b947e9f26f4b91cf730b5e217.tar.bz2 |
rbtree: Rename find header in find control
Simplify _RBTree_Find_control(). Avoid superfluous NULL pointer checks.
Diffstat (limited to 'cpukit')
-rw-r--r-- | cpukit/sapi/include/rtems/rbtree.h | 8 | ||||
-rw-r--r-- | cpukit/score/include/rtems/score/rbtree.h | 29 |
2 files changed, 23 insertions, 14 deletions
diff --git a/cpukit/sapi/include/rtems/rbtree.h b/cpukit/sapi/include/rtems/rbtree.h index dbc6d20d70..4e6d852812 100644 --- a/cpukit/sapi/include/rtems/rbtree.h +++ b/cpukit/sapi/include/rtems/rbtree.h @@ -369,13 +369,13 @@ RTEMS_INLINE_ROUTINE rtems_rbtree_node *rtems_rbtree_peek_max( } /** - * @copydoc _RBTree_Find_header() + * @copydoc _RBTree_Find_control() */ -RTEMS_INLINE_ROUTINE rtems_rbtree_control *rtems_rbtree_find_header( - rtems_rbtree_node *the_node +RTEMS_INLINE_ROUTINE rtems_rbtree_control *rtems_rbtree_find_control( + const rtems_rbtree_node *the_node ) { - return _RBTree_Find_header( the_node ); + return _RBTree_Find_control( the_node ); } /** diff --git a/cpukit/score/include/rtems/score/rbtree.h b/cpukit/score/include/rtems/score/rbtree.h index 94c8ee567e..c4effceb50 100644 --- a/cpukit/score/include/rtems/score/rbtree.h +++ b/cpukit/score/include/rtems/score/rbtree.h @@ -431,19 +431,28 @@ RTEMS_INLINE_ROUTINE bool _RBTree_Is_root( } /** - * @brief Find the RBTree_Control header given a node in the tree. + * @brief Finds the red-black tree control given a node in the tree. * - * This function returns a pointer to the header of the Red Black - * Tree containing @a the_node if it exists, and NULL if not. + * In case the node is not a node of a tree, then this function yields + * unpredictable results. + * + * @param[in] the_node The node of interest. + * + * @return The red-black tree control of the node. */ -RTEMS_INLINE_ROUTINE RBTree_Control *_RBTree_Find_header( - RBTree_Node *the_node - ) +RTEMS_INLINE_ROUTINE RBTree_Control *_RBTree_Find_control( + const RBTree_Node *the_node +) { - if(!the_node) return NULL; - if(!(the_node->parent)) return NULL; - while(the_node->parent) the_node = the_node->parent; - return (RBTree_Control*)the_node; + RBTree_Node *parent = the_node->parent; + RBTree_Control *rbtree; + + do { + rbtree = (RBTree_Control *) parent; + parent = parent->parent; + } while ( parent != NULL ); + + return rbtree; } /** |