26 #ifndef _RTEMS_POSIX_KEYIMPL_H 27 #define _RTEMS_POSIX_KEYIMPL_H 44 #define POSIX_KEYS_RBTREE_NODE_TO_KEY_VALUE_PAIR( node ) \ 45 RTEMS_CONTAINER_OF( node, POSIX_Keys_Key_value_pair, Lookup_node ) 109 const pthread_key_t *the_left;
113 the_right = POSIX_KEYS_RBTREE_NODE_TO_KEY_VALUE_PAIR( right );
115 return *the_left == the_right->
key;
123 const pthread_key_t *the_left;
127 the_right = POSIX_KEYS_RBTREE_NODE_TO_KEY_VALUE_PAIR( right );
129 return *the_left < the_right->
key;
134 return POSIX_KEYS_RBTREE_NODE_TO_KEY_VALUE_PAIR( node );
145 _POSIX_Keys_Key_value_equal,
146 _POSIX_Keys_Key_value_less,
147 _POSIX_Keys_Key_value_map
161 _POSIX_Keys_Key_value_less
RTEMS_INLINE_ROUTINE bool _RBTree_Insert_inline(RBTree_Control *the_rbtree, RBTree_Node *the_node, const void *key, bool(*less)(const void *, const RBTree_Node *))
Inserts the node into the red-black tree.
Definition: rbtree.h:483
void _Objects_Free(Objects_Information *information, Objects_Control *the_object)
Frees an object.
Definition: objectfree.c:25
Freechain_Control _POSIX_Keys_Keypool
This freechain is used as a memory pool for POSIX_Keys_Key_value_pair.
Definition: keycreate.c:54
#define _ISR_lock_ISR_disable_and_acquire(_lock, _context)
Acquires an ISR lock.
Definition: isrlock.h:223
Objects_Control * _Objects_Allocate(Objects_Information *information)
Allocates an object.
Definition: objectallocate.c:89
#define RTEMS_INLINE_ROUTINE
Definition: basedefs.h:65
Represents POSIX key and value pair.
Definition: key.h:46
Thread_Keys_information Keys
The POSIX Keys information.
Definition: thread.h:848
RTEMS_INLINE_ROUTINE void _Chain_Extract_unprotected(Chain_Node *the_node)
Extract this node (unprotected).
Definition: chainimpl.h:557
Red-black tree node.
Definition: rbtree.h:50
Chain_Node Key_node
The chain node for the key value pairs chain in POSIX_Keys_Control.
Definition: key.h:50
Objects_Control * _Objects_Get_no_protection(Objects_Id id, const Objects_Information *information)
Maps object ids to object control blocks.
Definition: objectgetnoprotection.c:23
RTEMS_INLINE_ROUTINE void * _RBTree_Find_inline(const RBTree_Control *the_rbtree, const void *key, bool(*equal)(const void *, const RBTree_Node *), bool(*less)(const void *, const RBTree_Node *), void *(*map)(RBTree_Node *))
Finds an object in the red-black tree with the specified key.
Definition: rbtree.h:532
void _Freechain_Put(Freechain_Control *freechain, void *node)
Puts a node back onto the freechain.
Definition: freechain.c:50
Objects_Information _POSIX_Keys_Information
The POSIX Key objects information.
#define _ISR_lock_Release_and_ISR_enable(_lock, _context)
Releases an ISR lock.
Definition: isrlock.h:248
RTEMS_INLINE_ROUTINE POSIX_Keys_Control * _POSIX_Keys_Allocate(void)
Allocate a keys control block.
Definition: keyimpl.h:54
RBTree_Node Lookup_node
The tree node for the lookup tree in Thread_Keys_information.
Definition: key.h:55
RTEMS_INLINE_ROUTINE void _POSIX_Keys_Free(POSIX_Keys_Control *the_key)
Free a keys control block.
Definition: keyimpl.h:65
The data structure used to manage a POSIX key.
Definition: key.h:94
Local ISR lock context for acquire and release pairs.
Definition: isrlock.h:65
Inlined Routines in the Object Handler.
POSIX Key Private Support.
uint32_t Objects_Id
Definition: object.h:75
pthread_key_t key
The POSIX key identifier used as the tree key.
Definition: key.h:60
Objects_Control Object
Definition: key.h:96
The freechain control.
Definition: freechain.h:46