18 #ifndef _RTEMS_SCORE_SCHEDULEREDFIMPL_H 19 #define _RTEMS_SCORE_SCHEDULEREDFIMPL_H 41 #define SCHEDULER_EDF_PRIO_MSB 0x8000000000000000 106 prio_left = *the_left;
109 return prio_left < prio_right;
134 prio_left = *the_left;
137 return prio_left <= prio_right;
static __inline__ void _Scheduler_EDF_Schedule_body(const Scheduler_Control *scheduler, Thread_Control *the_thread, bool force_dispatch)
Schedules the next ready thread as the heir.
uint64_t Priority_Control
The thread priority control.
static __inline__ bool _RBTree_Insert_inline(RBTree_Control *the_rbtree, RBTree_Node *the_node, const void *key, bool(*less)(const void *, const RBTree_Node *))
Inserts the node into the red-black tree.
Scheduler node specialization for EDF schedulers.
Inlined Routines Associated with the Manipulation of the Scheduler.
Data Related to the Manipulation of Threads for the EDF Scheduler.
static __inline__ Scheduler_EDF_Context * _Scheduler_EDF_Get_context(const Scheduler_Control *scheduler)
Gets the context of the scheduler.
RBTree_Node * _RBTree_Minimum(const RBTree_Control *the_rbtree)
Returns the minimum node of the red-black tree.
static __inline__ void _Scheduler_Update_heir(Thread_Control *new_heir, bool force_dispatch)
Updates the heir.
#define RTEMS_CONTAINER_OF(_m, _type, _member_name)
Returns the pointer to the container of a specified member pointer.
static __inline__ void _Scheduler_EDF_Extract(Scheduler_EDF_Context *context, Scheduler_EDF_Node *node)
Extracts the scheduler node from the ready queue of the context.
static __inline__ void _Scheduler_EDF_Enqueue(Scheduler_EDF_Context *context, Scheduler_EDF_Node *node, Priority_Control insert_priority)
Inserts the scheduler node with the given priority in the ready queue of the context.
static __inline__ Scheduler_Node * _Thread_Scheduler_get_home_node(const Thread_Control *the_thread)
Gets the scheduler's home node.
struct _Thread_Control * owner
The thread owning this node.
static __inline__ Scheduler_EDF_Node * _Scheduler_EDF_Thread_get_node(Thread_Control *the_thread)
Gets the scheduler EDF node of the thread.
Priority_Control priority
The thread priority currently used for this scheduler instance.
Scheduler_Node Base
Basic scheduler node.
static __inline__ void _Scheduler_EDF_Extract_body(const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node)
Extracts the node from the context of the given scheduler.
Scheduler node for per-thread data.
static __inline__ Scheduler_Context * _Scheduler_Get_context(const Scheduler_Control *scheduler)
Gets the context of the scheduler.
void _RBTree_Extract(RBTree_Control *the_rbtree, RBTree_Node *the_node)
Extracts (removes) the node from the red-black tree.
static __inline__ bool _Scheduler_EDF_Priority_less_equal(const void *left, const RBTree_Node *right)
Checks if left is less or equal than the priority of the node right.
static __inline__ Scheduler_EDF_Node * _Scheduler_EDF_Node_downcast(Scheduler_Node *node)
Returns the scheduler EDF node for the scheduler node.
static __inline__ bool _Scheduler_EDF_Less(const void *left, const RBTree_Node *right)
Checks if left is less than the priority of the node right.
#define RTEMS_INLINE_ROUTINE
Gives a hint to the compiler in a function declaration to inline this function.