39#ifndef _RTEMS_SCORE_SCHEDULEREDF_H
40#define _RTEMS_SCORE_SCHEDULEREDF_H
68#define SCHEDULER_EDF_MAXIMUM_PRIORITY INT_MAX
73#define SCHEDULER_EDF_ENTRY_POINTS \
75 _Scheduler_EDF_Initialize, \
76 _Scheduler_EDF_Schedule, \
77 _Scheduler_EDF_Yield, \
78 _Scheduler_EDF_Block, \
79 _Scheduler_EDF_Unblock, \
80 _Scheduler_EDF_Update_priority, \
81 _Scheduler_EDF_Map_priority, \
82 _Scheduler_EDF_Unmap_priority, \
83 SCHEDULER_DEFAULT_SMP_OPERATIONS \
84 _Scheduler_EDF_Node_initialize, \
85 _Scheduler_default_Node_destroy, \
86 _Scheduler_EDF_Release_job, \
87 _Scheduler_EDF_Cancel_job, \
88 _Scheduler_default_Start_idle \
89 SCHEDULER_DEFAULT_SET_AFFINITY_OPERATION \
uint64_t Priority_Control
The thread priority control.
Definition: priority.h:91
void _Scheduler_EDF_Unblock(const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node)
Performs an unblocking of the thread.
Definition: scheduleredfunblock.c:46
void _Scheduler_EDF_Yield(const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node)
Executes a thread yield for the thread.
Definition: scheduleredfyield.c:44
void _Scheduler_EDF_Node_initialize(const Scheduler_Control *scheduler, Scheduler_Node *node, Thread_Control *the_thread, Priority_Control priority)
Initializes an EDF specific scheduler node of the_thread.
Definition: scheduleredfnodeinit.c:44
void _Scheduler_EDF_Cancel_job(const Scheduler_Control *scheduler, Thread_Control *the_thread, Priority_Node *priority_node, Thread_queue_Context *queue_context)
Cancels a job and removes the thread from the queue context.
Definition: scheduleredfreleasejob.c:98
void _Scheduler_EDF_Initialize(const Scheduler_Control *scheduler)
Initializes EDF scheduler.
Definition: scheduleredf.c:44
void _Scheduler_EDF_Release_job(const Scheduler_Control *scheduler, Thread_Control *the_thread, Priority_Node *priority_node, uint64_t deadline, Thread_queue_Context *queue_context)
Releases a EDF job.
Definition: scheduleredfreleasejob.c:61
void _Scheduler_EDF_Block(const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node)
Removes the blocking thread from the ready queue and schedules is only again if the thread is executi...
Definition: scheduleredfblock.c:44
Priority_Control _Scheduler_EDF_Map_priority(const Scheduler_Control *scheduler, Priority_Control priority)
Gets the mapped priority map of the priority control.
Definition: scheduleredfreleasejob.c:45
Priority_Control _Scheduler_EDF_Unmap_priority(const Scheduler_Control *scheduler, Priority_Control priority)
Gets the unmapped priority map of the priority control.
Definition: scheduleredfreleasejob.c:53
void _Scheduler_EDF_Update_priority(const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node)
Updates the priority of the scheduler node.
Definition: scheduleredfchangepriority.c:44
void _Scheduler_EDF_Schedule(const Scheduler_Control *scheduler, Thread_Control *the_thread)
Sets the heir thread to be the next ready thread in the rbtree ready queue.
Definition: scheduleredfschedule.c:44
This header file provides interfaces of the Priority Handler which are used by the implementation and...
This header file provides interfaces of the Red-Black Tree Handler which are used by the implementati...
This header file provides interfaces of the Deterministic Priority Scheduler which are used by the im...
This header file provides interfaces of the Scheduler Handler which are used by the implementation an...
The priority node to build up a priority aggregation.
Definition: priority.h:112
Red-black tree node.
Definition: rbtree.h:73
Scheduler context.
Definition: scheduler.h:318
Definition: scheduleredf.h:92
Scheduler_Context Base
Basic scheduler context.
Definition: scheduleredf.h:96
RBTree_Control Ready
Definition: scheduleredf.h:101
Scheduler node specialization for EDF schedulers.
Definition: scheduleredf.h:107
Priority_Control priority
The thread priority currently used for this scheduler instance.
Definition: scheduleredf.h:121
RBTree_Node Node
Definition: scheduleredf.h:116
Scheduler_Node Base
Basic scheduler node.
Definition: scheduleredf.h:111
Scheduler node for per-thread data.
Definition: schedulernode.h:94
Thread queue context for the thread queue methods.
Definition: threadq.h:216
Scheduler control.
Definition: scheduler.h:337