17 #ifndef _RTEMS_SCORE_SCHEDULEREDFSMP_H 18 #define _RTEMS_SCORE_SCHEDULEREDFSMP_H 91 int64_t generations[ 2 ];
108 #define SCHEDULER_EDF_SMP_ENTRY_POINTS \ 110 _Scheduler_EDF_SMP_Initialize, \ 111 _Scheduler_default_Schedule, \ 112 _Scheduler_EDF_SMP_Yield, \ 113 _Scheduler_EDF_SMP_Block, \ 114 _Scheduler_EDF_SMP_Unblock, \ 115 _Scheduler_EDF_SMP_Update_priority, \ 116 _Scheduler_EDF_Map_priority, \ 117 _Scheduler_EDF_Unmap_priority, \ 118 _Scheduler_EDF_SMP_Ask_for_help, \ 119 _Scheduler_EDF_SMP_Reconsider_help_request, \ 120 _Scheduler_EDF_SMP_Withdraw_node, \ 121 _Scheduler_EDF_SMP_Pin, \ 122 _Scheduler_EDF_SMP_Unpin, \ 123 _Scheduler_EDF_SMP_Add_processor, \ 124 _Scheduler_EDF_SMP_Remove_processor, \ 125 _Scheduler_EDF_SMP_Node_initialize, \ 126 _Scheduler_default_Node_destroy, \ 127 _Scheduler_EDF_Release_job, \ 128 _Scheduler_EDF_Cancel_job, \ 129 _Scheduler_default_Tick, \ 130 _Scheduler_EDF_SMP_Start_idle, \ 131 _Scheduler_EDF_SMP_Set_affinity \ 238 Thread_Scheduler_state next_state
338 const Processor_mask *affinity
uint8_t ready_queue_index
The ready queue index depending on the processor affinity and pinning of the thread.
Definition: scheduleredfsmp.h:55
Scheduler context specialization for SMP schedulers.
Definition: schedulersmp.h:46
uint8_t pinning_ready_queue_index
Ready queue index according to thread pinning.
Definition: scheduleredfsmp.h:65
Chain_Control Affine_queues
Chain of ready queues with affine threads to determine the highest priority ready thread.
Definition: scheduleredfsmp.h:97
Definition: scheduleredfsmp.h:85
uint64_t Priority_Control
The thread priority control.
Definition: priority.h:70
void _Scheduler_EDF_SMP_Initialize(const Scheduler_Control *scheduler)
Initializes the context of the scheduler control.
Definition: scheduleredfsmp.c:61
bool _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.
Definition: scheduleredfsmp.c:719
void _Scheduler_EDF_SMP_Unblock(const Scheduler_Control *scheduler, Thread_Control *thread, Scheduler_Node *node)
Unblocks the thread.
Definition: scheduleredfsmp.c:476
Data Related to the Manipulation of Threads for the EDF Scheduler.
void _Scheduler_EDF_SMP_Update_priority(const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node)
Updates the priority of the node.
Definition: scheduleredfsmp.c:512
void _Scheduler_EDF_SMP_Pin(const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node, struct Per_CPU_Control *cpu)
Pin thread operation.
Definition: scheduleredfsmp.c:675
Definition: scheduleredfsmp.h:38
Per CPU Core Structure.
Definition: percpu.h:347
void _Scheduler_EDF_SMP_Block(const Scheduler_Control *scheduler, Thread_Control *thread, Scheduler_Node *node)
Blocks the thread.
Definition: scheduleredfsmp.c:417
Scheduler node specialization for SMP schedulers.
Definition: schedulersmp.h:100
void _Scheduler_EDF_SMP_Yield(const Scheduler_Control *scheduler, Thread_Control *thread, Scheduler_Node *node)
Performs the yield of a thread.
Definition: scheduleredfsmp.c:625
Definition: scheduleredfsmp.h:68
int64_t generation
Generation number to ensure FIFO/LIFO order for threads of the same priority across different ready q...
Definition: scheduleredfsmp.h:45
Scheduler_EDF_SMP_Node * scheduled
The scheduled thread of the corresponding processor.
Definition: scheduleredfsmp.h:82
RBTree_Control Queue
The ready threads of the corresponding affinity.
Definition: scheduleredfsmp.h:77
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.
Definition: scheduleredfsmp.c:559
void _Scheduler_EDF_SMP_Add_processor(const Scheduler_Control *scheduler, Thread_Control *idle)
Adds processor.
Definition: scheduleredfsmp.c:594
Scheduler control.
Definition: scheduler.h:269
Scheduler node for per-thread data.
Definition: schedulernode.h:79
void _Scheduler_EDF_SMP_Unpin(const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node, struct Per_CPU_Control *cpu)
Unpin thread operation.
Definition: scheduleredfsmp.c:698
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.
Definition: scheduleredfsmp.c:71
Chain_Node Node
Chain node for Scheduler_SMP_Context::Affine_queues.
Definition: scheduleredfsmp.h:72
Thread_Control * _Scheduler_EDF_SMP_Remove_processor(const Scheduler_Control *scheduler, struct Per_CPU_Control *cpu)
Removes an idle thread from the given cpu.
Definition: scheduleredfsmp.c:610
void _Scheduler_EDF_SMP_Reconsider_help_request(const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node)
Reconsiders help operation.
Definition: scheduleredfsmp.c:543
Constants and Structures Associated with the Scheduler.
void _Scheduler_EDF_SMP_Start_idle(const Scheduler_Control *scheduler, Thread_Control *idle, struct Per_CPU_Control *cpu)
Starts an idle thread.
Definition: scheduleredfsmp.c:657
uint8_t affinity_ready_queue_index
Ready queue index according to thread affinity.
Definition: scheduleredfsmp.h:60
bool _Scheduler_EDF_SMP_Ask_for_help(const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node)
Asks for help operation.
Definition: scheduleredfsmp.c:532