23 #ifndef _RTEMS_SCORE_SCHEDULERPRIORITYSMPIMPL_H 24 #define _RTEMS_SCORE_SCHEDULERPRIORITYSMPIMPL_H 60 static inline bool _Scheduler_priority_SMP_Has_ready(
Scheduler_Context *context )
63 _Scheduler_priority_SMP_Get_self( context );
65 return !_Priority_bit_map_Is_empty( &self->Bit_map );
68 static inline void _Scheduler_priority_SMP_Move_from_scheduled_to_ready(
74 _Scheduler_priority_SMP_Get_self( context );
76 _Scheduler_priority_SMP_Node_downcast( scheduled_to_ready );
86 static inline void _Scheduler_priority_SMP_Move_from_ready_to_scheduled(
95 self = _Scheduler_priority_SMP_Get_self( context );
96 node = _Scheduler_priority_SMP_Node_downcast( ready_to_scheduled );
103 insert_priority = _Scheduler_SMP_Node_priority( &node->
Base.
Base );
106 &self->Base.Scheduled,
109 _Scheduler_SMP_Priority_less_equal
113 static inline void _Scheduler_priority_SMP_Insert_ready(
122 self = _Scheduler_priority_SMP_Get_self( context );
123 node = _Scheduler_priority_SMP_Node_downcast( node_base );
140 static inline void _Scheduler_priority_SMP_Extract_from_ready(
146 _Scheduler_priority_SMP_Get_self( context );
148 _Scheduler_priority_SMP_Node_downcast( thread );
157 static inline void _Scheduler_priority_SMP_Do_update(
166 self = _Scheduler_priority_SMP_Get_self( context );
167 node = _Scheduler_priority_SMP_Node_downcast( node_to_update );
169 _Scheduler_SMP_Node_update_priority( &node->
Base, new_priority );
RTEMS_INLINE_ROUTINE void _Chain_Insert_ordered_unprotected(Chain_Control *the_chain, Chain_Node *to_insert, const void *left, Chain_Node_order order)
Inserts a node into the chain according to the order relation.
Definition: chainimpl.h:860
#define SCHEDULER_PRIORITY_IS_APPEND(priority)
Returns true, if the item should be appended to its priority group, otherwise returns false and the i...
Definition: schedulerimpl.h:66
Inlined Routines Associated with the Manipulation of the Priority-Based Scheduling Structures...
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Ready_queue_enqueue_first(Chain_Node *node, Scheduler_priority_Ready_queue *ready_queue, Priority_bit_map_Control *bit_map)
Enqueues a node on the specified ready queue as first.
Definition: schedulerpriorityimpl.h:105
Scheduler context.
Definition: scheduler.h:249
RTEMS_INLINE_ROUTINE void _Chain_Extract_unprotected(Chain_Node *the_node)
Extract this node (unprotected).
Definition: chainimpl.h:557
Scheduler_SMP_Node Base
SMP scheduler node.
Definition: schedulerprioritysmp.h:68
Inlined Routines Associated with the Manipulation of the Priority-Based Scheduling Structures...
Deterministic Priority SMP Scheduler API.
uint64_t Priority_Control
The thread priority control.
Definition: priority.h:66
Scheduler context specialization for Deterministic Priority SMP schedulers.
Definition: schedulerprioritysmp.h:54
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Ready_queue_extract(Chain_Node *node, Scheduler_priority_Ready_queue *ready_queue, Priority_bit_map_Control *bit_map)
Extracts a node from the specified ready queue.
Definition: schedulerpriorityimpl.h:124
Scheduler_priority_Ready_queue Ready_queue
The associated ready queue of this node.
Definition: schedulerprioritysmp.h:73
#define SCHEDULER_PRIORITY_UNMAP(priority)
Returns the plain priority value.
Definition: schedulerimpl.h:47
SMP Scheduler Implementation.
Scheduler_Node Base
Basic scheduler node.
Definition: schedulersmp.h:102
unsigned context
Definition: tlb.h:108
Scheduler node for per-thread data.
Definition: schedulernode.h:65
Scheduler node specialization for Deterministic Priority SMP schedulers.
Definition: schedulerprioritysmp.h:64
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Ready_queue_update(Scheduler_priority_Ready_queue *ready_queue, unsigned int new_priority, Priority_bit_map_Control *bit_map, Chain_Control *ready_queues)
Updates the specified ready queue data according to the new priority value.
Definition: schedulerpriorityimpl.h:217
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Ready_queue_enqueue(Chain_Node *node, Scheduler_priority_Ready_queue *ready_queue, Priority_bit_map_Control *bit_map)
Enqueues a node on the specified ready queue.
Definition: schedulerpriorityimpl.h:84
#define SCHEDULER_PRIORITY_APPEND(priority)
Returns the priority control with the append indicator bit set.
Definition: schedulerimpl.h:58