39#ifndef _RTEMS_SCORE_SCHEDULER_H
40#define _RTEMS_SCORE_SCHEDULER_H
91 void ( *update_priority )(
109#if defined(RTEMS_SMP)
120 bool ( *ask_for_help )(
134 void ( *reconsider_help_request )(
149 void ( *withdraw_node )(
153 Thread_Scheduler_state next_state
181 void ( *make_sticky )(
205 void ( *clean_sticky )(
247 void ( *add_processor )(
267 void ( *node_initialize )(
278 void ( *release_job ) (
287 void ( *cancel_job ) (
295 void ( *start_idle )(
301#if defined(RTEMS_SMP)
307 const Processor_mask *
319#if defined(RTEMS_SMP)
328 Processor_mask Processors;
359#if defined(RTEMS_SMP)
364 bool is_non_preempt_mode_supported;
390#if defined(RTEMS_SMP)
393 #define _Scheduler_Count ( (size_t) 1 )
396#if defined(RTEMS_SMP)
400 #define SCHEDULER_ASSIGN_DEFAULT UINT32_C(0x0)
405 #define SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL SCHEDULER_ASSIGN_DEFAULT
410 #define SCHEDULER_ASSIGN_PROCESSOR_MANDATORY UINT32_C(0x1)
431 } Scheduler_Assignment;
442 extern const Scheduler_Assignment _Scheduler_Initial_assignments[];
473#if defined(RTEMS_SMP)
486 void _Scheduler_default_Sticky_do_nothing(
503 void _Scheduler_default_Pin_or_unpin_do_nothing(
522 void _Scheduler_default_Pin_or_unpin_not_supported(
549#if defined(RTEMS_SMP)
550 #define SCHEDULER_DEFAULT_SMP_OPERATIONS \
554 _Scheduler_default_Sticky_do_nothing, \
555 _Scheduler_default_Sticky_do_nothing, \
556 _Scheduler_default_Pin_or_unpin_do_nothing, \
557 _Scheduler_default_Pin_or_unpin_do_nothing, \
561 #define SCHEDULER_DEFAULT_SMP_OPERATIONS
650#if defined(RTEMS_SMP)
671 const Processor_mask *affinity
685#if defined(RTEMS_SMP)
686 #define SCHEDULER_DEFAULT_SET_AFFINITY_OPERATION \
687 , _Scheduler_default_Set_affinity
689 #define SCHEDULER_DEFAULT_SET_AFFINITY_OPERATION
696#define PRIORITY_MAXIMUM ( _Scheduler_Table[ 0 ].maximum_priority )
uint64_t Priority_Control
The thread priority control.
Definition: priority.h:91
struct Scheduler_Context Scheduler_Context
Scheduler context.
#define _Scheduler_Count
This constant contains the count of configured schedulers.
Definition: scheduler.h:393
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
const Scheduler_Control _Scheduler_Table[]
This table contains the configured schedulers.
void _Scheduler_default_Node_initialize(const Scheduler_Control *scheduler, Scheduler_Node *node, Thread_Control *the_thread, Priority_Control priority)
Performs the scheduler base node initialization.
Definition: schedulerdefaultnodeinit.c:44
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
void _Scheduler_default_Schedule(const Scheduler_Control *scheduler, Thread_Control *the_thread)
Does nothing.
Definition: schedulerdefaultschedule.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
void _Scheduler_default_Start_idle(const Scheduler_Control *scheduler, Thread_Control *the_thread, struct Per_CPU_Control *cpu)
Starts an idle thread.
Definition: schedulerdefaultstartidle.c:43
Status_Control
Status codes.
Definition: status.h:111
This header file provides the interfaces of the Operation Status Support.
This header file provides interfaces of the Thread Handler which are used by the implementation and t...
ISR lock control.
Definition: isrlock.h:72
Per CPU Core Structure.
Definition: percpu.h:384
The priority node to build up a priority aggregation.
Definition: priority.h:112
Scheduler context.
Definition: scheduler.h:318
Scheduler node for per-thread data.
Definition: schedulernode.h:94
The scheduler operations.
Definition: scheduler.h:62
Thread queue context for the thread queue methods.
Definition: threadq.h:216
Scheduler control.
Definition: scheduler.h:335
Scheduler_Context * context
Reference to a statically allocated scheduler context.
Definition: scheduler.h:339
uint32_t name
The scheduler name.
Definition: scheduler.h:357
Scheduler_Operations Operations
The scheduler operations.
Definition: scheduler.h:344
Priority_Control maximum_priority
The maximum priority value of this scheduler.
Definition: scheduler.h:352