Changeset 64939bc in rtems
- Timestamp:
- 07/12/14 19:22:22 (9 years ago)
- Branches:
- 4.11, 5, master
- Children:
- ed7a028
- Parents:
- 7e119990
- git-author:
- Sebastian Huber <sebastian.huber@…> (07/12/14 19:22:22)
- git-committer:
- Joel Sherrill <joel.sherrill@…> (07/15/14 15:03:48)
- Files:
-
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
cpukit/posix/include/rtems/posix/keyimpl.h
r7e119990 r64939bc 43 43 * @brief The rbtree control block used to manage all key values 44 44 */ 45 POSIX_EXTERNRBTree_Control _POSIX_Keys_Key_value_lookup_tree;45 extern RBTree_Control _POSIX_Keys_Key_value_lookup_tree; 46 46 47 47 /** … … 62 62 * This routine compares the rbtree node 63 63 */ 64 int _POSIX_Keys_Key_value_ lookup_tree_compare_function(64 int _POSIX_Keys_Key_value_compare( 65 65 const RBTree_Node *node1, 66 66 const RBTree_Node *node2 … … 166 166 } 167 167 168 RTEMS_INLINE_ROUTINE RBTree_Node *_POSIX_Keys_Find( 169 pthread_key_t key, 170 Objects_Id thread_id, 171 POSIX_Keys_Key_value_pair *search_node 172 ) 173 { 174 search_node->key = key; 175 search_node->thread_id = thread_id; 176 177 return _RBTree_Find( 178 &_POSIX_Keys_Key_value_lookup_tree, 179 &search_node->Key_value_lookup_node, 180 _POSIX_Keys_Key_value_compare, 181 true 182 ); 183 } 184 168 185 /** @} */ 169 186 -
cpukit/posix/src/key.c
r7e119990 r64939bc 27 27 #include <rtems/score/wkspace.h> 28 28 29 RBTREE_DEFINE_EMPTY( _POSIX_Keys_Key_value_lookup_tree ); 30 29 31 /** 30 32 * @brief This routine compares the rbtree node by comparing POSIX key first … … 43 45 */ 44 46 45 int _POSIX_Keys_Key_value_ lookup_tree_compare_function(47 int _POSIX_Keys_Key_value_compare( 46 48 const RBTree_Node *node1, 47 49 const RBTree_Node *node2 … … 154 156 ); 155 157 156 _RBTree_Initialize_empty(157 &_POSIX_Keys_Key_value_lookup_tree,158 _POSIX_Keys_Key_value_lookup_tree_compare_function,159 true160 );161 162 158 _POSIX_Keys_Initialize_keypool(); 163 159 } -
cpukit/posix/src/keyfreememory.c
r7e119990 r64939bc 33 33 34 34 key_id = the_key->Object.id; 35 search_node.key = key_id; 36 search_node.thread_id = 0; 37 iter = _RBTree_Find( &_POSIX_Keys_Key_value_lookup_tree, &search_node.Key_value_lookup_node ); 35 iter = _POSIX_Keys_Find( key_id, 0, &search_node ); 38 36 if ( !iter ) 39 37 return; -
cpukit/posix/src/keygetspecific.c
r7e119990 r64939bc 50 50 51 51 case OBJECTS_LOCAL: 52 search_node.key = key; 53 search_node.thread_id = _Thread_Executing->Object.id; 54 p = _RBTree_Find( &_POSIX_Keys_Key_value_lookup_tree, 55 &search_node.Key_value_lookup_node ); 56 key_data = NULL; 57 if ( p ) { 52 p = _POSIX_Keys_Find( key, _Thread_Executing->Object.id, &search_node ); 53 if ( p != NULL ) { 58 54 value_pair_p = _RBTree_Container_of( p, 59 55 POSIX_Keys_Key_value_pair, 60 56 Key_value_lookup_node ); 61 /* key_data = _RBTree_Container_of( p, */62 /* POSIX_Keys_Key_value_pair, */63 /* Key_value_lookup_node )->value; */64 57 key_data = value_pair_p->value; 58 } else { 59 key_data = NULL; 65 60 } 66 61 -
cpukit/posix/src/keysetspecific.c
r7e119990 r64939bc 45 45 46 46 case OBJECTS_LOCAL: 47 search_node.key = key; 48 search_node.thread_id = _Thread_Executing->Object.id; 49 p = _RBTree_Find( &_POSIX_Keys_Key_value_lookup_tree, 50 &search_node.Key_value_lookup_node ); 51 52 if ( p ) { 47 p = _POSIX_Keys_Find( key, _Thread_Executing->Object.id, &search_node ); 48 if ( p != NULL ) { 53 49 value_pair_ptr = _RBTree_Container_of( p, 54 50 POSIX_Keys_Key_value_pair, … … 70 66 /* The insert can only go wrong if the same node is already in a unique 71 67 * tree. This has been already checked with the _RBTree_Find() */ 72 (void) _RBTree_Insert( &_POSIX_Keys_Key_value_lookup_tree, 73 &(value_pair_ptr->Key_value_lookup_node) ); 68 _RBTree_Insert( 69 &_POSIX_Keys_Key_value_lookup_tree, 70 &value_pair_ptr->Key_value_lookup_node, 71 _POSIX_Keys_Key_value_compare, 72 true 73 ); 74 74 75 75 /** append rb_node to the thread API extension's chain */ -
cpukit/sapi/include/rtems/rbtree.h
r7e119990 r64939bc 56 56 57 57 /** 58 * @typedef rtems_rbtree_compare_function59 *60 58 * This type defines function pointers for user-provided comparison 61 59 * function. The function compares two nodes in order to determine 62 60 * the order in a red-black tree. 63 61 */ 64 typedef RBTree_Compare _function rtems_rbtree_compare_function;62 typedef RBTree_Compare rtems_rbtree_compare; 65 63 66 64 /** … … 94 92 */ 95 93 RTEMS_INLINE_ROUTINE void rtems_rbtree_initialize( 96 rtems_rbtree_control 97 rtems_rbtree_compare _function compare_function,98 void 99 size_t 100 size_t 101 bool 102 ) 103 { 104 _RBTree_Initialize( the_rbtree, compare _function, starting_address,94 rtems_rbtree_control *the_rbtree, 95 rtems_rbtree_compare compare, 96 void *starting_address, 97 size_t number_nodes, 98 size_t node_size, 99 bool is_unique 100 ) 101 { 102 _RBTree_Initialize( the_rbtree, compare, starting_address, 105 103 number_nodes, node_size, is_unique); 106 104 } … … 112 110 */ 113 111 RTEMS_INLINE_ROUTINE void rtems_rbtree_initialize_empty( 114 rtems_rbtree_control *the_rbtree, 115 rtems_rbtree_compare_function compare_function, 116 bool is_unique 117 ) 118 { 119 _RBTree_Initialize_empty( the_rbtree, compare_function, is_unique ); 112 rtems_rbtree_control *the_rbtree 113 ) 114 { 115 _RBTree_Initialize_empty( the_rbtree ); 120 116 } 121 117 … … 278 274 RTEMS_INLINE_ROUTINE rtems_rbtree_node* rtems_rbtree_find( 279 275 const rtems_rbtree_control *the_rbtree, 280 const rtems_rbtree_node *the_node 281 ) 282 { 283 return _RBTree_Find( the_rbtree, the_node ); 276 const rtems_rbtree_node *the_node, 277 rtems_rbtree_compare compare, 278 bool is_unique 279 ) 280 { 281 return _RBTree_Find( the_rbtree, the_node, compare, is_unique ); 284 282 } 285 283 … … 386 384 RTEMS_INLINE_ROUTINE rtems_rbtree_node *rtems_rbtree_insert( 387 385 rtems_rbtree_control *the_rbtree, 388 rtems_rbtree_node *the_node 389 ) 390 { 391 return _RBTree_Insert( the_rbtree, the_node ); 392 } 393 394 /** 395 * @brief Determines whether the tree is unique. 396 */ 397 RTEMS_INLINE_ROUTINE bool rtems_rbtree_is_unique( 398 const rtems_rbtree_control *the_rbtree 399 ) 400 { 401 return _RBTree_Is_unique(the_rbtree); 386 rtems_rbtree_node *the_node, 387 rtems_rbtree_compare compare, 388 bool is_unique 389 ) 390 { 391 return _RBTree_Insert( the_rbtree, the_node, compare, is_unique ); 402 392 } 403 393 -
cpukit/sapi/src/rbheap.c
r7e119990 r64939bc 81 81 ) 82 82 { 83 _RBTree_Insert(tree, &chunk->tree_node);83 rtems_rbtree_insert(tree, &chunk->tree_node, chunk_compare, true); 84 84 } 85 85 … … 108 108 rtems_chain_initialize_empty(free_chain); 109 109 rtems_chain_initialize_empty(&control->spare_descriptor_chain); 110 rtems_rbtree_initialize_empty(chunk_tree , chunk_compare, true);110 rtems_rbtree_initialize_empty(chunk_tree); 111 111 control->alignment = alignment; 112 112 control->handler_arg = handler_arg; … … 199 199 200 200 return rtems_rbheap_chunk_of_node( 201 _RBTree_Find(chunk_tree, &chunk.tree_node)201 rtems_rbtree_find(chunk_tree, &chunk.tree_node, chunk_compare, true) 202 202 ); 203 203 } … … 231 231 rtems_chain_extract_unprotected(&b->chain_node); 232 232 add_to_chain(free_chain, b); 233 _RBTree_Extract(chunk_tree, &b->tree_node);233 rtems_rbtree_extract(chunk_tree, &b->tree_node); 234 234 } 235 235 } -
cpukit/score/include/rtems/score/rbtree.h
r7e119990 r64939bc 105 105 106 106 /** 107 * This type defines function pointers for user-provided comparison 108 * function. The function compares two nodes in order to determine 109 * the order in a red-black tree. 110 */ 111 typedef int (*RBTree_Compare_function)( 112 const RBTree_Node *node1, 113 const RBTree_Node *node2 107 * @brief Compares two red-black tree nodes. 108 * 109 * @param[in] first The first node. 110 * @param[in] second The second node. 111 * 112 * @retval positive The key value of the first node is greater than the one of 113 * the second node. 114 * @retval 0 The key value of the first node is equal to the one of the second 115 * node. 116 * @retval negative The key value of the first node is less than the one of the 117 * second node. 118 */ 119 typedef int ( *RBTree_Compare )( 120 const RBTree_Node *first, 121 const RBTree_Node *second 114 122 ); 115 123 … … 140 148 /** This points to the min and max nodes of this RBT. */ 141 149 RBTree_Node *first[2]; 142 /**143 * Comparison function pointer. Keys to compare have to be found144 * inside to maintain generality. It has to return 1 if first node145 * has higher key than second, -1 if lower, 0 if equal.146 */147 RBTree_Compare_function compare_function;148 /** Determines whether the tree accepts duplicate keys. */149 bool is_unique;150 150 } RBTree_Control; 151 151 … … 153 153 * @brief RBTree initializer for an empty rbtree with designator @a name. 154 154 */ 155 #define RBTREE_INITIALIZER_EMPTY(name) \ 156 { \ 157 .permanent_null = NULL, \ 158 .root = NULL, \ 159 .first[0] = NULL, \ 160 .first[1] = NULL, \ 161 .compare_function = NULL, \ 162 .is_unique = 0 \ 163 } 155 #define RBTREE_INITIALIZER_EMPTY( name ) \ 156 { NULL, NULL, { NULL, NULL } } 164 157 165 158 /** 166 159 * @brief RBTree definition for an empty rbtree with designator @a name. 167 160 */ 168 #define RBTREE_DEFINE_EMPTY( name) \169 RBTree_Control name = RBTREE_INITIALIZER_EMPTY(name)161 #define RBTREE_DEFINE_EMPTY( name ) \ 162 RBTree_Control name = RBTREE_INITIALIZER_EMPTY( name ) 170 163 171 164 /** 172 165 * @brief RBTree_Node initializer for an empty node with designator @a name. 173 166 */ 174 #define RBTREE_NODE_INITIALIZER_EMPTY(name) \ 175 { \ 176 .parent = NULL, \ 177 .child[0] = NULL, \ 178 .child[1] = NULL, \ 179 RBT_RED \ 180 } 167 #define RBTREE_NODE_INITIALIZER_EMPTY( name ) \ 168 { NULL, { NULL, NULL }, RBT_RED } 181 169 182 170 /** 183 171 * @brief RBTree definition for an empty rbtree with designator @a name. 184 172 */ 185 #define RBTREE_NODE_DEFINE_EMPTY( name) \186 RBTree_Node name = RBTREE_NODE_INITIALIZER_EMPTY(name)173 #define RBTREE_NODE_DEFINE_EMPTY( name ) \ 174 RBTree_Node name = RBTREE_NODE_INITIALIZER_EMPTY( name ) 187 175 188 176 /** … … 194 182 * 195 183 * @param[in] the_rbtree is the pointer to rbtree header 184 * @param[in] compare The node compare function. 196 185 * @param[in] starting_address is the starting address of first node 197 186 * @param[in] number_nodes is the number of nodes in rbtree 198 187 * @param[in] node_size is the size of node in bytes 188 * @param[in] is_unique If true, then reject nodes with a duplicate key, else 189 * otherwise. 199 190 */ 200 191 void _RBTree_Initialize( 201 RBTree_Control 202 RBTree_Compare _function compare_function,203 void 204 size_t 205 size_t 206 bool 192 RBTree_Control *the_rbtree, 193 RBTree_Compare compare, 194 void *starting_address, 195 size_t number_nodes, 196 size_t node_size, 197 bool is_unique 207 198 ); 208 199 … … 212 203 * @param[in] the_rbtree The red-black tree control. 213 204 * @param[in] the_node A node specifying the key. 205 * @param[in] compare The node compare function. 206 * @param[in] is_unique If true, then return the first node with a key equal to 207 * the one of the node specified if it exits, else return the last node if it 208 * exists. 214 209 * 215 210 * @retval node A node corresponding to the key. If the tree is not unique … … 219 214 RBTree_Node *_RBTree_Find( 220 215 const RBTree_Control *the_rbtree, 221 const RBTree_Node *the_node 216 const RBTree_Node *the_node, 217 RBTree_Compare compare, 218 bool is_unique 222 219 ); 223 220 … … 226 223 * 227 224 * This routine inserts @a the_node on the Red-Black Tree @a the_rbtree. 225 * 226 * @param[in] the_rbtree The red-black tree control. 227 * @param[in] the_node The node to insert. 228 * @param[in] compare The node compare function. 229 * @param[in] is_unique If true, then reject nodes with a duplicate key, else 230 * otherwise. 228 231 * 229 232 * @retval 0 Successfully inserted. … … 234 237 RBTree_Node *_RBTree_Insert( 235 238 RBTree_Control *the_rbtree, 236 RBTree_Node *the_node 239 RBTree_Node *the_node, 240 RBTree_Compare compare, 241 bool is_unique 237 242 ); 238 243 … … 438 443 */ 439 444 RTEMS_INLINE_ROUTINE void _RBTree_Initialize_empty( 440 RBTree_Control *the_rbtree, 441 RBTree_Compare_function compare_function, 442 bool is_unique 443 ) 445 RBTree_Control *the_rbtree 446 ) 444 447 { 445 448 the_rbtree->permanent_null = NULL; 446 449 the_rbtree->root = NULL; 447 the_rbtree->first[0] = NULL; 448 the_rbtree->first[1] = NULL; 449 the_rbtree->compare_function = compare_function; 450 the_rbtree->is_unique = is_unique; 450 the_rbtree->first[RBT_LEFT] = NULL; 451 the_rbtree->first[RBT_RIGHT] = NULL; 451 452 } 452 453 … … 503 504 } 504 505 505 /**506 * @brief Determines whether the tree is unique.507 */508 RTEMS_INLINE_ROUTINE bool _RBTree_Is_unique(509 const RBTree_Control *the_rbtree510 )511 {512 return( the_rbtree && the_rbtree->is_unique );513 }514 515 506 /**@}*/ 516 507 -
cpukit/score/include/rtems/score/scheduleredfimpl.h
r7e119990 r64939bc 45 45 } 46 46 47 int _Scheduler_EDF_Compare( 48 const RBTree_Node* n1, 49 const RBTree_Node* n2 50 ); 51 47 52 RTEMS_INLINE_ROUTINE void _Scheduler_EDF_Enqueue( 48 53 const Scheduler_Control *scheduler, … … 54 59 Scheduler_EDF_Node *node = _Scheduler_EDF_Thread_get_node( the_thread ); 55 60 56 _RBTree_Insert( &context->Ready, &node->Node ); 61 _RBTree_Insert( 62 &context->Ready, 63 &node->Node, 64 _Scheduler_EDF_Compare, 65 false 66 ); 57 67 node->queue_state = SCHEDULER_EDF_QUEUE_STATE_YES; 58 68 } -
cpukit/score/src/rbtree.c
r7e119990 r64939bc 24 24 25 25 void _RBTree_Initialize( 26 RBTree_Control 27 RBTree_Compare _function compare_function,28 void 29 size_t 30 size_t 31 bool 26 RBTree_Control *the_rbtree, 27 RBTree_Compare compare, 28 void *starting_address, 29 size_t number_nodes, 30 size_t node_size, 31 bool is_unique 32 32 ) 33 33 { … … 39 39 40 40 /* could do sanity checks here */ 41 _RBTree_Initialize_empty( the_rbtree, compare_function, is_unique);41 _RBTree_Initialize_empty( the_rbtree ); 42 42 43 43 count = number_nodes; 44 44 next = starting_address; 45 45 while ( count-- ) { 46 _RBTree_Insert(the_rbtree, next); 47 next = (RBTree_Node *) 48 _Addresses_Add_offset( (void *) next, node_size ); 46 _RBTree_Insert( the_rbtree, next, compare, is_unique ); 47 next = (RBTree_Node *) _Addresses_Add_offset( next, node_size ); 49 48 } 50 49 } -
cpukit/score/src/rbtreefind.c
r7e119990 r64939bc 19 19 20 20 #include <rtems/score/rbtreeimpl.h> 21 #include <rtems/score/isr.h>22 21 23 22 RBTree_Node *_RBTree_Find( 24 23 const RBTree_Control *the_rbtree, 25 const RBTree_Node *the_node 24 const RBTree_Node *the_node, 25 RBTree_Compare compare, 26 bool is_unique 26 27 ) 27 28 { 28 29 RBTree_Node* iter_node = the_rbtree->root; 29 30 RBTree_Node* found = NULL; 30 int compare_result; 31 while (iter_node) { 32 compare_result = the_rbtree->compare_function(the_node, iter_node); 31 32 while ( iter_node != NULL ) { 33 int compare_result = ( *compare )( the_node, iter_node ); 34 RBTree_Direction dir; 35 33 36 if ( _RBTree_Is_equal( compare_result ) ) { 34 37 found = iter_node; 35 if ( the_rbtree->is_unique )38 if ( is_unique ) 36 39 break; 37 40 } 38 41 39 RBTree_Direction dir = 40 (RBTree_Direction) _RBTree_Is_greater( compare_result ); 41 iter_node = iter_node->child[dir]; 42 } /* while(iter_node) */ 42 dir = (RBTree_Direction) _RBTree_Is_greater( compare_result ); 43 iter_node = iter_node->child[ dir ]; 44 } 43 45 44 46 return found; -
cpukit/score/src/rbtreeinsert.c
r7e119990 r64939bc 60 60 } 61 61 62 63 64 /** @brief Insert a Node (unprotected)65 *66 * This routine inserts @a the_node on the Red-Black Tree @a the_rbtree.67 *68 * @retval 0 Successfully inserted.69 * @retval -1 NULL @a the_node.70 * @retval RBTree_Node* if one with equal key to the key of @a the_node exists71 * in an unique @a the_rbtree.72 *73 * @note It does NOT disable interrupts to ensure the atomicity74 * of the extract operation.75 */76 62 RBTree_Node *_RBTree_Insert( 77 RBTree_Control *the_rbtree, 78 RBTree_Node *the_node 79 ) 63 RBTree_Control *the_rbtree, 64 RBTree_Node *the_node, 65 RBTree_Compare compare, 66 bool is_unique 67 ) 80 68 { 81 69 if(!the_node) return (RBTree_Node*)-1; … … 93 81 /* typical binary search tree insert, descend tree to leaf and insert */ 94 82 while (iter_node) { 95 compare_result = the_rbtree->compare_function(the_node, iter_node);96 if ( the_rbtree->is_unique && _RBTree_Is_equal( compare_result ) )83 compare_result = ( *compare )( the_node, iter_node ); 84 if ( is_unique && _RBTree_Is_equal( compare_result ) ) 97 85 return iter_node; 98 86 RBTree_Direction dir = !_RBTree_Is_lesser( compare_result ); … … 103 91 the_node->parent = iter_node; 104 92 /* update min/max */ 105 compare_result = the_rbtree->compare_function(106 107 _RBTree_First(the_rbtree, dir)93 compare_result = ( *compare )( 94 the_node, 95 _RBTree_First( the_rbtree, dir ) 108 96 ); 109 97 if ( (!dir && _RBTree_Is_lesser(compare_result)) || -
cpukit/score/src/scheduleredf.c
r7e119990 r64939bc 21 21 #include <rtems/score/scheduleredfimpl.h> 22 22 23 static int _Scheduler_EDF_RBTree_compare_function 24 ( 23 int _Scheduler_EDF_Compare( 25 24 const RBTree_Node* n1, 26 25 const RBTree_Node* n2 … … 44 43 _Scheduler_EDF_Get_context( scheduler ); 45 44 46 _RBTree_Initialize_empty( 47 &context->Ready, 48 _Scheduler_EDF_RBTree_compare_function, 49 0 50 ); 45 _RBTree_Initialize_empty( &context->Ready ); 51 46 } -
cpukit/score/src/scheduleredfchangepriority.c
r7e119990 r64939bc 33 33 34 34 _RBTree_Extract( &context->Ready, &node->Node ); 35 _RBTree_Insert( &context->Ready, &node->Node ); 35 _RBTree_Insert( 36 &context->Ready, 37 &node->Node, 38 _Scheduler_EDF_Compare, 39 false 40 ); 36 41 37 42 SCHEDULER_RETURN_VOID_OR_NULL; -
cpukit/score/src/scheduleredfyield.c
r7e119990 r64939bc 36 36 */ 37 37 _RBTree_Extract( &context->Ready, &node->Node ); 38 _RBTree_Insert( &context->Ready, &node->Node ); 38 _RBTree_Insert( 39 &context->Ready, 40 &node->Node, 41 _Scheduler_EDF_Compare, 42 false 43 ); 39 44 40 45 _Scheduler_EDF_Schedule_body( scheduler, the_thread, false ); -
testsuites/sptests/sprbtree01/init.c
r7e119990 r64939bc 43 43 } 44 44 45 /* 46 * recursively checks tree. if the tree is built properly it should only 47 * be a depth of 7 function calls for 100 entries in the tree. 45 static rtems_rbtree_node *rb_insert_unique( 46 rtems_rbtree_control *rbtree, 47 rtems_rbtree_node *node 48 ) 49 { 50 return rtems_rbtree_insert( rbtree, node, test_compare_function, true ); 51 } 52 53 static rtems_rbtree_node *rb_insert_multi( 54 rtems_rbtree_control *rbtree, 55 rtems_rbtree_node *node 56 ) 57 { 58 return rtems_rbtree_insert( rbtree, node, test_compare_function, false ); 59 } 60 61 static rtems_rbtree_node *rb_find_unique( 62 rtems_rbtree_control *rbtree, 63 rtems_rbtree_node *node 64 ) 65 { 66 return rtems_rbtree_find( rbtree, node, test_compare_function, true ); 67 } 68 69 static rtems_rbtree_node *rb_find_multi( 70 rtems_rbtree_control *rbtree, 71 rtems_rbtree_node *node 72 ) 73 { 74 return rtems_rbtree_find( rbtree, node, test_compare_function, false ); 75 } 76 77 /* 78 * recursively checks tree. if the tree is built properly it should only 79 * be a depth of 7 function calls for 100 entries in the tree. 48 80 */ 49 81 static int rb_assert ( rtems_rbtree_node *root ) … … 107 139 108 140 puts( "Init - Initialize rbtree empty" ); 109 rtems_rbtree_initialize_empty( &rbtree1, &test_compare_function, true ); 110 111 if ( !rtems_rbtree_is_unique( &rbtree1 ) ) 112 puts( "INIT - FAILED IS UNIQUE CHECK" ); 113 if ( rtems_rbtree_is_unique( NULL ) ) 114 puts( "INIT - FAILED IS UNIQUE CHECK" ); 141 rtems_rbtree_initialize_empty( &rbtree1 ); 115 142 116 143 /* verify that the rbtree insert work */ … … 120 147 node2.id = 2; 121 148 node2.key = 2; 122 r tems_rbtree_insert( &rbtree1, &node1.Node );123 r tems_rbtree_insert( &rbtree1, &node2.Node );124 125 p = r tems_rbtree_insert( &rbtree1, NULL );149 rb_insert_unique( &rbtree1, &node1.Node ); 150 rb_insert_unique( &rbtree1, &node2.Node ); 151 152 p = rb_insert_unique( &rbtree1, NULL ); 126 153 if (p != (void *)(-1)) 127 154 puts( "INIT - FAILED NULL NODE INSERT" ); … … 160 187 puts("INIT - Verify rtems_rbtree_insert with the same value twice"); 161 188 node2.key = node1.key; 162 r tems_rbtree_insert(&rbtree1, &node1.Node);163 p = r tems_rbtree_insert(&rbtree1, &node2.Node);189 rb_insert_unique(&rbtree1, &node1.Node); 190 p = rb_insert_unique(&rbtree1, &node2.Node); 164 191 165 192 if (p != &node1.Node) … … 219 246 node2.id = 1; 220 247 node2.key = 1; 221 r tems_rbtree_insert( &rbtree1, &node1.Node );222 r tems_rbtree_insert( &rbtree1, &node2.Node );248 rb_insert_unique( &rbtree1, &node1.Node ); 249 rb_insert_unique( &rbtree1, &node2.Node ); 223 250 224 251 puts( "INIT - Verify rtems_rbtree_peek_max/min, rtems_rbtree_extract" ); … … 238 265 rtems_test_exit(0); 239 266 } 240 r tems_rbtree_insert(&rbtree1, p);267 rb_insert_unique(&rbtree1, p); 241 268 242 269 for ( p = rtems_rbtree_get_min(&rbtree1), id = 1 ; p ; … … 257 284 node_array[i].id = i; 258 285 node_array[i].key = i; 259 r tems_rbtree_insert( &rbtree1, &node_array[i].Node );286 rb_insert_unique( &rbtree1, &node_array[i].Node ); 260 287 261 288 if (!rb_assert(rbtree1.root) ) … … 290 317 node_array[i].id = 99-i; 291 318 node_array[i].key = 99-i; 292 r tems_rbtree_insert( &rbtree1, &node_array[i].Node );319 rb_insert_unique( &rbtree1, &node_array[i].Node ); 293 320 294 321 if (!rb_assert(rbtree1.root) ) … … 325 352 node_array[i].id = i; 326 353 node_array[i].key = i; 327 r tems_rbtree_insert( &rbtree1, &node_array[i].Node );354 rb_insert_unique( &rbtree1, &node_array[i].Node ); 328 355 329 356 if (!rb_assert(rbtree1.root) ) … … 377 404 node_array[i].key = i; 378 405 } 379 r tems_rbtree_insert( &rbtree1, &node_array[3].Node );380 r tems_rbtree_insert( &rbtree1, &node_array[1].Node );381 r tems_rbtree_insert( &rbtree1, &node_array[5].Node );382 r tems_rbtree_insert( &rbtree1, &node_array[0].Node );383 r tems_rbtree_insert( &rbtree1, &node_array[2].Node );384 r tems_rbtree_insert( &rbtree1, &node_array[4].Node );385 r tems_rbtree_insert( &rbtree1, &node_array[6].Node );406 rb_insert_unique( &rbtree1, &node_array[3].Node ); 407 rb_insert_unique( &rbtree1, &node_array[1].Node ); 408 rb_insert_unique( &rbtree1, &node_array[5].Node ); 409 rb_insert_unique( &rbtree1, &node_array[0].Node ); 410 rb_insert_unique( &rbtree1, &node_array[2].Node ); 411 rb_insert_unique( &rbtree1, &node_array[4].Node ); 412 rb_insert_unique( &rbtree1, &node_array[6].Node ); 386 413 rtems_rbtree_extract( &rbtree1, &node_array[2].Node ); 387 414 /* node_array[1] has now only a left child. */ … … 396 423 node_array[i].id = 99-i; 397 424 node_array[i].key = 99-i; 398 r tems_rbtree_insert( &rbtree1, &node_array[i].Node );425 rb_insert_unique( &rbtree1, &node_array[i].Node ); 399 426 400 427 if (!rb_assert(rbtree1.root) ) … … 429 456 node_array[i].id = i; 430 457 node_array[i].key = i; 431 r tems_rbtree_insert( &rbtree1, &node_array[i].Node );458 rb_insert_unique( &rbtree1, &node_array[i].Node ); 432 459 433 460 if (!rb_assert(rbtree1.root) ) … … 437 464 puts( "INIT - Verify rtems_rbtree_find" ); 438 465 search_node.key = 30; 439 p = r tems_rbtree_find(&rbtree1, &search_node.Node);466 p = rb_find_unique(&rbtree1, &search_node.Node); 440 467 if(rtems_rbtree_container_of(p,test_node,Node)->id != 30) { 441 468 puts ("INIT - ERROR ON RBTREE ID MISMATCH"); … … 449 476 rtems_test_exit(0); 450 477 } 451 p = r tems_rbtree_find(&rbtree1, &search_node.Node);478 p = rb_find_unique(&rbtree1, &search_node.Node); 452 479 p = rtems_rbtree_successor(p); 453 480 if(p && rtems_rbtree_container_of(p,test_node,Node)->id != 31) { … … 456 483 } 457 484 458 p = r tems_rbtree_find(&rbtree1, &search_node.Node);485 p = rb_find_unique(&rbtree1, &search_node.Node); 459 486 puts( "INIT - Verify rtems_rbtree_find_header" ); 460 487 if (rtems_rbtree_find_header(p) != &rbtree1) { … … 510 537 node_array[i].id = numbers[i]; 511 538 node_array[i].key = numbers[i]; 512 r tems_rbtree_insert( &rbtree1, &node_array[i].Node );539 rb_insert_unique( &rbtree1, &node_array[i].Node ); 513 540 514 541 if (!rb_assert(rbtree1.root) ) … … 574 601 /* Initialize the tree for duplicate keys */ 575 602 puts( "Init - Initialize duplicate rbtree empty" ); 576 rtems_rbtree_initialize_empty( &rbtree1, &test_compare_function, false ); 577 578 if ( rtems_rbtree_is_unique( &rbtree1 ) ) 579 puts( "INIT - FAILED IS UNIQUE CHECK" ); 580 if ( rtems_rbtree_is_unique( NULL ) ) 581 puts( "INIT - FAILED IS UNIQUE CHECK" ); 603 rtems_rbtree_initialize_empty( &rbtree1 ); 582 604 583 605 puts( "INIT - Verify rtems_rbtree_insert with 100 nodes value [0,99]" ); … … 585 607 node_array[i].id = i; 586 608 node_array[i].key = i%5; 587 r tems_rbtree_insert( &rbtree1, &node_array[i].Node );609 rb_insert_multi( &rbtree1, &node_array[i].Node ); 588 610 589 611 if (!rb_assert(rbtree1.root) ) … … 593 615 puts( "INIT - Verify rtems_rbtree_find in a duplicate tree" ); 594 616 search_node.key = 2; 595 p = r tems_rbtree_find(&rbtree1, &search_node.Node);617 p = rb_find_multi(&rbtree1, &search_node.Node); 596 618 if(rtems_rbtree_container_of(p,test_node,Node)->id != 2) { 597 619 puts ("INIT - ERROR ON RBTREE ID MISMATCH"); … … 626 648 node_array[i].id = 99-i; 627 649 node_array[i].key = (99-i)%5; 628 r tems_rbtree_insert( &rbtree1, &node_array[i].Node );650 rb_insert_multi( &rbtree1, &node_array[i].Node ); 629 651 630 652 if (!rb_assert(rbtree1.root) ) … … 634 656 puts( "INIT - Verify rtems_rbtree_find in a duplicate tree" ); 635 657 search_node.key = 2; 636 p = r tems_rbtree_find(&rbtree1, &search_node.Node);658 p = rb_find_multi(&rbtree1, &search_node.Node); 637 659 if(rtems_rbtree_container_of(p,test_node,Node)->id != 97) { 638 660 puts ("INIT - ERROR ON RBTREE ID MISMATCH");
Note: See TracChangeset
for help on using the changeset viewer.