RTEMS 6.1-rc7
Loading...
Searching...
No Matches
Files | Data Structures | Macros | Functions
Deterministic Priority Scheduler

This group contains the Deterministic Priority Scheduler implementation. More...

Files

file  schedulerpriority.h
 This header file provides interfaces of the Deterministic Priority Scheduler which are used by the implementation and the Application Configuration.
 
file  schedulerpriorityimpl.h
 This header file provides interfaces of the Deterministic Priority Scheduler which are only used by the implementation.
 
file  schedulerpriority.c
 This source file contains the implementation of _Scheduler_priority_Initialize() and _Scheduler_priority_Node_initialize().
 
file  schedulerpriorityblock.c
 This source file contains the implementation of _Scheduler_priority_Block().
 
file  schedulerprioritychangepriority.c
 This source file contains the implementation of _Scheduler_priority_Update_priority().
 
file  schedulerpriorityschedule.c
 This source file contains the implementation of _Scheduler_priority_Schedule().
 
file  schedulerpriorityunblock.c
 This source file contains the implementation of _Scheduler_priority_Unblock().
 
file  schedulerpriorityyield.c
 This source file contains the implementation of _Scheduler_priority_Yield().
 

Data Structures

struct  Scheduler_priority_Context
 
struct  Scheduler_priority_Ready_queue
 Data for ready queue operations. More...
 
struct  Scheduler_priority_Node
 Scheduler node specialization for Deterministic Priority schedulers. More...
 

Macros

#define SCHEDULER_PRIORITY_ENTRY_POINTS
 

Functions

void _Scheduler_priority_Initialize (const Scheduler_Control *scheduler)
 Initializes the priority scheduler.
 
void _Scheduler_priority_Block (const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node)
 Blocks the thread.
 
void _Scheduler_priority_Schedule (const Scheduler_Control *scheduler, Thread_Control *the_thread)
 Sets the heir thread to be the next ready thread.
 
void _Scheduler_priority_Unblock (const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node)
 Unblocks the thread.
 
void _Scheduler_priority_Update_priority (const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *base_node)
 Updates the priority of the node.
 
void _Scheduler_priority_Node_initialize (const Scheduler_Control *scheduler, Scheduler_Node *node, Thread_Control *the_thread, Priority_Control priority)
 Initializes the node with the given priority.
 
void _Scheduler_priority_Yield (const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node)
 Performs the yield of a thread.
 

Detailed Description

This group contains the Deterministic Priority Scheduler implementation.

Macro Definition Documentation

◆ SCHEDULER_PRIORITY_ENTRY_POINTS

#define SCHEDULER_PRIORITY_ENTRY_POINTS
Value:
{ \
_Scheduler_priority_Initialize, /* initialize entry point */ \
_Scheduler_priority_Schedule, /* schedule entry point */ \
_Scheduler_priority_Yield, /* yield entry point */ \
_Scheduler_priority_Block, /* block entry point */ \
_Scheduler_priority_Unblock, /* unblock entry point */ \
_Scheduler_priority_Update_priority, /* update priority entry point */ \
_Scheduler_default_Map_priority, /* map priority entry point */ \
_Scheduler_default_Unmap_priority, /* unmap priority entry point */ \
SCHEDULER_DEFAULT_SMP_OPERATIONS \
_Scheduler_priority_Node_initialize, /* node initialize entry point */ \
_Scheduler_default_Node_destroy, /* node destroy entry point */ \
_Scheduler_default_Release_job, /* new period of task */ \
_Scheduler_default_Cancel_job, /* cancel period of task */ \
_Scheduler_default_Start_idle /* start idle entry point */ \
}
void _Scheduler_priority_Block(const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node)
Blocks the thread.
Definition: schedulerpriorityblock.c:46
void _Scheduler_priority_Unblock(const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node)
Unblocks the thread.
Definition: schedulerpriorityunblock.c:46
void _Scheduler_priority_Yield(const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node)
Performs the yield of a thread.
Definition: schedulerpriorityyield.c:45
void _Scheduler_priority_Schedule(const Scheduler_Control *scheduler, Thread_Control *the_thread)
Sets the heir thread to be the next ready thread.
Definition: schedulerpriorityschedule.c:44
void _Scheduler_priority_Initialize(const Scheduler_Control *scheduler)
Initializes the priority scheduler.
Definition: schedulerpriority.c:45
void _Scheduler_priority_Update_priority(const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *base_node)
Updates the priority of the node.
Definition: schedulerprioritychangepriority.c:44
void _Scheduler_default_Release_job(const Scheduler_Control *scheduler, Thread_Control *the_thread, Priority_Node *priority_node, uint64_t deadline, Thread_queue_Context *queue_context)
Does nothing.
Definition: schedulerdefaultreleasejob.c:44
void _Scheduler_default_Node_destroy(const Scheduler_Control *scheduler, Scheduler_Node *node)
Does nothing.
Definition: schedulerdefaultnodedestroy.c:45
Priority_Control _Scheduler_default_Map_priority(const Scheduler_Control *scheduler, Priority_Control priority)
Returns the scheduler internal thread priority mapped by SCHEDULER_PRIORITY_MAP().
Definition: schedulerdefaultmappriority.c:43
#define SCHEDULER_DEFAULT_SET_AFFINITY_OPERATION
This define provides the default implementation for the SMP-specific set affinity operation.
Definition: scheduler.h:691
Priority_Control _Scheduler_default_Unmap_priority(const Scheduler_Control *scheduler, Priority_Control priority)
Returns the user visible thread priority unmapped by SCHEDULER_PRIORITY_UNMAP().
Definition: schedulerdefaultmappriority.c:51
void _Scheduler_default_Cancel_job(const Scheduler_Control *scheduler, Thread_Control *the_thread, Priority_Node *priority_node, Thread_queue_Context *queue_context)
Does nothing.
Definition: schedulerdefaultreleasejob.c:59
void _Scheduler_default_Start_idle(const Scheduler_Control *scheduler, Thread_Control *the_thread, struct Per_CPU_Control *cpu)
Starts an idle thread.
Definition: schedulerdefaultstartidle.c:43

Entry points for the Deterministic Priority Based Scheduler.

Function Documentation

◆ _Scheduler_priority_Block()

void _Scheduler_priority_Block ( const Scheduler_Control scheduler,
Thread_Control the_thread,
Scheduler_Node node 
)

Blocks the thread.

Parameters
schedulerThe scheduler instance.
[in,out]the_threadThe thread to block.
[in,out]nodeThe thread's scheduler node.

◆ _Scheduler_priority_Initialize()

void _Scheduler_priority_Initialize ( const Scheduler_Control scheduler)

Initializes the priority scheduler.

This routine initializes the priority scheduler.

Parameters
schedulerThe scheduler to initialize.

◆ _Scheduler_priority_Node_initialize()

void _Scheduler_priority_Node_initialize ( const Scheduler_Control scheduler,
Scheduler_Node node,
Thread_Control the_thread,
Priority_Control  priority 
)

Initializes the node with the given priority.

Parameters
schedulerThe scheduler instance.
[out]nodeThe node to initialize.
the_threadThe thread of the scheduler node.
priorityThe priority for the initialization.

◆ _Scheduler_priority_Schedule()

void _Scheduler_priority_Schedule ( const Scheduler_Control scheduler,
Thread_Control the_thread 
)

Sets the heir thread to be the next ready thread.

This kernel routine sets the heir thread to be the next ready thread by invoking the_scheduler->ready_queue->operations->first().

Parameters
schedulerThe scheduler instance.
the_threadThe thread for the operation.

◆ _Scheduler_priority_Unblock()

void _Scheduler_priority_Unblock ( const Scheduler_Control scheduler,
Thread_Control the_thread,
Scheduler_Node node 
)

Unblocks the thread.

Parameters
schedulerThe scheduler instance.
[in,out]the_threadThe thread to unblock.
[in,out]nodeThe thread's scheduler node.

◆ _Scheduler_priority_Update_priority()

void _Scheduler_priority_Update_priority ( const Scheduler_Control scheduler,
Thread_Control the_thread,
Scheduler_Node base_node 
)

Updates the priority of the node.

Parameters
schedulerThe scheduler instance.
the_threadThe thread for the operation.
base_nodeThe thread's scheduler node.

◆ _Scheduler_priority_Yield()

void _Scheduler_priority_Yield ( const Scheduler_Control scheduler,
Thread_Control the_thread,
Scheduler_Node node 
)

Performs the yield of a thread.

Parameters
schedulerThe scheduler instance.
[in,out]the_threadThe thread that performed the yield operation.
nodeThe scheduler node of the_thread.