diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-07-21 18:16:47 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-07-22 12:31:39 +0200 |
commit | d7a946937807076a84a4f07b4536e3eca30727d2 (patch) | |
tree | b9f04633117ff6ed991dc74eb9b86d57f848e283 /cpukit | |
parent | rbtree: Format (diff) | |
download | rtems-d7a946937807076a84a4f07b4536e3eca30727d2.tar.bz2 |
rbtree: Remove superfluous NULL pointer checks
Diffstat (limited to 'cpukit')
-rw-r--r-- | cpukit/score/include/rtems/score/rbtree.h | 40 | ||||
-rw-r--r-- | cpukit/score/src/rbtree.c | 4 | ||||
-rw-r--r-- | cpukit/score/src/rbtreeextract.c | 11 | ||||
-rw-r--r-- | cpukit/score/src/rbtreeinsert.c | 4 |
4 files changed, 23 insertions, 36 deletions
diff --git a/cpukit/score/include/rtems/score/rbtree.h b/cpukit/score/include/rtems/score/rbtree.h index a219a6e9b4..7c88326ba4 100644 --- a/cpukit/score/include/rtems/score/rbtree.h +++ b/cpukit/score/include/rtems/score/rbtree.h @@ -229,10 +229,9 @@ RBTree_Node *_RBTree_Find( * @param[in] is_unique If true, then reject nodes with a duplicate key, else * otherwise. * - * @retval 0 Successfully inserted. - * @retval -1 NULL @a the_node. - * @retval RBTree_Node* if one with equal value to @a the_node 's key exists - * in an unique @a the_rbtree. + * @retval NULL Successfully inserted. + * @retval existing_node This is a unique insert and there exists a node with + * an equal key in the tree already. */ RBTree_Node *_RBTree_Insert( RBTree_Control *the_rbtree, @@ -481,25 +480,32 @@ RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Successor( } /** - * @brief Get the first node. + * @brief Gets a node with an extremal key value. * - * This function removes the minimum or maximum node from the_rbtree and - * returns a pointer to that node. + * This function extracts a node with the minimum or maximum key value from + * tree and returns a pointer to that node if it exists. In case multiple + * nodes with an extremal key value exist, then they are extracted in FIFO + * order. * - * @param[in] the_rbtree is the rbtree to attempt to get the min node from. - * @param[in] dir specifies whether to get minimum (0) or maximum (1) - * - * @return This method returns the min or max node on the rbtree, or NULL. + * @param[in] the_rbtree The red-black tree control. + * @param[in] dir Specifies whether to get a node with the minimum (RBT_LEFT) + * or maximum (RBT_RIGHT) key value. * - * @note This routine may return NULL if the RBTree is empty. + * @retval NULL The tree is empty. + * @retval extremal_node A node with the minimal or maximal key value on the + * tree. */ RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Get( - RBTree_Control *the_rbtree, - RBTree_Direction dir - ) + RBTree_Control *the_rbtree, + RBTree_Direction dir +) { - RBTree_Node *the_node = the_rbtree->first[dir]; - _RBTree_Extract(the_rbtree, the_node); + RBTree_Node *the_node = the_rbtree->first[ dir ]; + + if ( the_node != NULL ) { + _RBTree_Extract( the_rbtree, the_node ); + } + return the_node; } diff --git a/cpukit/score/src/rbtree.c b/cpukit/score/src/rbtree.c index d5f758c6f9..064cc0c19f 100644 --- a/cpukit/score/src/rbtree.c +++ b/cpukit/score/src/rbtree.c @@ -34,10 +34,6 @@ void _RBTree_Initialize( size_t count; RBTree_Node *next; - /* TODO: Error message? */ - if ( !the_rbtree ) - return; - /* could do sanity checks here */ _RBTree_Initialize_empty( the_rbtree ); diff --git a/cpukit/score/src/rbtreeextract.c b/cpukit/score/src/rbtreeextract.c index e4278a4f06..0ea805bd59 100644 --- a/cpukit/score/src/rbtreeextract.c +++ b/cpukit/score/src/rbtreeextract.c @@ -11,7 +11,6 @@ #endif #include <rtems/score/rbtreeimpl.h> -#include <rtems/score/isr.h> /** @brief Validate and fix-up tree properties after deleting a node * @@ -91,13 +90,6 @@ static void _RBTree_Extract_validate( RBTree_Node *the_node ) the_node->color = RBT_BLACK; } -/** @brief Extract a Node (unprotected) - * - * This routine extracts (removes) @a the_node from @a the_rbtree. - * - * @note It does NOT disable interrupts to ensure the atomicity - * of the extract operation. - */ void _RBTree_Extract( RBTree_Control *the_rbtree, RBTree_Node *the_node @@ -107,9 +99,6 @@ void _RBTree_Extract( RBTree_Color victim_color; RBTree_Direction dir; - if ( !the_node ) - return; - /* check if min needs to be updated */ if ( the_node == the_rbtree->first[ RBT_LEFT ] ) { RBTree_Node *next; diff --git a/cpukit/score/src/rbtreeinsert.c b/cpukit/score/src/rbtreeinsert.c index c77c5748bf..b31c8e7bb7 100644 --- a/cpukit/score/src/rbtreeinsert.c +++ b/cpukit/score/src/rbtreeinsert.c @@ -11,7 +11,6 @@ #endif #include <rtems/score/rbtreeimpl.h> -#include <rtems/score/isr.h> /** @brief Validate and fix-up tree properties for a new insert/colored node * @@ -67,9 +66,6 @@ RBTree_Node *_RBTree_Insert( bool is_unique ) { - if ( !the_node ) - return (RBTree_Node *) -1; - RBTree_Node *iter_node = the_rbtree->root; if ( !iter_node ) { /* special case: first node inserted */ |