Scheduler Strong APA  Release
Functions
schedulerstrongapa.c File Reference

Strong APA Scheduler Implementation. More...

#include <rtems/score/schedulerstrongapa.h>
#include <rtems/score/schedulersmpimpl.h>
#include <rtems/score/assert.h>
Include dependency graph for schedulerstrongapa.c:

Go to the source code of this file.

Functions

static Scheduler_strong_APA_Context_Scheduler_strong_APA_Get_context (const Scheduler_Control *scheduler)
 
static Scheduler_strong_APA_Context_Scheduler_strong_APA_Get_self (Scheduler_Context *context)
 
static Scheduler_strong_APA_Node_Scheduler_strong_APA_Node_downcast (Scheduler_Node *node)
 
static void _Scheduler_strong_APA_Do_update (Scheduler_Context *context, Scheduler_Node *node, Priority_Control new_priority)
 
static bool _Scheduler_strong_APA_Has_ready (Scheduler_Context *context)
 
static void _Scheduler_strong_APA_Set_scheduled (Scheduler_strong_APA_Context *self, Scheduler_Node *executing, const Per_CPU_Control *cpu)
 
static Scheduler_Node * _Scheduler_strong_APA_Get_scheduled (const Scheduler_strong_APA_Context *self, const Per_CPU_Control *cpu)
 
static void _Scheduler_strong_APA_Allocate_processor (Scheduler_Context *context, Scheduler_Node *scheduled_base, Scheduler_Node *victim_base, Per_CPU_Control *victim_cpu)
 
static Scheduler_Node * _Scheduler_strong_APA_Find_highest_ready (Scheduler_strong_APA_Context *self, uint32_t front, uint32_t rear)
 
static void _Scheduler_strong_APA_Move_from_ready_to_scheduled (Scheduler_Context *context, Scheduler_Node *ready_to_scheduled)
 
static Scheduler_Node * _Scheduler_strong_APA_Get_highest_ready (Scheduler_Context *context, Scheduler_Node *filter)
 
static Scheduler_Node * _Scheduler_strong_APA_Get_lowest_scheduled (Scheduler_Context *context, Scheduler_Node *filter_base)
 
static void _Scheduler_strong_APA_Extract_from_scheduled (Scheduler_Context *context, Scheduler_Node *node_to_extract)
 
static void _Scheduler_strong_APA_Extract_from_ready (Scheduler_Context *context, Scheduler_Node *node_to_extract)
 
static void _Scheduler_strong_APA_Insert_ready (Scheduler_Context *context, Scheduler_Node *node_base, Priority_Control insert_priority)
 
static void _Scheduler_strong_APA_Move_from_scheduled_to_ready (Scheduler_Context *context, Scheduler_Node *scheduled_to_ready)
 
static Scheduler_Node * _Scheduler_strong_APA_Get_lowest_reachable (Scheduler_strong_APA_Context *self, uint32_t front, uint32_t rear, Per_CPU_Control **cpu_to_preempt)
 
static bool _Scheduler_strong_APA_Do_enqueue (Scheduler_Context *context, Scheduler_Node *lowest_reachable, Scheduler_Node *node, Priority_Control insert_priority, Per_CPU_Control *cpu_to_preempt)
 
static bool _Scheduler_strong_APA_Enqueue (Scheduler_Context *context, Scheduler_Node *node, Priority_Control insert_priority)
 
static bool _Scheduler_strong_APA_Enqueue_scheduled (Scheduler_Context *context, Scheduler_Node *node, Priority_Control insert_priority)
 
static bool _Scheduler_strong_APA_Do_ask_for_help (Scheduler_Context *context, Thread_Control *the_thread, Scheduler_Node *node)
 
static void _Scheduler_strong_APA_Do_set_affinity (Scheduler_Context *context, Scheduler_Node *node_base, void *arg)
 
void _Scheduler_strong_APA_Initialize (const Scheduler_Control *scheduler)
 Initializes the scheduler. More...
 
void _Scheduler_strong_APA_Yield (const Scheduler_Control *scheduler, Thread_Control *thread, Scheduler_Node *node)
 Performs a yield operation. More...
 
void _Scheduler_strong_APA_Block (const Scheduler_Control *scheduler, Thread_Control *thread, Scheduler_Node *node)
 Blocks the thread. More...
 
void _Scheduler_strong_APA_Unblock (const Scheduler_Control *scheduler, Thread_Control *thread, Scheduler_Node *node)
 Unblocks the thread. More...
 
void _Scheduler_strong_APA_Update_priority (const Scheduler_Control *scheduler, Thread_Control *thread, Scheduler_Node *node)
 Updates the priority of the node. More...
 
bool _Scheduler_strong_APA_Ask_for_help (const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node)
 Asks for help. More...
 
void _Scheduler_strong_APA_Reconsider_help_request (const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node)
 Reconsiders help request. More...
 
void _Scheduler_strong_APA_Withdraw_node (const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node, Thread_Scheduler_state next_state)
 Withdraws the node. More...
 
static void _Scheduler_strong_APA_Register_idle (Scheduler_Context *context, Scheduler_Node *idle_base, Per_CPU_Control *cpu)
 
void _Scheduler_strong_APA_Add_processor (const Scheduler_Control *scheduler, Thread_Control *idle)
 Adds the idle thread to a processor. More...
 
void _Scheduler_strong_APA_Start_idle (const Scheduler_Control *scheduler, Thread_Control *idle, Per_CPU_Control *cpu)
 Starts an idle thread. More...
 
Thread_Control * _Scheduler_strong_APA_Remove_processor (const Scheduler_Control *scheduler, Per_CPU_Control *cpu)
 Removes an idle thread from the given cpu. More...
 
void _Scheduler_strong_APA_Node_initialize (const Scheduler_Control *scheduler, Scheduler_Node *node, Thread_Control *the_thread, Priority_Control priority)
 Initializes the node with the given priority. More...
 
bool _Scheduler_strong_APA_Set_affinity (const Scheduler_Control *scheduler, Thread_Control *thread, Scheduler_Node *node_base, const Processor_mask *affinity)
 Sets the affinity . More...
 

Detailed Description

Strong APA Scheduler Implementation.

Definition in file schedulerstrongapa.c.

Function Documentation

◆ _Scheduler_strong_APA_Allocate_processor()

static void _Scheduler_strong_APA_Allocate_processor ( Scheduler_Context *  context,
Scheduler_Node *  scheduled_base,
Scheduler_Node *  victim_base,
Per_CPU_Control *  victim_cpu 
)
inlinestatic

Definition at line 124 of file schedulerstrongapa.c.

◆ _Scheduler_strong_APA_Do_ask_for_help()

static bool _Scheduler_strong_APA_Do_ask_for_help ( Scheduler_Context *  context,
Thread_Control *  the_thread,
Scheduler_Node *  node 
)
inlinestatic

Definition at line 701 of file schedulerstrongapa.c.

◆ _Scheduler_strong_APA_Do_enqueue()

static bool _Scheduler_strong_APA_Do_enqueue ( Scheduler_Context *  context,
Scheduler_Node *  lowest_reachable,
Scheduler_Node *  node,
Priority_Control  insert_priority,
Per_CPU_Control *  cpu_to_preempt 
)
inlinestatic

Definition at line 519 of file schedulerstrongapa.c.

◆ _Scheduler_strong_APA_Do_set_affinity()

static void _Scheduler_strong_APA_Do_set_affinity ( Scheduler_Context *  context,
Scheduler_Node *  node_base,
void *  arg 
)
inlinestatic

Definition at line 720 of file schedulerstrongapa.c.

◆ _Scheduler_strong_APA_Do_update()

static void _Scheduler_strong_APA_Do_update ( Scheduler_Context *  context,
Scheduler_Node *  node,
Priority_Control  new_priority 
)
inlinestatic

Definition at line 62 of file schedulerstrongapa.c.

◆ _Scheduler_strong_APA_Enqueue()

static bool _Scheduler_strong_APA_Enqueue ( Scheduler_Context *  context,
Scheduler_Node *  node,
Priority_Control  insert_priority 
)
inlinestatic

Definition at line 617 of file schedulerstrongapa.c.

◆ _Scheduler_strong_APA_Enqueue_scheduled()

static bool _Scheduler_strong_APA_Enqueue_scheduled ( Scheduler_Context *  context,
Scheduler_Node *  node,
Priority_Control  insert_priority 
)
inlinestatic

Definition at line 681 of file schedulerstrongapa.c.

◆ _Scheduler_strong_APA_Extract_from_ready()

static void _Scheduler_strong_APA_Extract_from_ready ( Scheduler_Context *  context,
Scheduler_Node *  node_to_extract 
)
inlinestatic

Definition at line 405 of file schedulerstrongapa.c.

◆ _Scheduler_strong_APA_Extract_from_scheduled()

static void _Scheduler_strong_APA_Extract_from_scheduled ( Scheduler_Context *  context,
Scheduler_Node *  node_to_extract 
)
inlinestatic

Definition at line 390 of file schedulerstrongapa.c.

◆ _Scheduler_strong_APA_Find_highest_ready()

static Scheduler_Node* _Scheduler_strong_APA_Find_highest_ready ( Scheduler_strong_APA_Context self,
uint32_t  front,
uint32_t  rear 
)
inlinestatic

Definition at line 153 of file schedulerstrongapa.c.

◆ _Scheduler_strong_APA_Get_context()

static Scheduler_strong_APA_Context* _Scheduler_strong_APA_Get_context ( const Scheduler_Control *  scheduler)
inlinestatic

Definition at line 45 of file schedulerstrongapa.c.

◆ _Scheduler_strong_APA_Get_highest_ready()

static Scheduler_Node* _Scheduler_strong_APA_Get_highest_ready ( Scheduler_Context *  context,
Scheduler_Node *  filter 
)
inlinestatic

Definition at line 262 of file schedulerstrongapa.c.

◆ _Scheduler_strong_APA_Get_lowest_reachable()

static Scheduler_Node* _Scheduler_strong_APA_Get_lowest_reachable ( Scheduler_strong_APA_Context self,
uint32_t  front,
uint32_t  rear,
Per_CPU_Control **  cpu_to_preempt 
)
inlinestatic

Definition at line 457 of file schedulerstrongapa.c.

◆ _Scheduler_strong_APA_Get_lowest_scheduled()

static Scheduler_Node* _Scheduler_strong_APA_Get_lowest_scheduled ( Scheduler_Context *  context,
Scheduler_Node *  filter_base 
)
inlinestatic

Definition at line 345 of file schedulerstrongapa.c.

◆ _Scheduler_strong_APA_Get_scheduled()

static Scheduler_Node* _Scheduler_strong_APA_Get_scheduled ( const Scheduler_strong_APA_Context self,
const Per_CPU_Control *  cpu 
)
inlinestatic

Definition at line 116 of file schedulerstrongapa.c.

◆ _Scheduler_strong_APA_Get_self()

static Scheduler_strong_APA_Context* _Scheduler_strong_APA_Get_self ( Scheduler_Context *  context)
inlinestatic

Definition at line 51 of file schedulerstrongapa.c.

◆ _Scheduler_strong_APA_Has_ready()

static bool _Scheduler_strong_APA_Has_ready ( Scheduler_Context *  context)
inlinestatic

Definition at line 80 of file schedulerstrongapa.c.

◆ _Scheduler_strong_APA_Insert_ready()

static void _Scheduler_strong_APA_Insert_ready ( Scheduler_Context *  context,
Scheduler_Node *  node_base,
Priority_Control  insert_priority 
)
inlinestatic

Definition at line 423 of file schedulerstrongapa.c.

◆ _Scheduler_strong_APA_Move_from_ready_to_scheduled()

static void _Scheduler_strong_APA_Move_from_ready_to_scheduled ( Scheduler_Context *  context,
Scheduler_Node *  ready_to_scheduled 
)
inlinestatic

Definition at line 240 of file schedulerstrongapa.c.

◆ _Scheduler_strong_APA_Move_from_scheduled_to_ready()

static void _Scheduler_strong_APA_Move_from_scheduled_to_ready ( Scheduler_Context *  context,
Scheduler_Node *  scheduled_to_ready 
)
inlinestatic

Definition at line 440 of file schedulerstrongapa.c.

◆ _Scheduler_strong_APA_Node_downcast()

static Scheduler_strong_APA_Node* _Scheduler_strong_APA_Node_downcast ( Scheduler_Node *  node)
inlinestatic

Definition at line 57 of file schedulerstrongapa.c.

◆ _Scheduler_strong_APA_Register_idle()

static void _Scheduler_strong_APA_Register_idle ( Scheduler_Context *  context,
Scheduler_Node *  idle_base,
Per_CPU_Control *  cpu 
)
inlinestatic

Definition at line 868 of file schedulerstrongapa.c.

◆ _Scheduler_strong_APA_Set_scheduled()

static void _Scheduler_strong_APA_Set_scheduled ( Scheduler_strong_APA_Context self,
Scheduler_Node *  executing,
const Per_CPU_Control *  cpu 
)
inlinestatic

Definition at line 107 of file schedulerstrongapa.c.