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 void _Chain_Extract_unprotected(Chain_Node *the_node)
Extracts this node (unprotected).
Definition: chainimpl.h:558
 
Freechain_Control _POSIX_Keys_Keypool
This freechain is used as a memory pool for POSIX_Keys_Key_value_pair.
Definition: keycreate.c:55
 
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:508
 
#define _ISR_lock_Release_and_ISR_enable(_lock, _context)
Releases an ISR lock.
Definition: isrlock.h:263
 
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:557
 
Represents POSIX key and value pair.
Definition: key.h:46
 
Thread_Keys_information Keys
The POSIX Keys information.
Definition: thread.h:852
 
Red-black tree node.
Definition: rbtree.h:55
 
Chain_Node Key_node
The chain node for the key value pairs chain in POSIX_Keys_Control.
Definition: key.h:50
 
Objects_Control * _Objects_Allocate(Objects_Information *information)
Allocates an object.
Definition: objectallocate.c:42
 
void _Freechain_Put(Freechain_Control *freechain, void *node)
Puts a node back onto the freechain.
Definition: freechain.c:67
 
Objects_Information _POSIX_Keys_Information
The POSIX Key objects information.
 
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 _Objects_Free(Objects_Information *information, Objects_Control *the_object)
Frees an object.
Definition: objectimpl.h:930
 
#define _ISR_lock_ISR_disable_and_acquire(_lock, _context)
Acquires an ISR lock.
Definition: isrlock.h:238
 
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
 
uint32_t Objects_Id
Definition: object.h:80
 
Local ISR lock context for acquire and release pairs.
Definition: isrlock.h:65
 
Inlined Routines in the Object Handler.
 
POSIX Key Private Support.
 
pthread_key_t key
The POSIX key identifier used as the tree key.
Definition: key.h:60
 
#define RTEMS_INLINE_ROUTINE
Definition: basedefs.h:66
 
Objects_Control Object
Definition: key.h:96
 
Objects_Control * _Objects_Get_no_protection(Objects_Id id, const Objects_Information *information)
Maps object ids to object control blocks.
Definition: objectgetnoprotection.c:23
 
The freechain control.
Definition: freechain.h:48