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 \
142 const Scheduler_Control *scheduler,
143 Thread_Control *the_thread,
158 const Scheduler_Control *scheduler,
159 Thread_Control *the_thread
171 const Scheduler_Control *scheduler,
173 Thread_Control *the_thread,
185 const Scheduler_Control *scheduler,
186 Thread_Control *the_thread,
198 const Scheduler_Control *scheduler,
199 Thread_Control *the_thread,
212 const Scheduler_Control *scheduler,
225 const Scheduler_Control *scheduler,
237 const Scheduler_Control *scheduler,
238 Thread_Control *the_thread,
252 const Scheduler_Control *scheduler,
253 Thread_Control *the_thread,
268 const Scheduler_Control *scheduler,
269 Thread_Control *the_thread,
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