39#ifndef _RTEMS_SCORE_OBJECT_H
40#define _RTEMS_SCORE_OBJECT_H
43#include <rtems/score/cpu.h>
113#define OBJECTS_INDEX_START_BIT 0U
118#define OBJECTS_NODE_START_BIT 16U
124#define OBJECTS_API_START_BIT 24U
130#define OBJECTS_CLASS_START_BIT 27U
135#define OBJECTS_INDEX_MASK (Objects_Id)0x0000ffffU
140#define OBJECTS_NODE_MASK (Objects_Id)0x00ff0000U
145#define OBJECTS_API_MASK (Objects_Id)0x07000000U
150#define OBJECTS_CLASS_MASK (Objects_Id)0xf8000000U
156#define OBJECTS_INDEX_VALID_BITS (Objects_Id)0x0000ffffU
162#define OBJECTS_NODE_VALID_BITS (Objects_Id)0x000000ffU
168#define OBJECTS_API_VALID_BITS (Objects_Id)0x00000007U
174#define OBJECTS_CLASS_VALID_BITS (Objects_Id)0x0000001fU
180#define OBJECTS_UNLIMITED_OBJECTS 0x80000000U
185#define OBJECTS_ID_INITIAL_INDEX (0)
190#define OBJECTS_ID_FINAL_INDEX (0xffffU)
197 OBJECTS_INTERNAL_API = 1,
198 OBJECTS_CLASSIC_API = 2,
199 OBJECTS_POSIX_API = 3,
200 OBJECTS_FAKE_OBJECTS_API = 7
204#define OBJECTS_APIS_LAST OBJECTS_POSIX_API
209#define OBJECTS_ID_NONE 0
215#define OBJECTS_ID_OF_SELF ((Objects_Id) 0)
221#define OBJECTS_SEARCH_ALL_NODES 0
227#define OBJECTS_SEARCH_OTHER_NODES 0x7FFFFFFE
233#define OBJECTS_SEARCH_LOCAL_NODE 0x7FFFFFFF
239#define OBJECTS_WHO_AM_I 0
245#define OBJECTS_ID_INITIAL(_api, _class, _node) \
246 _Objects_Build_id( (_api), (_class), (_node), OBJECTS_ID_INITIAL_INDEX )
251#define OBJECTS_ID_FINAL ((Objects_Id)~0)
263#define _Objects_Build_name( _C1, _C2, _C3, _C4 ) \
264 ( (uint32_t) (uint8_t) (_C1) << 24 | \
265 (uint32_t) (uint8_t) (_C2) << 16 | \
266 (uint32_t) (uint8_t) (_C3) << 8 | \
290static inline uint32_t _Objects_Get_class(
305static inline uint32_t _Objects_Get_node(
338#define _Objects_Build_id( the_api, the_class, node, index ) \
339 ( (Objects_Id) ( (Objects_Id) the_api << OBJECTS_API_START_BIT ) | \
340 ( (Objects_Id) the_class << OBJECTS_CLASS_START_BIT ) | \
341 ( (Objects_Id) node << OBJECTS_NODE_START_BIT ) | \
342 ( (Objects_Id) index << OBJECTS_INDEX_START_BIT ) )
352#define _Objects_Is_unlimited( maximum ) \
353 ( ( ( maximum ) & OBJECTS_UNLIMITED_OBJECTS ) != 0 )
359#define _Objects_Maximum_per_allocation( maximum ) \
360 ((Objects_Maximum) ((maximum) & ~OBJECTS_UNLIMITED_OBJECTS))
365#if defined(RTEMS_MULTIPROCESSING)
368#define _Objects_Local_node ((uint16_t) 1)
This header file provides basic definitions used by the API and the implementation.
Objects_APIs
Definition: object.h:195
#define OBJECTS_NODE_START_BIT
Definition: object.h:118
uint32_t Objects_Id
Definition: object.h:101
#define OBJECTS_API_VALID_BITS
Definition: object.h:168
#define OBJECTS_CLASS_VALID_BITS
Definition: object.h:174
#define OBJECTS_INDEX_START_BIT
Definition: object.h:113
#define OBJECTS_API_START_BIT
Definition: object.h:124
#define OBJECTS_INDEX_VALID_BITS
Definition: object.h:156
uint16_t Objects_Maximum
Definition: object.h:107
#define OBJECTS_CLASS_START_BIT
Definition: object.h:130
#define OBJECTS_NODE_VALID_BITS
Definition: object.h:162
#define _Objects_Local_node
The local MPCI node number.
Definition: object.h:368
const char * name_p
Definition: object.h:87
uint32_t name_u32
Definition: object.h:89