diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2012-12-22 17:57:07 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-01-02 16:31:28 +0100 |
commit | 53afcfd24613d8e485f3534fae96be10e7e1293a (patch) | |
tree | 1abc633885993c3b18e5186544448cdb63f83198 /cpukit/score/src | |
parent | score: Doxygen Clean Up Task #1 (diff) | |
download | rtems-53afcfd24613d8e485f3534fae96be10e7e1293a.tar.bz2 |
score: Do not inline _RBTree_Find_unprotected()
This function is to big to inline. It leads also to test case
explosion.
Diffstat (limited to 'cpukit/score/src')
-rw-r--r-- | cpukit/score/src/rbtreefind.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/cpukit/score/src/rbtreefind.c b/cpukit/score/src/rbtreefind.c index 2e8cdc3bff..3f205ab391 100644 --- a/cpukit/score/src/rbtreefind.c +++ b/cpukit/score/src/rbtreefind.c @@ -36,3 +36,27 @@ RBTree_Node *_RBTree_Find( _ISR_Enable( level ); return return_node; } + +RBTree_Node *_RBTree_Find_unprotected( + RBTree_Control *the_rbtree, + RBTree_Node *the_node +) +{ + RBTree_Node* iter_node = the_rbtree->root; + RBTree_Node* found = NULL; + int compare_result; + while (iter_node) { + compare_result = the_rbtree->compare_function(the_node, iter_node); + if ( _RBTree_Is_equal( compare_result ) ) { + found = iter_node; + if ( the_rbtree->is_unique ) + break; + } + + RBTree_Direction dir = + (RBTree_Direction) _RBTree_Is_greater( compare_result ); + iter_node = iter_node->child[dir]; + } /* while(iter_node) */ + + return found; +} |