RTEMS 6.3
Loading...
Searching...
No Matches
Deterministic Priority Scheduler

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

Files

file  cpukit/include/rtems/score/schedulerpriority.h
 This header file provides interfaces of the Deterministic Priority Scheduler which are used by the implementation and the Application Configuration.
file  cpukit/include/rtems/score/schedulerpriorityimpl.h
 This header file provides interfaces of the Deterministic Priority Scheduler which are only used by the implementation.
file  cpukit/score/src/schedulerpriority.c
 This source file contains the implementation of _Scheduler_priority_Initialize() and _Scheduler_priority_Node_initialize().
file  cpukit/score/src/schedulerpriorityblock.c
 This source file contains the implementation of _Scheduler_priority_Block().
file  cpukit/score/src/schedulerprioritychangepriority.c
 This source file contains the implementation of _Scheduler_priority_Update_priority().
file  cpukit/score/src/schedulerpriorityschedule.c
 This source file contains the implementation of _Scheduler_priority_Schedule().
file  cpukit/score/src/schedulerpriorityunblock.c
 This source file contains the implementation of _Scheduler_priority_Unblock().
file  cpukit/score/src/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_DEFAULT_SMP_OPERATIONS \
_Scheduler_priority_Node_initialize, \
_Scheduler_default_Start_idle \
SCHEDULER_DEFAULT_SET_AFFINITY_OPERATION \
}
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
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

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.