22 #ifndef _RTEMS_SCORE_SCHEDULERPRIORITYIMPL_H 23 #define _RTEMS_SCORE_SCHEDULERPRIORITYIMPL_H 97 for ( index = 0 ; index <= (size_t) maximum_priority ; ++index ) {
258 unsigned int new_priority,
264 ready_queue->
ready_chain = &ready_queues[ new_priority ];
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
RTEMS_INLINE_ROUTINE void _Chain_Initialize_node(Chain_Node *the_node)
Initializes a chain node.
Definition: chainimpl.h:122
RTEMS_INLINE_ROUTINE Scheduler_Context * _Scheduler_Get_context(const Scheduler_Control *scheduler)
Gets the context of the scheduler.
Definition: schedulerimpl.h:58
RTEMS_INLINE_ROUTINE Chain_Node * _Chain_Tail(Chain_Control *the_chain)
Returns pointer to chain tail.
Definition: chainimpl.h:227
uint64_t Priority_Control
The thread priority control.
Definition: priority.h:70
Chain_Control * ready_chain
Definition: schedulerpriority.h:92
Definition: schedulerpriority.h:65
Definition: prioritybitmap.h:42
RTEMS_INLINE_ROUTINE void _Priority_bit_map_Add(Priority_bit_map_Control *bit_map, Priority_bit_map_Information *bit_map_info)
Adds Priority queue bit map information.
Definition: prioritybitmapimpl.h:162
Priority_bit_map_Information Priority_map
Definition: schedulerpriority.h:95
Inlined Routines Associated with the Manipulation of the Scheduler.
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body(const Scheduler_Control *scheduler, Thread_Control *the_thread, bool force_dispatch)
Scheduling decision logic.
Definition: schedulerpriorityimpl.h:228
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(Chain_Control *the_chain)
Initializes this chain as empty.
Definition: chainimpl.h:505
unsigned int current_priority
The thread priority currently used by the scheduler.
Definition: schedulerpriority.h:89
RTEMS_INLINE_ROUTINE Chain_Node * _Scheduler_priority_Ready_queue_first(Priority_bit_map_Control *bit_map, Chain_Control *ready_queues)
Returns a pointer to the first node.
Definition: schedulerpriorityimpl.h:204
RTEMS_INLINE_ROUTINE Scheduler_priority_Context * _Scheduler_priority_Get_context(const Scheduler_Control *scheduler)
Gets the context of the scheduler.
Definition: schedulerpriorityimpl.h:49
Thread Manipulation with the Priority-Based Scheduler.
RTEMS_INLINE_ROUTINE void _Priority_bit_map_Remove(Priority_bit_map_Control *bit_map, Priority_bit_map_Information *bit_map_info)
Removes Priority queue bit map information.
Definition: prioritybitmapimpl.h:179
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Ready_queue_initialize(Chain_Control *ready_queues, Priority_Control maximum_priority)
Ready queue initialization.
Definition: schedulerpriorityimpl.h:90
Inlined Routines in the Priority Handler Bit Map Implementation.
RTEMS_INLINE_ROUTINE void _Scheduler_Update_heir(Thread_Control *new_heir, bool force_dispatch)
Updates the heir.
Definition: schedulerimpl.h:1184
RTEMS_INLINE_ROUTINE Chain_Node * _Chain_First(const Chain_Control *the_chain)
Returns pointer to chain's first node.
Definition: chainimpl.h:260
Data for ready queue operations.
Definition: schedulerpriority.h:85
Scheduler_priority_Ready_queue Ready_queue
The associated ready queue of this node.
Definition: schedulerpriority.h:110
Chain_Node Node
Definition: objectdata.h:41
Objects_Control Object
Definition: thread.h:734
RTEMS_INLINE_ROUTINE unsigned int _Priority_bit_map_Get_highest(const Priority_bit_map_Control *bit_map)
Gets highest portion of Priority queue bit map.
Definition: prioritybitmapimpl.h:196
RTEMS_INLINE_ROUTINE bool _Chain_Has_only_one_node(const Chain_Control *the_chain)
Checks if this chain has only one node.
Definition: chainimpl.h:450
Scheduler node specialization for Deterministic Priority schedulers.
Definition: schedulerpriority.h:101
RTEMS_INLINE_ROUTINE Scheduler_priority_Node * _Scheduler_priority_Thread_get_node(Thread_Control *the_thread)
Gets the scheduler node of the thread.
Definition: schedulerpriorityimpl.h:61
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(Chain_Control *the_chain, Chain_Node *the_node)
Appends a node (unprotected).
Definition: chainimpl.h:680
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 control.
Definition: scheduler.h:269
Scheduler node for per-thread data.
Definition: schedulernode.h:79
RTEMS_INLINE_ROUTINE void _Priority_bit_map_Initialize_information(Priority_bit_map_Control *bit_map, Priority_bit_map_Information *bit_map_info, unsigned int new_priority)
Initializes the bit map information.
Definition: prioritybitmapimpl.h:234
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Extract_body(const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node)
Extracts a node from the context of the scheduler.
Definition: schedulerpriorityimpl.h:175
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 Scheduler_priority_Node * _Scheduler_priority_Node_downcast(Scheduler_Node *node)
Gets the priority node of the scheduler node.
Definition: schedulerpriorityimpl.h:75
RTEMS_INLINE_ROUTINE void _Chain_Prepend_unprotected(Chain_Control *the_chain, Chain_Node *the_node)
Prepends a node (unprotected).
Definition: chainimpl.h:732
#define RTEMS_INLINE_ROUTINE
Definition: basedefs.h:66
Constants and Structures Related with the Thread Control Block.
#define _Assert(_e)
Assertion similar to assert() controlled via RTEMS_DEBUG instead of NDEBUG.
Definition: assert.h:100
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