40#ifndef _RTEMS_SCORE_OBJECTDATA_H
41#define _RTEMS_SCORE_OBJECTDATA_H
75 OBJECTS_INTERNAL_NO_CLASS = 0,
78 OBJECTS_INTERNAL_THREADS = 1
86 OBJECTS_CLASSIC_NO_CLASS = 0,
89 OBJECTS_RTEMS_TASKS = 1,
92 OBJECTS_RTEMS_SEMAPHORES,
93 OBJECTS_RTEMS_MESSAGE_QUEUES,
94 OBJECTS_RTEMS_PARTITIONS,
95 OBJECTS_RTEMS_REGIONS,
97 OBJECTS_RTEMS_PERIODS,
98 OBJECTS_RTEMS_EXTENSIONS,
99 OBJECTS_RTEMS_BARRIERS
107 OBJECTS_POSIX_NO_CLASS = 0,
110 OBJECTS_POSIX_THREADS = 1,
113 OBJECTS_POSIX_MESSAGE_QUEUES,
114 OBJECTS_POSIX_SEMAPHORES,
115 OBJECTS_POSIX_TIMERS,
123#define OBJECTS_NO_STRING_NAME 0
125#if defined( RTEMS_MULTIPROCESSING )
174extern Objects_MP_Control _Objects_MP_Controls[];
181typedef void ( *Objects_Thread_queue_Extract_callout )(
306#if defined(RTEMS_MULTIPROCESSING)
312 Objects_Thread_queue_Extract_callout extract;
320 RBTree_Control Global_by_id;
331 RBTree_Control Global_by_name;
393#if defined(RTEMS_MULTIPROCESSING)
394#define OBJECTS_INFORMATION_MP( name, extract ) \
397 RBTREE_INITIALIZER_EMPTY( name.Global_by_id ), \
398 RBTREE_INITIALIZER_EMPTY( name.Global_by_name )
400#define OBJECTS_INFORMATION_MP( name, extract )
414#define OBJECTS_INFORMATION_DEFINE_ZERO( name, api, cls, nl ) \
415Objects_Information name##_Information = { \
416 _Objects_Build_id( api, cls, 1, 0 ), \
418 _Objects_Allocate_none, \
424 CHAIN_INITIALIZER_EMPTY( name##_Information.Inactive ), \
428 OBJECTS_INFORMATION_MP( name##_Information, NULL ) \
449#define OBJECTS_INFORMATION_DEFINE( name, api, cls, type, max, nl, ex ) \
450static Objects_Control * \
451name##_Local_table[ _Objects_Maximum_per_allocation( max ) ]; \
452static RTEMS_SECTION( ".noinit.rtems.content.objects." #name ) \
454name##_Objects[ _Objects_Maximum_per_allocation( max ) ]; \
455Objects_Information name##_Information = { \
456 _Objects_Build_id( api, cls, 1, _Objects_Maximum_per_allocation( max ) ), \
457 name##_Local_table, \
458 _Objects_Is_unlimited( max ) ? \
459 _Objects_Allocate_unlimited : _Objects_Allocate_static, \
460 _Objects_Is_unlimited( max ) ? \
461 _Objects_Free_unlimited : _Objects_Free_static, \
463 _Objects_Is_unlimited( max ) ? _Objects_Maximum_per_allocation( max ) : 0, \
466 CHAIN_INITIALIZER_EMPTY( name##_Information.Inactive ), \
469 &name##_Objects[ 0 ].Object \
470 OBJECTS_INFORMATION_MP( name##_Information, ex ) \
This header file provides interfaces of the Chain Handler which are only used by the implementation.
void _Objects_Free_static(Objects_Information *information, Objects_Control *the_object)
Free the object.
Definition: objectfreestatic.c:44
uint32_t Objects_Id
Definition: object.h:101
Objects_Control * _Objects_Allocate_static(Objects_Information *information)
Return an inactive object or NULL.
Definition: objectallocatestatic.c:44
Objects_Control * _Objects_Allocate_unlimited(Objects_Information *information)
Return an inactive object or NULL.
Definition: objectallocateunlimited.c:49
Objects_POSIX_API
Definition: objectdata.h:106
uint16_t Objects_Maximum
Definition: object.h:107
Objects_Internal_API
Definition: objectdata.h:74
void _Objects_Free_unlimited(Objects_Information *information, Objects_Control *the_object)
Free the object.
Definition: objectfree.c:45
Objects_Control * _Objects_Allocate_none(Objects_Information *information)
Always return NULL.
Definition: objectallocatenone.c:43
Objects_Classic_API
Definition: objectdata.h:85
This header file provides interfaces of the Red-Black Tree Handler which are used by the implementati...
This header file provides interfaces of the Object Handler which are used by the implementation and t...
This structure represents a chain node.
Definition: chain.h:78
Definition: objectdata.h:61
Chain_Node Node
Definition: objectdata.h:63
Objects_Id id
Definition: objectdata.h:65
Objects_Name name
Definition: objectdata.h:67
Red-black tree node.
Definition: rbtree.h:73
This union represents a chain control block.
Definition: chain.h:96