RTEMS
5.0.0
|
Data Structures | |
struct | Scheduler_priority_Context |
struct | Scheduler_priority_Ready_queue |
Data for ready queue operations. More... | |
struct | Scheduler_priority_Node |
Scheduler node specialization for Deterministic Priority schedulers. More... | |
Macros | |
#define | SCHEDULER_PRIORITY_ENTRY_POINTS |
Functions | |
void | _Scheduler_priority_Initialize (const Scheduler_Control *scheduler) |
Initializes the priority scheduler. This routine initializes the priority scheduler. | |
void | _Scheduler_priority_Block (const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node) |
void | _Scheduler_priority_Schedule (const Scheduler_Control *scheduler, Thread_Control *the_thread) |
Sets the heir thread to be the next ready thread. More... | |
void | _Scheduler_priority_Unblock (const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node) |
void | _Scheduler_priority_Update_priority (const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *base_node) |
void | _Scheduler_priority_Node_initialize (const Scheduler_Control *scheduler, Scheduler_Node *node, Thread_Control *the_thread, Priority_Control priority) |
void | _Scheduler_priority_Yield (const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node) |
RTEMS_INLINE_ROUTINE Scheduler_priority_Context * | _Scheduler_priority_Get_context (const Scheduler_Control *scheduler) |
RTEMS_INLINE_ROUTINE Scheduler_priority_Node * | _Scheduler_priority_Thread_get_node (Thread_Control *the_thread) |
RTEMS_INLINE_ROUTINE Scheduler_priority_Node * | _Scheduler_priority_Node_downcast (Scheduler_Node *node) |
RTEMS_INLINE_ROUTINE void | _Scheduler_priority_Ready_queue_initialize (Chain_Control *ready_queues, Priority_Control maximum_priority) |
Ready queue initialization. More... | |
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. More... | |
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. More... | |
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. More... | |
RTEMS_INLINE_ROUTINE void | _Scheduler_priority_Extract_body (const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node) |
RTEMS_INLINE_ROUTINE Chain_Node * | _Scheduler_priority_Ready_queue_first (Priority_bit_map_Control *bit_map, Chain_Control *ready_queues) |
Return a pointer to the first node. More... | |
RTEMS_INLINE_ROUTINE void | _Scheduler_priority_Schedule_body (const Scheduler_Control *scheduler, Thread_Control *the_thread, bool force_dispatch) |
Scheduling decision logic. More... | |
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. More... | |
#define SCHEDULER_PRIORITY_ENTRY_POINTS |
Entry points for the Deterministic Priority Based Scheduler.
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.
The node is placed as the last element of its priority group.
[in] | node | The node to enqueue. |
[in] | ready_queue | The ready queue. |
[in] | bit_map | The priority bit map of the scheduler instance. |
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.
The node is placed as the first element of its priority group.
[in] | node | The node to enqueue as first. |
[in] | ready_queue | The ready queue. |
[in] | bit_map | The priority bit map of the scheduler instance. |
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.
[in] | node | The node to extract. |
[in] | ready_queue | The ready queue. |
[in] | bit_map | The priority bit map of the scheduler instance. |
RTEMS_INLINE_ROUTINE Chain_Node* _Scheduler_priority_Ready_queue_first | ( | Priority_bit_map_Control * | bit_map, |
Chain_Control * | ready_queues | ||
) |
Return a pointer to the first node.
This routines returns a pointer to the first node on ready_queues.
[in] | bit_map | The priority bit map of the scheduler instance. |
[in] | ready_queues | The ready queues of the scheduler instance. |
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Ready_queue_initialize | ( | Chain_Control * | ready_queues, |
Priority_Control | maximum_priority | ||
) |
Ready queue initialization.
This routine initializes ready_queues for priority-based scheduling.
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.
[in] | ready_queue | The ready queue. |
[in] | new_priority | The new priority. |
[in] | bit_map | The priority bit map of the scheduler instance. |
[in] | ready_queues | The ready queues of the scheduler instance. |
void _Scheduler_priority_Schedule | ( | const Scheduler_Control * | scheduler, |
Thread_Control * | the_thread | ||
) |
Sets the heir thread to be the next ready thread.
This kernel routine sets the heir thread to be the next ready thread by invoking the_scheduler->ready_queue->operations->first().
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body | ( | const Scheduler_Control * | scheduler, |
Thread_Control * | the_thread, | ||
bool | force_dispatch | ||
) |
Scheduling decision logic.
This kernel routine implements scheduling decision logic for priority-based scheduling.