23 #ifndef _RTEMS_SCORE_SCHEDULERPRIORITYSMPIMPL_H 24 #define _RTEMS_SCORE_SCHEDULERPRIORITYSMPIMPL_H 63 _Scheduler_priority_SMP_Get_self(
context );
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 );
#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: schedulernodeimpl.h:80
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:111
RTEMS_INLINE_ROUTINE void _Chain_Extract_unprotected(Chain_Node *the_node)
Extracts this node (unprotected).
Definition: chainimpl.h:558
uint64_t Priority_Control
The thread priority control.
Definition: priority.h:70
Inlined Routines Associated with the Manipulation of the Priority-Based Scheduling Structures.
Scheduler context.
Definition: scheduler.h:252
#define SCHEDULER_PRIORITY_APPEND(priority)
Returns the priority control with the append indicator bit set.
Definition: schedulernodeimpl.h:72
Scheduler_SMP_Node Base
SMP scheduler node.
Definition: schedulerprioritysmp.h:70
Inlined Routines Associated with the Manipulation of the Priority-Based Scheduling Structures.
Deterministic Priority SMP Scheduler API.
Scheduler context specialization for Deterministic Priority SMP schedulers.
Definition: schedulerprioritysmp.h:56
Scheduler_priority_Ready_queue Ready_queue
The associated ready queue of this node.
Definition: schedulerprioritysmp.h:75
#define SCHEDULER_PRIORITY_UNMAP(priority)
Returns the plain priority value.
Definition: schedulernodeimpl.h:61
SMP Scheduler Implementation.
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:864
Scheduler_Node Base
Basic scheduler node.
Definition: schedulersmp.h:104
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:256
unsigned context
Definition: tlb.h:108
Scheduler node for per-thread data.
Definition: schedulernode.h:79
Scheduler node specialization for Deterministic Priority SMP schedulers.
Definition: schedulerprioritysmp.h:66
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:132
RTEMS_INLINE_ROUTINE bool _Priority_bit_map_Is_empty(const Priority_bit_map_Control *bit_map)
Checks if the Priority queue bit map is empty.
Definition: prioritybitmapimpl.h:218
RTEMS_INLINE_ROUTINE Scheduler_Node * _Thread_Scheduler_get_home_node(const Thread_Control *the_thread)
Gets the scheduler's home node.
Definition: threadimpl.h:1412
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:151