15 #ifndef _RTEMS_SCORE_SCHEDULERNODEIMPL_H 16 #define _RTEMS_SCORE_SCHEDULERNODEIMPL_H 18 #include <rtems/score/schedulernode.h> 19 #include <rtems/score/priorityimpl.h> 27 #define SCHEDULER_NODE_OF_WAIT_PRIORITY_NODE( node ) \ 28 RTEMS_CONTAINER_OF( node, Scheduler_Node, Wait.Priority.Node.Node.Chain ) 30 #define SCHEDULER_NODE_OF_WAIT_PRIORITY( node ) \ 31 RTEMS_CONTAINER_OF( node, Scheduler_Node, Wait.Priority ) 37 #define SCHEDULER_PRIORITY_APPEND_FLAG 1 46 node->
owner = the_thread;
48 node->Priority.value = priority;
50 #if defined(RTEMS_SMP) 52 node->
Wait.Priority.scheduler = scheduler;
53 node->user = the_thread;
55 _SMP_sequence_lock_Initialize( &node->Priority.Lock );
66 return _Priority_Get_scheduler( &node->
Wait.Priority );
82 #if defined(RTEMS_SMP) 86 seq = _SMP_sequence_lock_Read_begin( &node->Priority.Lock );
89 priority = node->Priority.value;
91 #if defined(RTEMS_SMP) 92 }
while ( _SMP_sequence_lock_Read_retry( &node->Priority.Lock, seq ) );
104 #if defined(RTEMS_SMP) 107 seq = _SMP_sequence_lock_Write_begin( &node->Priority.Lock );
110 new_priority |= ( prepend_it ? 0 : SCHEDULER_PRIORITY_APPEND_FLAG );
111 node->Priority.value = new_priority;
113 #if defined(RTEMS_SMP) 114 _SMP_sequence_lock_Write_end( &node->Priority.Lock, seq );
118 #if defined(RTEMS_SMP) #define RTEMS_INLINE_ROUTINE
Definition: basedefs.h:65
uint64_t Priority_Control
The thread priority control.
Definition: priority.h:66
struct _Thread_Control * owner
The thread owning this node.
Definition: schedulernode.h:109
RTEMS_INLINE_ROUTINE void _Chain_Initialize_node(Chain_Node *the_node)
Initializes a chain node.
Definition: chainimpl.h:119
struct Scheduler_Node::@3976 Wait
Thread wait support block.
Scheduler control.
Definition: scheduler.h:266
Scheduler node for per-thread data.
Definition: schedulernode.h:65
#define NULL
Requests a GPIO pin group configuration.
Definition: bestcomm_api.h:77