RTEMS
Functions

EDF SMP Scheduler Implementation. More...

#include <rtems/score/scheduleredfsmp.h>
#include <rtems/score/schedulersmpimpl.h>

Go to the source code of this file.

Functions

static Scheduler_EDF_SMP_Context_Scheduler_EDF_SMP_Get_context (const Scheduler_Control *scheduler)
 
static Scheduler_EDF_SMP_Context_Scheduler_EDF_SMP_Get_self (Scheduler_Context *context)
 
static Scheduler_EDF_SMP_Node_Scheduler_EDF_SMP_Node_downcast (Scheduler_Node *node)
 
static bool _Scheduler_EDF_SMP_Priority_less_equal (const void *left, const RBTree_Node *right)
 
void _Scheduler_EDF_SMP_Initialize (const Scheduler_Control *scheduler)
 Initializes the context of the scheduler control. More...
 
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. More...
 
static void _Scheduler_EDF_SMP_Do_update (Scheduler_Context *context, Scheduler_Node *node, Priority_Control new_priority)
 
static bool _Scheduler_EDF_SMP_Has_ready (Scheduler_Context *context)
 
static bool _Scheduler_EDF_SMP_Overall_less (const Scheduler_EDF_SMP_Node *left, const Scheduler_EDF_SMP_Node *right)
 
static Scheduler_EDF_SMP_Node_Scheduler_EDF_SMP_Challenge_highest_ready (Scheduler_EDF_SMP_Context *self, Scheduler_EDF_SMP_Node *highest_ready, RBTree_Control *ready_queue)
 
static Scheduler_Node_Scheduler_EDF_SMP_Get_highest_ready (Scheduler_Context *context, Scheduler_Node *filter)
 
static void _Scheduler_EDF_SMP_Set_scheduled (Scheduler_EDF_SMP_Context *self, Scheduler_EDF_SMP_Node *scheduled, const Per_CPU_Control *cpu)
 
static Scheduler_EDF_SMP_Node_Scheduler_EDF_SMP_Get_scheduled (const Scheduler_EDF_SMP_Context *self, uint8_t rqi)
 
static Scheduler_Node_Scheduler_EDF_SMP_Get_lowest_scheduled (Scheduler_Context *context, Scheduler_Node *filter_base)
 
static void _Scheduler_EDF_SMP_Insert_ready (Scheduler_Context *context, Scheduler_Node *node_base, Priority_Control insert_priority)
 
static void _Scheduler_EDF_SMP_Extract_from_scheduled (Scheduler_Context *context, Scheduler_Node *node_to_extract)
 
static void _Scheduler_EDF_SMP_Extract_from_ready (Scheduler_Context *context, Scheduler_Node *node_to_extract)
 
static void _Scheduler_EDF_SMP_Move_from_scheduled_to_ready (Scheduler_Context *context, Scheduler_Node *scheduled_to_ready)
 
static void _Scheduler_EDF_SMP_Move_from_ready_to_scheduled (Scheduler_Context *context, Scheduler_Node *ready_to_scheduled)
 
static void _Scheduler_EDF_SMP_Allocate_processor (Scheduler_Context *context, Scheduler_Node *scheduled_base, Scheduler_Node *victim_base, Per_CPU_Control *victim_cpu)
 
void _Scheduler_EDF_SMP_Block (const Scheduler_Control *scheduler, Thread_Control *thread, Scheduler_Node *node)
 Blocks the thread. More...
 
static bool _Scheduler_EDF_SMP_Enqueue (Scheduler_Context *context, Scheduler_Node *node, Priority_Control insert_priority)
 
static bool _Scheduler_EDF_SMP_Enqueue_scheduled (Scheduler_Context *context, Scheduler_Node *node, Priority_Control insert_priority)
 
void _Scheduler_EDF_SMP_Unblock (const Scheduler_Control *scheduler, Thread_Control *thread, Scheduler_Node *node)
 Unblocks the thread. More...
 
static bool _Scheduler_EDF_SMP_Do_ask_for_help (Scheduler_Context *context, Thread_Control *the_thread, Scheduler_Node *node)
 
void _Scheduler_EDF_SMP_Update_priority (const Scheduler_Control *scheduler, Thread_Control *thread, Scheduler_Node *node)
 Updates the priority of the node. More...
 
bool _Scheduler_EDF_SMP_Ask_for_help (const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node)
 Asks for help operation. More...
 
void _Scheduler_EDF_SMP_Reconsider_help_request (const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node)
 Reconsiders help operation. More...
 
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. More...
 
static void _Scheduler_EDF_SMP_Register_idle (Scheduler_Context *context, Scheduler_Node *idle_base, Per_CPU_Control *cpu)
 
void _Scheduler_EDF_SMP_Add_processor (const Scheduler_Control *scheduler, Thread_Control *idle)
 Adds processor. More...
 
Thread_Control_Scheduler_EDF_SMP_Remove_processor (const Scheduler_Control *scheduler, Per_CPU_Control *cpu)
 Removes an idle thread from the given cpu. More...
 
void _Scheduler_EDF_SMP_Yield (const Scheduler_Control *scheduler, Thread_Control *thread, Scheduler_Node *node)
 Performs the yield of a thread. More...
 
static void _Scheduler_EDF_SMP_Do_set_affinity (Scheduler_Context *context, Scheduler_Node *node_base, void *arg)
 
void _Scheduler_EDF_SMP_Start_idle (const Scheduler_Control *scheduler, Thread_Control *idle, Per_CPU_Control *cpu)
 Starts an idle thread. More...
 
void _Scheduler_EDF_SMP_Pin (const Scheduler_Control *scheduler, Thread_Control *thread, Scheduler_Node *node_base, struct Per_CPU_Control *cpu)
 Pin thread operation. More...
 
void _Scheduler_EDF_SMP_Unpin (const Scheduler_Control *scheduler, Thread_Control *thread, Scheduler_Node *node_base, struct Per_CPU_Control *cpu)
 Unpin thread operation. More...
 
bool _Scheduler_EDF_SMP_Set_affinity (const Scheduler_Control *scheduler, Thread_Control *thread, Scheduler_Node *node_base, const Processor_mask *affinity)
 Checks if the processor set of the scheduler is the subset of the affinity set. More...
 

Detailed Description

EDF SMP Scheduler Implementation.

Definition in file scheduleredfsmp.c.