RTEMS 6.1-rc4
|
This group contains the Earliest Deadline First (EDF) Priority SMP Scheduler implementation. More...
Data Structures | |
struct | Scheduler_EDF_SMP_Node |
struct | Scheduler_EDF_SMP_Ready_queue |
struct | Scheduler_EDF_SMP_Context |
Macros | |
#define | SCHEDULER_EDF_SMP_ENTRY_POINTS |
Functions | |
void | _Scheduler_EDF_SMP_Initialize (const Scheduler_Control *scheduler) |
Initializes the context of the scheduler control. | |
void | _Scheduler_EDF_SMP_Node_initialize (const Scheduler_Control *scheduler, Scheduler_Node *node, Thread_Control *the_thread, Priority_Control priority) |
Initializes the node with the given priority. | |
void | _Scheduler_EDF_SMP_Block (const Scheduler_Control *scheduler, Thread_Control *thread, Scheduler_Node *node) |
Blocks the thread. | |
void | _Scheduler_EDF_SMP_Unblock (const Scheduler_Control *scheduler, Thread_Control *thread, Scheduler_Node *node) |
Unblocks the thread. | |
void | _Scheduler_EDF_SMP_Update_priority (const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node) |
Updates the priority of the node. | |
bool | _Scheduler_EDF_SMP_Ask_for_help (const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node) |
Asks for help operation. | |
void | _Scheduler_EDF_SMP_Reconsider_help_request (const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node) |
Reconsiders help operation. | |
void | _Scheduler_EDF_SMP_Withdraw_node (const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node, Thread_Scheduler_state next_state) |
Withdraws node operation. | |
void | _Scheduler_EDF_SMP_Make_sticky (const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node) |
Makes the node sticky. | |
void | _Scheduler_EDF_SMP_Clean_sticky (const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node) |
Cleans the sticky property from the node. | |
void | _Scheduler_EDF_SMP_Pin (const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node, struct Per_CPU_Control *cpu) |
Pin thread operation. | |
void | _Scheduler_EDF_SMP_Unpin (const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node, struct Per_CPU_Control *cpu) |
Unpin thread operation. | |
void | _Scheduler_EDF_SMP_Add_processor (const Scheduler_Control *scheduler, Thread_Control *idle) |
Adds processor. | |
Thread_Control * | _Scheduler_EDF_SMP_Remove_processor (const Scheduler_Control *scheduler, struct Per_CPU_Control *cpu) |
Removes an idle thread from the given cpu. | |
void | _Scheduler_EDF_SMP_Yield (const Scheduler_Control *scheduler, Thread_Control *thread, Scheduler_Node *node) |
Performs the yield of a thread. | |
void | _Scheduler_EDF_SMP_Start_idle (const Scheduler_Control *scheduler, Thread_Control *idle, struct Per_CPU_Control *cpu) |
Starts an idle thread. | |
Status_Control | _Scheduler_EDF_SMP_Set_affinity (const Scheduler_Control *scheduler, Thread_Control *thread, Scheduler_Node *node, const Processor_mask *affinity) |
Checks if the processor set of the scheduler is the subset of the affinity set. | |
This group contains the Earliest Deadline First (EDF) Priority SMP Scheduler implementation.
#define SCHEDULER_EDF_SMP_ENTRY_POINTS |
void _Scheduler_EDF_SMP_Add_processor | ( | const Scheduler_Control * | scheduler, |
Thread_Control * | idle | ||
) |
Adds processor.
[in,out] | scheduler | The scheduler instance to add the processor to. |
idle | The idle thread of the processor to add. |
bool _Scheduler_EDF_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_EDF_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_EDF_SMP_Clean_sticky | ( | const Scheduler_Control * | scheduler, |
Thread_Control * | the_thread, | ||
Scheduler_Node * | node | ||
) |
Cleans the sticky property from the node.
scheduler | is the scheduler of the node. | |
[in,out] | the_thread | is the thread owning the node. |
[in,out] | node | is the scheduler node to clean the sticky property. |
void _Scheduler_EDF_SMP_Initialize | ( | const Scheduler_Control * | scheduler | ) |
Initializes the context of the scheduler control.
scheduler | The scheduler control. |
void _Scheduler_EDF_SMP_Make_sticky | ( | const Scheduler_Control * | scheduler, |
Thread_Control * | the_thread, | ||
Scheduler_Node * | node | ||
) |
Makes the node sticky.
scheduler | is the scheduler of the node. | |
[in,out] | the_thread | is the thread owning the node. |
[in,out] | node | is the scheduler node to make sticky. |
void _Scheduler_EDF_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_EDF_SMP_Pin | ( | const Scheduler_Control * | scheduler, |
Thread_Control * | the_thread, | ||
Scheduler_Node * | node, | ||
struct Per_CPU_Control * | cpu | ||
) |
Pin thread operation.
scheduler | The scheduler instance of the specified processor. |
the_thread | The thread to pin. |
node | The scheduler node of the thread. |
cpu | The processor to pin the thread. |
void _Scheduler_EDF_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_EDF_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. |
Status_Control _Scheduler_EDF_SMP_Set_affinity | ( | const Scheduler_Control * | scheduler, |
Thread_Control * | thread, | ||
Scheduler_Node * | node, | ||
const Processor_mask * | affinity | ||
) |
Checks if the processor set of the scheduler is the subset of the affinity set.
Default implementation of the set affinity scheduler operation.
scheduler | This parameter is unused. |
thread | This parameter is unused. |
node | This parameter is unused. |
affinity | The new processor affinity set for the thread. |
STATUS_SUCCESSFUL | The processor set of the scheduler is a subset of the affinity set. |
STATUS_INVALID_NUMBER | The processor set of the scheduler is not a subset of the affinity set. |
void _Scheduler_EDF_SMP_Start_idle | ( | const Scheduler_Control * | scheduler, |
Thread_Control * | idle, | ||
struct Per_CPU_Control * | cpu | ||
) |
Starts an idle thread.
scheduler | The scheduler instance. | |
[in,out] | the_thread | An idle thread. |
cpu | The cpu for the operation. |
void _Scheduler_EDF_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_EDF_SMP_Unpin | ( | const Scheduler_Control * | scheduler, |
Thread_Control * | the_thread, | ||
Scheduler_Node * | node, | ||
struct Per_CPU_Control * | cpu | ||
) |
Unpin thread operation.
scheduler | The scheduler instance of the specified processor. |
the_thread | The thread to unpin. |
node | The scheduler node of the thread. |
cpu | The processor to unpin the thread. |
void _Scheduler_EDF_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. |
node | The thread's scheduler node. |
void _Scheduler_EDF_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_EDF_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. |