RTEMS
5.1
|
Deterministic Priority SMP Scheduler. More...
Modules | |
Deterministic Priority Affinity SMP Scheduler | |
Deterministic Priority Affinity SMP Scheduler. | |
Files | |
file | schedulerprioritysmp.h |
Deterministic Priority SMP Scheduler API. | |
file | schedulerprioritysmpimpl.h |
Deterministic Priority SMP Scheduler API. | |
file | schedulerprioritysmp.c |
Deterministic Priority SMP Scheduler Implementation. | |
Data Structures | |
struct | Scheduler_priority_SMP_Context |
Scheduler context specialization for Deterministic Priority SMP schedulers. More... | |
struct | Scheduler_priority_SMP_Node |
Scheduler node specialization for Deterministic Priority SMP schedulers. More... | |
Macros | |
#define | SCHEDULER_PRIORITY_SMP_ENTRY_POINTS |
Entry points for the Priority SMP Scheduler. More... | |
Deterministic Priority SMP Scheduler.
This is an implementation of the global fixed priority scheduler (G-FP). It uses one ready chain per priority to ensure constant time insert operations. The scheduled chain uses linear insert operations and has at most processor count entries. Since the processor and priority count are constants all scheduler operations complete in a bounded execution time.
The thread preempt mode will be ignored.
#define SCHEDULER_PRIORITY_SMP_ENTRY_POINTS |
Entry points for the Priority SMP Scheduler.
void _Scheduler_priority_SMP_Add_processor | ( | const Scheduler_Control * | scheduler, |
Thread_Control * | idle | ||
) |
Adds idle to scheduler.
[in,out] | scheduler | The scheduler instance to add the processor to. |
idle | The idle thrad control. |
bool _Scheduler_priority_SMP_Ask_for_help | ( | const Scheduler_Control * | scheduler, |
Thread_Control * | the_thread, | ||
Scheduler_Node * | node | ||
) |
Asks for help operation.
scheduler | The scheduler instance to ask for help. |
the_thread | The thread needing help. |
node | The scheduler node. |
true | Ask for help was successful. |
false | Ask for help was not successful. |
void _Scheduler_priority_SMP_Block | ( | const Scheduler_Control * | scheduler, |
Thread_Control * | thread, | ||
Scheduler_Node * | node | ||
) |
Blocks the thread.
scheduler | The scheduler instance. | |
[in,out] | the_thread | The thread to block. |
[in,out] | node | The thread's scheduler node. |
void _Scheduler_priority_SMP_Initialize | ( | const Scheduler_Control * | scheduler | ) |
Initializes the priority SMP scheduler.
This routine initializes the priority SMP scheduler.
scheduler | The scheduler to initialize. |
void _Scheduler_priority_SMP_Node_initialize | ( | const Scheduler_Control * | scheduler, |
Scheduler_Node * | node, | ||
Thread_Control * | the_thread, | ||
Priority_Control | priority | ||
) |
Initializes the node with the given priority.
scheduler | The scheduler instance. | |
[out] | node | The node to initialize. |
the_thread | The thread of the scheduler node. | |
priority | The priority for the initialization. |
void _Scheduler_priority_SMP_Reconsider_help_request | ( | const Scheduler_Control * | scheduler, |
Thread_Control * | the_thread, | ||
Scheduler_Node * | node | ||
) |
Reconsiders help operation.
scheduler | The scheduler instance to reconsider the help request. |
the_thread | The thread reconsidering a help request. |
node | The scheduler node. |
Thread_Control* _Scheduler_priority_SMP_Remove_processor | ( | const Scheduler_Control * | scheduler, |
struct Per_CPU_Control * | cpu | ||
) |
Removes an idle thread from the given cpu.
scheduler | The scheduler instance. |
cpu | The cpu control to remove from scheduler. |
void _Scheduler_priority_SMP_Unblock | ( | const Scheduler_Control * | scheduler, |
Thread_Control * | thread, | ||
Scheduler_Node * | node | ||
) |
Unblocks the thread.
scheduler | The scheduler instance. | |
[in,out] | the_thread | The thread to unblock. |
[in,out] | node | The thread's scheduler node. |
void _Scheduler_priority_SMP_Update_priority | ( | const Scheduler_Control * | scheduler, |
Thread_Control * | the_thread, | ||
Scheduler_Node * | node | ||
) |
Updates the priority of the node.
scheduler | The scheduler instance. |
the_thread | The thread for the operation. |
base_node | The thread's scheduler node. |
void _Scheduler_priority_SMP_Withdraw_node | ( | const Scheduler_Control * | scheduler, |
Thread_Control * | the_thread, | ||
Scheduler_Node * | node, | ||
Thread_Scheduler_state | next_state | ||
) |
Withdraws node operation.
scheduler | The scheduler instance to withdraw the node. |
the_thread | The thread using the node. |
node | The scheduler node to withdraw. |
next_state | The next thread scheduler state in case the node is scheduled. |
void _Scheduler_priority_SMP_Yield | ( | const Scheduler_Control * | scheduler, |
Thread_Control * | thread, | ||
Scheduler_Node * | node | ||
) |
Performs the yield of a thread.
scheduler | The scheduler instance. | |
[in,out] | the_thread | The thread that performed the yield operation. |
node | The scheduler node of the_thread. |