RTEMS  5.0.0
Files | Data Structures | Macros | Functions
Deterministic Priority Affinity SMP Scheduler

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...
 

Functions

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. More...
 
void _Scheduler_priority_affinity_SMP_Block (const Scheduler_Control *scheduler, Thread_Control *thread, Scheduler_Node *node)
 
void _Scheduler_priority_affinity_SMP_Unblock (const Scheduler_Control *scheduler, Thread_Control *thread, Scheduler_Node *node)
 
void _Scheduler_priority_affinity_SMP_Update_priority (const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node)
 
bool _Scheduler_priority_affinity_SMP_Ask_for_help (const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node)
 
void _Scheduler_priority_affinity_SMP_Reconsider_help_request (const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node)
 
void _Scheduler_priority_affinity_SMP_Withdraw_node (const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node, Thread_Scheduler_state next_state)
 
void _Scheduler_priority_affinity_SMP_Add_processor (const Scheduler_Control *scheduler, Thread_Control *idle)
 
Thread_Control_Scheduler_priority_affinity_SMP_Remove_processor (const Scheduler_Control *scheduler, struct Per_CPU_Control *cpu)
 
bool _Scheduler_priority_affinity_SMP_Set_affinity (const Scheduler_Control *scheduler, Thread_Control *thread, Scheduler_Node *node, const Processor_mask *affinity)
 Set affinity for the priority affinity SMP scheduler. More...
 

Detailed Description

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.

Note
This is the first iteration of this scheduler. It currently tracks the requested affinity to exercise the Scheduler Framework but it does not honor that affinity in assigning threads to cores. This will be added in a subsequent revision.

Macro Definition Documentation

◆ SCHEDULER_PRIORITY_AFFINITY_SMP_ENTRY_POINTS

#define SCHEDULER_PRIORITY_AFFINITY_SMP_ENTRY_POINTS
Value:
{ \
_Scheduler_priority_SMP_Initialize, \
_Scheduler_default_Schedule, \
_Scheduler_priority_SMP_Yield, \
_Scheduler_priority_affinity_SMP_Block, \
_Scheduler_priority_affinity_SMP_Unblock, \
_Scheduler_priority_affinity_SMP_Update_priority, \
_Scheduler_default_Map_priority, \
_Scheduler_default_Unmap_priority, \
_Scheduler_priority_affinity_SMP_Ask_for_help, \
_Scheduler_priority_affinity_SMP_Reconsider_help_request, \
_Scheduler_priority_affinity_SMP_Withdraw_node, \
_Scheduler_default_Pin_or_unpin, \
_Scheduler_default_Pin_or_unpin, \
_Scheduler_priority_affinity_SMP_Add_processor, \
_Scheduler_priority_affinity_SMP_Remove_processor, \
_Scheduler_priority_affinity_SMP_Node_initialize, \
_Scheduler_default_Node_destroy, \
_Scheduler_default_Release_job, \
_Scheduler_default_Cancel_job, \
_Scheduler_default_Tick, \
_Scheduler_SMP_Start_idle, \
_Scheduler_priority_affinity_SMP_Set_affinity \
}

Entry points for the Deterministic Priority Affinity SMP Scheduler.

Function Documentation

◆ _Scheduler_priority_affinity_SMP_Node_initialize()

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.

Parameters
[in]schedulerpoints to the scheduler specific information.
[in]nodeis the node the scheduler is allocating management memory for.
[in]the_threadthe thread of the node.
[in]priorityis the thread priority.

◆ _Scheduler_priority_affinity_SMP_Set_affinity()

bool _Scheduler_priority_affinity_SMP_Set_affinity ( const Scheduler_Control scheduler,
Thread_Control thread,
Scheduler_Node node,
const Processor_mask *  affinity 
)

Set affinity for the priority affinity SMP scheduler.

Parameters
[in]schedulerThe scheduler of the thread.
[in]threadThe associated thread.
[in]affinityThe new affinity set.
Return values
trueif successful
falseif unsuccessful