19 #ifndef _RTEMS_SCORE_SCHEDULEREDF_H 20 #define _RTEMS_SCORE_SCHEDULEREDF_H 41 #define SCHEDULER_EDF_ENTRY_POINTS \ 43 _Scheduler_EDF_Initialize, \ 44 _Scheduler_EDF_Schedule, \ 45 _Scheduler_EDF_Yield, \ 46 _Scheduler_EDF_Block, \ 47 _Scheduler_EDF_Unblock, \ 48 _Scheduler_EDF_Change_priority, \ 49 SCHEDULER_OPERATION_DEFAULT_ASK_FOR_HELP \ 50 _Scheduler_EDF_Node_initialize, \ 51 _Scheduler_default_Node_destroy, \ 52 _Scheduler_EDF_Update_priority, \ 53 _Scheduler_EDF_Priority_compare, \ 54 _Scheduler_EDF_Release_job, \ 55 _Scheduler_default_Tick, \ 56 _Scheduler_default_Start_idle \ 57 SCHEDULER_OPERATION_DEFAULT_GET_SET_AFFINITY \ 67 #define SCHEDULER_EDF_PRIO_MSB 0x80000000 88 SCHEDULER_EDF_QUEUE_STATE_NOT_PRESENTLY,
89 SCHEDULER_EDF_QUEUE_STATE_YES,
90 SCHEDULER_EDF_QUEUE_STATE_NEVER_HAS_BEEN
198 Scheduler_Void_or_thread _Scheduler_EDF_Change_priority(
Thread Priority Manipulation Routines.
void _Scheduler_EDF_Node_initialize(const Scheduler_Control *scheduler, Thread_Control *the_thread)
Initializes an EDF specific scheduler node of the_thread.
Definition: scheduleredfnodeinit.c:23
Scheduler control.
Definition: scheduler.h:192
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:23
Scheduler context.
Definition: scheduler.h:180
Scheduler node specialization for EDF schedulers.
Definition: scheduleredf.h:96
Thread Manipulation with the Priority-Based Scheduler.
Thread_Control * thread
Pointer to corresponding Thread Control Block.
Definition: scheduleredf.h:105
Scheduler_Context Base
Basic scheduler context.
Definition: scheduleredf.h:73
Scheduler_Void_or_thread _Scheduler_EDF_Yield(const Scheduler_Control *scheduler, Thread_Control *the_thread)
invoked when a thread wishes to voluntarily transfer control of the processor to another thread with ...
Definition: scheduleredfyield.c:24
uint32_t Priority_Control
The following type defines the control block used to manage thread priorities.
Definition: priority.h:56
Scheduler_EDF_Queue_state
This enumeration distiguishes state of a thread with respect to the ready queue.
Definition: scheduleredf.h:87
Constants and Structures Associated with the Red-Black Tree Handler.
This structure defines the Thread Control Block (TCB).
Definition: thread.h:671
void _Scheduler_EDF_Initialize(const Scheduler_Control *scheduler)
Initialize EDF scheduler.
Definition: scheduleredf.c:42
int _Scheduler_EDF_Priority_compare(Priority_Control p1, Priority_Control p2)
Explicitly compare absolute dedlines (priorities) of threads.
Definition: scheduleredfprioritycompare.c:27
Constants and Structures Associated with the Scheduler.
RBTree_Node Node
Rbtree node related to this thread.
Definition: scheduleredf.h:109
Scheduler_Node Base
Basic scheduler node.
Definition: scheduleredf.h:100
Scheduler_Void_or_thread _Scheduler_EDF_Unblock(const Scheduler_Control *scheduler, Thread_Control *the_thread)
Adds the_thread to the scheduling decision.
Definition: scheduleredfunblock.c:25
This is used to manage a RBT.
Definition: rbtree.h:138
Definition: scheduleredf.h:69
void _Scheduler_EDF_Release_job(const Scheduler_Control *scheduler, Thread_Control *the_thread, uint32_t deadline)
Called when a new job of task is released.
Definition: scheduleredfreleasejob.c:25
Scheduler node for per-thread data.
Definition: scheduler.h:281
RBTree_Control Ready
Top of the ready queue.
Definition: scheduleredf.h:78
Scheduler_EDF_Queue_state queue_state
State of the thread with respect to ready queue.
Definition: scheduleredf.h:113
void _Scheduler_EDF_Block(const Scheduler_Control *scheduler, Thread_Control *the_thread)
Removes thread from ready queue.
Definition: scheduleredfblock.c:24
This is used to manage each element (node) which is placed on a RBT.
Definition: rbtree.h:75
void _Scheduler_EDF_Update_priority(const Scheduler_Control *scheduler, Thread_Control *the_thread, Priority_Control new_priority)
Updates position in the ready queue of the_thread.
Definition: scheduleredfupdate.c:23