RTEMS
5.1
|
Deterministic Priority Affinity SMP Scheduler. More...
Files | |
file | schedulerpriorityaffinitysmp.h |
Deterministic Priority Affinity SMP Scheduler API. | |
file | schedulerpriorityaffinitysmp.c |
Deterministic Priority Affinity SMP Scheduler Implementation. | |
Data Structures | |
struct | Scheduler_priority_affinity_SMP_Node |
Scheduler node specialization for Deterministic Priority Affinity SMP schedulers. More... | |
Macros | |
#define | SCHEDULER_PRIORITY_AFFINITY_SMP_ENTRY_POINTS |
Entry points for the Deterministic Priority Affinity SMP Scheduler. More... | |
Deterministic Priority Affinity SMP Scheduler.
This is an extension of the Deterministic Priority SMP Scheduler. which is an implementation of the global fixed priority scheduler (G-FP). It adds thread to core affinity support.
#define SCHEDULER_PRIORITY_AFFINITY_SMP_ENTRY_POINTS |
Entry points for the Deterministic Priority Affinity SMP Scheduler.
void _Scheduler_priority_affinity_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 thread control. |
bool _Scheduler_priority_affinity_SMP_Ask_for_help | ( | const Scheduler_Control * | scheduler, |
Thread_Control * | the_thread, | ||
Scheduler_Node * | node | ||
) |
Asks for help.
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_affinity_SMP_Block | ( | const Scheduler_Control * | scheduler, |
Thread_Control * | thread, | ||
Scheduler_Node * | node | ||
) |
Blocks a thread.
scheduler | The scheduler instance. | |
[in,out] | The | thread to block. |
[in,out] | node | The scheduler node of the thread. |
void _Scheduler_priority_affinity_SMP_Node_initialize | ( | const Scheduler_Control * | scheduler, |
Scheduler_Node * | node, | ||
Thread_Control * | the_thread, | ||
Priority_Control | priority | ||
) |
Initializes per thread scheduler information.
This routine allocates thread->scheduler.
scheduler | Points to the scheduler specific information. | |
[in,out] | node | The node the scheduler is allocating management memory for. |
the_thread | The thread of the node. | |
priority | The thread priority. |
void _Scheduler_priority_affinity_SMP_Reconsider_help_request | ( | const Scheduler_Control * | scheduler, |
Thread_Control * | the_thread, | ||
Scheduler_Node * | node | ||
) |
Reconsiders help.
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_affinity_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. |
bool _Scheduler_priority_affinity_SMP_Set_affinity | ( | const Scheduler_Control * | scheduler, |
Thread_Control * | thread, | ||
Scheduler_Node * | node, | ||
const Processor_mask * | affinity | ||
) |
Sets affinity for the priority affinity SMP scheduler.
scheduler | The scheduler of the thread. | |
[in,out] | thread | The associated thread. |
[in,out] | node | The scheduler node. |
affinity | The new affinity set. |
true | if successful |
false | if unsuccessful |
void _Scheduler_priority_affinity_SMP_Unblock | ( | const Scheduler_Control * | scheduler, |
Thread_Control * | thread, | ||
Scheduler_Node * | node | ||
) |
Unblocks a thread.
scheduler | The scheduler instance. | |
[in,out] | The | thread to unblock. |
[in,out] | node | The scheduler node of the thread. |
void _Scheduler_priority_affinity_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 of the node. | |
[in,out] | The | node to update the priority of. |
void _Scheduler_priority_affinity_SMP_Withdraw_node | ( | const Scheduler_Control * | scheduler, |
Thread_Control * | the_thread, | ||
Scheduler_Node * | node, | ||
Thread_Scheduler_state | next_state | ||
) |
Withdraws node.
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 the case the node is scheduled. |