summaryrefslogtreecommitdiffstats
path: root/cpukit/score/src/rbtreefind.c
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/score/src/rbtreefind.c')
-rw-r--r--cpukit/score/src/rbtreefind.c24
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;
+}