![]() |
RTEMS 6.1-rc1
|
This group contains the Deterministic Priority Affinity SMP Scheduler implementation. More...
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... | |
This group contains the Deterministic Priority Affinity SMP Scheduler implementation.
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_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_priority_affinity_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_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. |
Status_Control _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. |
STATUS_SUCCESSFUL | if successful |
STATUS_INVALID_NUMBER | 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. |