diff options
Diffstat (limited to 'cpukit/score/src/rbtreefind.c')
-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; +} |