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 )
152extern Objects_MP_Control _Objects_MP_Controls[];
159typedef 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 ) \
393Objects_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 ) \
428static Objects_Control * \
429name##_Local_table[ _Objects_Maximum_per_allocation( max ) ]; \
430static type name##_Objects[ _Objects_Maximum_per_allocation( max ) ]; \
431Objects_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_static(Objects_Information *information, Objects_Control *the_object)
Free the object.
Definition: objectfreestatic.c:41
uint32_t Objects_Id
Definition: object.h:80
Objects_Control * _Objects_Allocate_static(Objects_Information *information)
Return an inactive object or NULL.
Definition: objectallocatestatic.c:41
Objects_Control * _Objects_Allocate_unlimited(Objects_Information *information)
Return an inactive object or NULL.
Definition: objectallocateunlimited.c:46
Objects_POSIX_API
Definition: objectdata.h:84
uint16_t Objects_Maximum
Definition: object.h:86
Objects_Internal_API
Definition: objectdata.h:52
void _Objects_Free_unlimited(Objects_Information *information, Objects_Control *the_object)
Free the object.
Definition: objectfree.c:24
Objects_Control * _Objects_Allocate_none(Objects_Information *information)
Always return NULL.
Definition: objectallocatenone.c:40
Objects_Classic_API
Definition: objectdata.h:63
Constants and Structures Associated with the Red-Black Tree Handler.
Constants and Structures Associated with the Object Handler.
Definition: objectdata.h:39
Chain_Node Node
Definition: objectdata.h:41
Objects_Id id
Definition: objectdata.h:43
Objects_Name name
Definition: objectdata.h:45
Red-black tree node.
Definition: rbtree.h:55