18 #ifndef _RTEMS_SCORE_OBJECTDATA_H 19 #define _RTEMS_SCORE_OBJECTDATA_H 53 OBJECTS_INTERNAL_NO_CLASS = 0,
56 OBJECTS_INTERNAL_THREADS = 1
64 OBJECTS_CLASSIC_NO_CLASS = 0,
67 OBJECTS_RTEMS_TASKS = 1,
70 OBJECTS_RTEMS_SEMAPHORES,
71 OBJECTS_RTEMS_MESSAGE_QUEUES,
72 OBJECTS_RTEMS_PARTITIONS,
73 OBJECTS_RTEMS_REGIONS,
75 OBJECTS_RTEMS_PERIODS,
76 OBJECTS_RTEMS_EXTENSIONS,
77 OBJECTS_RTEMS_BARRIERS
85 OBJECTS_POSIX_NO_CLASS = 0,
88 OBJECTS_POSIX_THREADS = 1,
91 OBJECTS_POSIX_MESSAGE_QUEUES,
92 OBJECTS_POSIX_SEMAPHORES,
101 #define OBJECTS_NO_STRING_NAME 0 103 #if defined( RTEMS_MULTIPROCESSING ) 145 } Objects_MP_Control;
152 extern Objects_MP_Control _Objects_MP_Controls[];
159 typedef void ( *Objects_Thread_queue_Extract_callout )(
284 #if defined(RTEMS_MULTIPROCESSING) 290 Objects_Thread_queue_Extract_callout extract;
298 RBTree_Control Global_by_id;
309 RBTree_Control Global_by_name;
371 #if defined(RTEMS_MULTIPROCESSING) 372 #define OBJECTS_INFORMATION_MP( name, extract ) \ 375 RBTREE_INITIALIZER_EMPTY( name.Global_by_id ), \ 376 RBTREE_INITIALIZER_EMPTY( name.Global_by_name ) 378 #define OBJECTS_INFORMATION_MP( name, extract ) 392 #define OBJECTS_INFORMATION_DEFINE_ZERO( name, api, cls, nl ) \ 393 Objects_Information name##_Information = { \ 394 _Objects_Build_id( api, cls, 1, 0 ), \ 396 _Objects_Allocate_none, \ 402 CHAIN_INITIALIZER_EMPTY( name##_Information.Inactive ), \ 406 OBJECTS_INFORMATION_MP( name##_Information, NULL ) \ 427 #define OBJECTS_INFORMATION_DEFINE( name, api, cls, type, max, nl, ex ) \ 428 static Objects_Control * \ 429 name##_Local_table[ _Objects_Maximum_per_allocation( max ) ]; \ 430 static type name##_Objects[ _Objects_Maximum_per_allocation( max ) ]; \ 431 Objects_Information name##_Information = { \ 432 _Objects_Build_id( api, cls, 1, _Objects_Maximum_per_allocation( max ) ), \ 433 name##_Local_table, \ 434 _Objects_Is_unlimited( max ) ? \ 435 _Objects_Allocate_unlimited : _Objects_Allocate_static, \ 436 _Objects_Is_unlimited( max ) ? \ 437 _Objects_Free_unlimited : _Objects_Free_static, \ 439 _Objects_Is_unlimited( max ) ? _Objects_Maximum_per_allocation( max ) : 0, \ 442 CHAIN_INITIALIZER_EMPTY( name##_Information.Inactive ), \ 445 &name##_Objects[ 0 ].Object \ 446 OBJECTS_INFORMATION_MP( name##_Information, ex ) \
void _Objects_Free_unlimited(Objects_Information *information, Objects_Control *the_object)
Free the object.
Constants and Structures Associated with the Object Handler.
Constants and Structures Associated with the Red-Black Tree Handler.
Objects_Control * _Objects_Allocate_unlimited(Objects_Information *information)
Return an inactive object or NULL.
void _Objects_Free_static(Objects_Information *information, Objects_Control *the_object)
Free the object.
Objects_Control * _Objects_Allocate_none(Objects_Information *information)
Always return NULL.
Objects_Control * _Objects_Allocate_static(Objects_Information *information)
Return an inactive object or NULL.