Changeset 40dcafa in rtems
- Timestamp:
- 08/02/14 14:22:31 (8 years ago)
- Branches:
- 4.11, 5, master
- Children:
- 60fe374
- Parents:
- b767683a
- git-author:
- Sebastian Huber <sebastian.huber@…> (08/02/14 14:22:31)
- git-committer:
- Sebastian Huber <sebastian.huber@…> (08/05/14 07:30:33)
- Files:
-
- 21 edited
Legend:
- Unmodified
- Added
- Removed
-
cpukit/libblock/src/bdbuf.c
rb767683a r40dcafa 3179 3179 while ((node = rtems_chain_get_unprotected (chain)) != NULL) 3180 3180 { 3181 rtems_disk_device *dd = (rtems_disk_device *)3182 ((char *) node - offsetof (rtems_disk_device, read_ahead.node));3181 rtems_disk_device *dd = 3182 RTEMS_CONTAINER_OF (node, rtems_disk_device, read_ahead.node); 3183 3183 rtems_blkdev_bnum block = dd->read_ahead.next; 3184 3184 rtems_blkdev_bnum media_block = 0; -
cpukit/posix/include/rtems/posix/keyimpl.h
rb767683a r40dcafa 49 49 */ 50 50 POSIX_EXTERN Freechain_Control _POSIX_Keys_Keypool; 51 52 #define POSIX_KEYS_RBTREE_NODE_TO_KEY_VALUE_PAIR( node ) \ 53 RTEMS_CONTAINER_OF( node, POSIX_Keys_Key_value_pair, Key_value_lookup_node ) 51 54 52 55 /** -
cpukit/posix/src/key.c
rb767683a r40dcafa 55 55 int diff; 56 56 57 n1 = _RBTree_Container_of( node1, POSIX_Keys_Key_value_pair, Key_value_lookup_node);58 n2 = _RBTree_Container_of( node2, POSIX_Keys_Key_value_pair, Key_value_lookup_node);57 n1 = POSIX_KEYS_RBTREE_NODE_TO_KEY_VALUE_PAIR( node1 ); 58 n2 = POSIX_KEYS_RBTREE_NODE_TO_KEY_VALUE_PAIR( node2 ); 59 59 60 60 diff = n1->key - n2->key; -
cpukit/posix/src/keyfreememory.c
rb767683a r40dcafa 40 40 */ 41 41 next = _RBTree_Next( iter, RBT_LEFT ); 42 p = _RBTree_Container_of( next, POSIX_Keys_Key_value_pair, Key_value_lookup_node);42 p = POSIX_KEYS_RBTREE_NODE_TO_KEY_VALUE_PAIR( next ); 43 43 while ( next != NULL && p->key == key_id) { 44 44 iter = next; 45 45 next = _RBTree_Next( iter, RBT_LEFT ); 46 p = _RBTree_Container_of( next, POSIX_Keys_Key_value_pair, Key_value_lookup_node);46 p = POSIX_KEYS_RBTREE_NODE_TO_KEY_VALUE_PAIR( next ); 47 47 } 48 48 … … 50 50 * delete all nodes belongs to the_key from the rbtree and chain. 51 51 */ 52 p = _RBTree_Container_of( iter, POSIX_Keys_Key_value_pair, Key_value_lookup_node);52 p = POSIX_KEYS_RBTREE_NODE_TO_KEY_VALUE_PAIR( iter ); 53 53 while ( iter != NULL && p->key == key_id ) { 54 54 next = _RBTree_Next( iter, RBT_RIGHT ); … … 58 58 59 59 iter = next; 60 p = _RBTree_Container_of( iter, POSIX_Keys_Key_value_pair, Key_value_lookup_node);60 p = POSIX_KEYS_RBTREE_NODE_TO_KEY_VALUE_PAIR( iter ); 61 61 } 62 62 } -
cpukit/posix/src/keygetspecific.c
rb767683a r40dcafa 52 52 p = _POSIX_Keys_Find( key, _Thread_Executing->Object.id, &search_node ); 53 53 if ( p != NULL ) { 54 value_pair_p = _RBTree_Container_of( p, 55 POSIX_Keys_Key_value_pair, 56 Key_value_lookup_node ); 54 value_pair_p = POSIX_KEYS_RBTREE_NODE_TO_KEY_VALUE_PAIR( p ); 57 55 key_data = value_pair_p->value; 58 56 } else { -
cpukit/posix/src/keysetspecific.c
rb767683a r40dcafa 47 47 p = _POSIX_Keys_Find( key, _Thread_Executing->Object.id, &search_node ); 48 48 if ( p != NULL ) { 49 value_pair_ptr = _RBTree_Container_of( p, 50 POSIX_Keys_Key_value_pair, 51 Key_value_lookup_node ); 52 49 value_pair_ptr = POSIX_KEYS_RBTREE_NODE_TO_KEY_VALUE_PAIR( p ); 53 50 value_pair_ptr->value = value; 54 51 } else { -
cpukit/sapi/include/rtems/rbheap.h
rb767683a r40dcafa 255 255 256 256 #define rtems_rbheap_chunk_of_node(node) \ 257 rtems_rbtree_container_of(node, rtems_rbheap_chunk, tree_node)257 RTEMS_CONTAINER_OF(node, rtems_rbheap_chunk, tree_node) 258 258 259 259 static inline bool rtems_rbheap_is_chunk_free(const rtems_rbheap_chunk *chunk) -
cpukit/sapi/include/rtems/rbtree.h
rb767683a r40dcafa 75 75 76 76 /** 77 * @brief macro to return the structure containing the @a node.78 *79 * This macro returns a pointer of type @a object_type that points80 * to the structure containing @a node, where @a object_member is the81 * field name of the rtems_rbtree_node structure in objects of @a object_type.82 */83 #define rtems_rbtree_container_of(node,object_type, object_member) \84 _RBTree_Container_of(node,object_type,object_member)85 86 /**87 77 * @brief Initialize a RBTree header. 88 78 * -
cpukit/score/include/rtems/score/basedefs.h
rb767683a r40dcafa 218 218 #define RTEMS_ZERO_LENGTH_ARRAY 0 219 219 220 /** 221 * @brief Returns a pointer to the container of a specified member pointer. 222 * 223 * @param[in] _m The pointer to a member of the container. 224 * @param[in] _type The type of the container. 225 * @param[in] _member_name The designator name of the container member. 226 */ 227 #define RTEMS_CONTAINER_OF( _m, _type, _member_name ) \ 228 ( (_type *) ( (uintptr_t) ( _m ) - offsetof( _type, _member_name ) ) ) 229 220 230 #ifndef ASM 221 231 #ifdef RTEMS_DEPRECATED_TYPES -
cpukit/score/include/rtems/score/mrspimpl.h
rb767683a r40dcafa 182 182 _Scheduler_Thread_change_resource_root( 183 183 executing, 184 _Thread_Resource_node_to_thread( _Resource_Node_get_root( owner ) )184 THREAD_RESOURCE_NODE_TO_THREAD( _Resource_Node_get_root( owner ) ) 185 185 ); 186 186 -
cpukit/score/include/rtems/score/rbtree.h
rb767683a r40dcafa 83 83 84 84 /** 85 * @brief Macro to return the structure containing the @a node.86 *87 * This macro returns a pointer of type @a container_type that points88 * to the structure containing @a node, where @a node_field_name is the89 * field name of the RBTree_Node structure in @a container_type.90 *91 */92 #define _RBTree_Container_of(node, container_type, node_field_name) \93 ( \94 (container_type*) \95 ( (uintptr_t)(node) - offsetof(container_type, node_field_name) ) \96 )97 98 /**99 85 * This type indicates the direction. 100 86 */ -
cpukit/score/include/rtems/score/scheduleredfimpl.h
rb767683a r40dcafa 90 90 RBTree_Node *first = _RBTree_First( &context->Ready, RBT_LEFT ); 91 91 Scheduler_EDF_Node *node = 92 _RBTree_Container_of(first, Scheduler_EDF_Node, Node);92 RTEMS_CONTAINER_OF( first, Scheduler_EDF_Node, Node ); 93 93 Thread_Control *heir = node->thread; 94 94 -
cpukit/score/include/rtems/score/schedulerimpl.h
rb767683a r40dcafa 165 165 Thread_Control *next_needs_help; 166 166 Thread_Control *offers_help = 167 _Thread_Resource_node_to_thread( resource_node );167 THREAD_RESOURCE_NODE_TO_THREAD( resource_node ); 168 168 const Scheduler_Control *scheduler = _Scheduler_Get_own( offers_help ); 169 169 -
cpukit/score/include/rtems/score/threadimpl.h
rb767683a r40dcafa 75 75 */ 76 76 SCORE_EXTERN struct _reent **_Thread_libc_reent; 77 #endif 78 79 #define THREAD_RBTREE_NODE_TO_THREAD( node ) \ 80 RTEMS_CONTAINER_OF( node, Thread_Control, RBNode ) 81 82 #if defined(RTEMS_SMP) 83 #define THREAD_RESOURCE_NODE_TO_THREAD( node ) \ 84 RTEMS_CONTAINER_OF( node, Thread_Control, Resource_node ) 77 85 #endif 78 86 … … 847 855 } 848 856 849 #if defined(RTEMS_SMP)850 RTEMS_INLINE_ROUTINE Thread_Control *_Thread_Resource_node_to_thread(851 Resource_Node *node852 )853 {854 return (Thread_Control *)855 ( (char *) node - offsetof( Thread_Control, Resource_node ) );856 }857 #endif858 859 857 RTEMS_INLINE_ROUTINE void _Thread_Debug_set_real_processor( 860 858 Thread_Control *the_thread, -
cpukit/score/src/resourceiterate.c
rb767683a r40dcafa 17 17 static Resource_Control *_Resource_Rival_head_to_resource( Chain_Node *head ) 18 18 { 19 return (Resource_Control *) 20 ( (char *) head - offsetof( Resource_Control, Rivals.Head.Node ) ); 19 return RTEMS_CONTAINER_OF( head, Resource_Control, Rivals.Head.Node ); 21 20 } 22 21 23 22 static Resource_Node *_Resource_Resource_tail_to_rival( Chain_Node *tail ) 24 23 { 25 return (Resource_Node *) 26 ( (char *) tail - offsetof( Resource_Node, Resources.Tail.Node ) ); 24 return RTEMS_CONTAINER_OF( tail, Resource_Node, Resources.Tail.Node ); 27 25 } 28 26 -
cpukit/score/src/schedulerchangeroot.c
rb767683a r40dcafa 33 33 Thread_Control *needs_help = root; 34 34 Thread_Control *offers_help = 35 _Thread_Resource_node_to_thread( resource_node );35 THREAD_RESOURCE_NODE_TO_THREAD( resource_node ); 36 36 const Scheduler_Control *scheduler = _Scheduler_Get_own( offers_help ); 37 37 Thread_Control *needs_help_too; -
cpukit/score/src/scheduleredf.c
rb767683a r40dcafa 26 26 ) 27 27 { 28 Priority_Control value1 = _RBTree_Container_of 29 (n1,Scheduler_EDF_Node,Node)->thread->current_priority; 30 Priority_Control value2 = _RBTree_Container_of 31 (n2,Scheduler_EDF_Node,Node)->thread->current_priority; 28 Scheduler_EDF_Node *edf1 = 29 RTEMS_CONTAINER_OF( n1, Scheduler_EDF_Node, Node ); 30 Scheduler_EDF_Node *edf2 = 31 RTEMS_CONTAINER_OF( n2, Scheduler_EDF_Node, Node ); 32 Priority_Control value1 = edf1->thread->current_priority; 33 Priority_Control value2 = edf2->thread->current_priority; 32 34 33 35 /* -
cpukit/score/src/threadq.c
rb767683a r40dcafa 21 21 #include <rtems/score/threadqimpl.h> 22 22 #include <rtems/score/chainimpl.h> 23 #include <rtems/score/rbtreeimpl.h> 23 24 #include <rtems/score/scheduler.h> 24 25 #include <rtems/score/rbtreeimpl.h> 25 #include <rtems/score/threadimpl.h> 26 26 27 27 int _Thread_queue_Compare_priority( … … 30 30 ) 31 31 { 32 Priority_Control left_priority = _RBTree_Container_of33 (left,Thread_Control,RBNode)->current_priority;34 Priority_Control right_priority = _RBTree_Container_of35 (right,Thread_Control,RBNode)->current_priority;32 Priority_Control left_priority = 33 THREAD_RBTREE_NODE_TO_THREAD( left )->current_priority; 34 Priority_Control right_priority = 35 THREAD_RBTREE_NODE_TO_THREAD( right )->current_priority; 36 36 37 37 /* -
cpukit/score/src/threadqdequeue.c
rb767683a r40dcafa 51 51 first = _RBTree_Get( &the_thread_queue->Queues.Priority, RBT_LEFT ); 52 52 if ( first ) { 53 the_thread = _RBTree_Container_of( first, Thread_Control, RBNode);53 the_thread = THREAD_RBTREE_NODE_TO_THREAD( first ); 54 54 } 55 55 } -
cpukit/score/src/threadqfirst.c
rb767683a r40dcafa 19 19 #endif 20 20 21 #include <rtems/score/threadqimpl.h> 21 22 #include <rtems/score/chainimpl.h> 22 23 #include <rtems/score/isrlevel.h> 23 #include <rtems/score/thread qimpl.h>24 #include <rtems/score/threadimpl.h> 24 25 25 26 Thread_Control *_Thread_queue_First( … … 42 43 first = _RBTree_First( &the_thread_queue->Queues.Priority, RBT_LEFT ); 43 44 if ( first ) 44 thread = _RBTree_Container_of( first, Thread_Control, RBNode);45 thread = THREAD_RBTREE_NODE_TO_THREAD( first ); 45 46 } 46 47 -
testsuites/sptests/sprbtree01/init.c
rb767683a r40dcafa 39 39 ) 40 40 { 41 int key1 = rtems_rbtree_container_of( n1, test_node, Node )->key;42 int key2 = rtems_rbtree_container_of( n2, test_node, Node )->key;41 int key1 = RTEMS_CONTAINER_OF( n1, test_node, Node )->key; 42 int key2 = RTEMS_CONTAINER_OF( n2, test_node, Node )->key; 43 43 44 44 return key1 - key2; … … 263 263 for ( p = rtems_rbtree_get_min(&rbtree1), id = 1 ; p ; 264 264 p = rtems_rbtree_get_min(&rbtree1) , id++ ) { 265 test_node *t = rtems_rbtree_container_of(p,test_node,Node);265 test_node *t = RTEMS_CONTAINER_OF(p,test_node,Node); 266 266 if ( id > 2 ) { 267 267 puts( "INIT - TOO MANY NODES ON RBTREE" ); … … 291 291 for ( p = rtems_rbtree_get_min(&rbtree1), id = 1 ; p ; 292 292 p = rtems_rbtree_get_min(&rbtree1) , id++ ) { 293 test_node *t = rtems_rbtree_container_of(p,test_node,Node);293 test_node *t = RTEMS_CONTAINER_OF(p,test_node,Node); 294 294 if ( id > 1 ) { 295 295 puts( "INIT - TOO MANY NODES ON RBTREE" ); … … 346 346 347 347 puts( "INIT - Verify rtems_rbtree_peek_max/min, rtems_rbtree_extract" ); 348 test_node *t1 = rtems_rbtree_container_of(rtems_rbtree_peek_max(&rbtree1),348 test_node *t1 = RTEMS_CONTAINER_OF(rtems_rbtree_peek_max(&rbtree1), 349 349 test_node,Node); 350 test_node *t2 = rtems_rbtree_container_of(rtems_rbtree_peek_min(&rbtree1),350 test_node *t2 = RTEMS_CONTAINER_OF(rtems_rbtree_peek_min(&rbtree1), 351 351 test_node,Node); 352 352 if (t1->key - t2->key != 1) { … … 356 356 p = rtems_rbtree_peek_max(&rbtree1); 357 357 rtems_rbtree_extract(&rbtree1, p); 358 t1 = rtems_rbtree_container_of(p,test_node,Node);358 t1 = RTEMS_CONTAINER_OF(p,test_node,Node); 359 359 if (t1->key != 2) { 360 360 puts( "INIT - rtems_rbtree_extract failed"); … … 366 366 for ( p = rtems_rbtree_get_min(&rbtree1), id = 1 ; p ; 367 367 p = rtems_rbtree_get_min(&rbtree1) , id++ ) { 368 test_node *t = rtems_rbtree_container_of(p,test_node,Node);368 test_node *t = RTEMS_CONTAINER_OF(p,test_node,Node); 369 369 if ( id > 2 ) { 370 370 puts( "INIT - TOO MANY NODES ON RBTREE" ); … … 391 391 for ( p = rtems_rbtree_get_min(&rbtree1), id = 0 ; p ; 392 392 p = rtems_rbtree_get_min(&rbtree1) , id++ ) { 393 test_node *t = rtems_rbtree_container_of(p,test_node,Node);393 test_node *t = RTEMS_CONTAINER_OF(p,test_node,Node); 394 394 if ( id > 99 ) { 395 395 puts( "INIT - TOO MANY NODES ON RBTREE" ); … … 424 424 for ( p = rtems_rbtree_get_min(&rbtree1), id = 0 ; p ; 425 425 p = rtems_rbtree_get_min(&rbtree1) , id++ ) { 426 test_node *t = rtems_rbtree_container_of(p,test_node,Node);426 test_node *t = RTEMS_CONTAINER_OF(p,test_node,Node); 427 427 if ( id > 99 ) { 428 428 puts( "INIT - TOO MANY NODES ON RBTREE" ); … … 468 468 for ( p = rtems_rbtree_get_min(&rbtree1), id = 0, i = 0 ; p ; 469 469 p = rtems_rbtree_get_min(&rbtree1) , id++ ) { 470 test_node *t = rtems_rbtree_container_of(p, test_node, Node);470 test_node *t = RTEMS_CONTAINER_OF(p, test_node, Node); 471 471 472 472 while ( id == numbers_sorted[i] ) { … … 530 530 for ( p = rtems_rbtree_get_max(&rbtree1), id = 0 ; p ; 531 531 p = rtems_rbtree_get_max(&rbtree1) , id++ ) { 532 test_node *t = rtems_rbtree_container_of(p,test_node,Node);532 test_node *t = RTEMS_CONTAINER_OF(p,test_node,Node); 533 533 if ( id > 99 ) { 534 534 puts( "INIT - TOO MANY NODES ON RBTREE" ); … … 562 562 search_node.key = 30; 563 563 p = rb_find_unique(&rbtree1, &search_node.Node); 564 if( rtems_rbtree_container_of(p,test_node,Node)->id != 30) {564 if(RTEMS_CONTAINER_OF(p,test_node,Node)->id != 30) { 565 565 puts ("INIT - ERROR ON RBTREE ID MISMATCH"); 566 566 rtems_test_exit(0); … … 569 569 puts( "INIT - Verify rtems_rbtree_predecessor/successor"); 570 570 p = rtems_rbtree_predecessor(p); 571 if(p && rtems_rbtree_container_of(p,test_node,Node)->id != 29) {571 if(p && RTEMS_CONTAINER_OF(p,test_node,Node)->id != 29) { 572 572 puts ("INIT - ERROR ON RBTREE ID MISMATCH"); 573 573 rtems_test_exit(0); … … 575 575 p = rb_find_unique(&rbtree1, &search_node.Node); 576 576 p = rtems_rbtree_successor(p); 577 if(p && rtems_rbtree_container_of(p,test_node,Node)->id != 31) {577 if(p && RTEMS_CONTAINER_OF(p,test_node,Node)->id != 31) { 578 578 puts ("INIT - ERROR ON RBTREE ID MISMATCH"); 579 579 rtems_test_exit(0); … … 602 602 for ( p = rtems_rbtree_get_max(&rbtree1), id = 99 ; p ; 603 603 p = rtems_rbtree_get_max(&rbtree1) , id-- ) { 604 test_node *t = rtems_rbtree_container_of(p,test_node,Node);604 test_node *t = RTEMS_CONTAINER_OF(p,test_node,Node); 605 605 if ( id < 0 ) { 606 606 puts( "INIT - TOO MANY NODES ON RBTREE" ); … … 635 635 for ( p = rtems_rbtree_get_min(&rbtree1), id = 0 ; p ; 636 636 p = rtems_rbtree_get_min(&rbtree1) , id++ ) { 637 test_node *t = rtems_rbtree_container_of(p,test_node,Node);637 test_node *t = RTEMS_CONTAINER_OF(p,test_node,Node); 638 638 if ( id > 19 ) { 639 639 puts( "INIT - TOO MANY NODES ON RBTREE" ); … … 667 667 for ( p = rtems_rbtree_get_min(&rbtree1), id = 0 ; p ; 668 668 p = rtems_rbtree_get_min(&rbtree1) , id++ ) { 669 test_node *t = rtems_rbtree_container_of(p,test_node,Node);669 test_node *t = RTEMS_CONTAINER_OF(p,test_node,Node); 670 670 if ( id > 99 ) { 671 671 puts( "INIT - TOO MANY NODES ON RBTREE" ); … … 704 704 search_node.key = 2; 705 705 p = rb_find_multi(&rbtree1, &search_node.Node); 706 if( rtems_rbtree_container_of(p,test_node,Node)->id != 2) {706 if(RTEMS_CONTAINER_OF(p,test_node,Node)->id != 2) { 707 707 puts ("INIT - ERROR ON RBTREE ID MISMATCH"); 708 708 rtems_test_exit(0); … … 713 713 for ( p = rtems_rbtree_get_min(&rbtree1), id = 0 ; p ; 714 714 p = rtems_rbtree_get_min(&rbtree1) , id++ ) { 715 test_node *t = rtems_rbtree_container_of(p,test_node,Node);715 test_node *t = RTEMS_CONTAINER_OF(p,test_node,Node); 716 716 if ( id > 99 ) { 717 717 puts( "INIT - TOO MANY NODES ON RBTREE" ); … … 745 745 search_node.key = 2; 746 746 p = rb_find_multi(&rbtree1, &search_node.Node); 747 if( rtems_rbtree_container_of(p,test_node,Node)->id != 97) {747 if(RTEMS_CONTAINER_OF(p,test_node,Node)->id != 97) { 748 748 puts ("INIT - ERROR ON RBTREE ID MISMATCH"); 749 749 rtems_test_exit(0); … … 754 754 for ( p = rtems_rbtree_get_min(&rbtree1), id = 0 ; p ; 755 755 p = rtems_rbtree_get_min(&rbtree1) , id++ ) { 756 test_node *t = rtems_rbtree_container_of(p,test_node,Node);756 test_node *t = RTEMS_CONTAINER_OF(p,test_node,Node); 757 757 if ( id > 99 ) { 758 758 puts( "INIT - TOO MANY NODES ON RBTREE" );
Note: See TracChangeset
for help on using the changeset viewer.