21 #ifndef _RTEMS_SAPI_SCHEDULER_H 22 #define _RTEMS_SAPI_SCHEDULER_H 26 #define RTEMS_SCHEDULER_CONTEXT_NAME( name ) \ 27 _Configuration_Scheduler_ ## name 29 #if defined(RTEMS_SMP) 33 #define RTEMS_SCHEDULER_ASSIGN_DEFAULT \ 34 SCHEDULER_ASSIGN_DEFAULT 36 #define RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL \ 37 SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL 39 #define RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY \ 40 SCHEDULER_ASSIGN_PROCESSOR_MANDATORY 42 #define RTEMS_SCHEDULER_ASSIGN( index, attr ) \ 44 ( index ) < RTEMS_ARRAY_SIZE( _Scheduler_Table ) ? \ 45 &_Scheduler_Table[ ( index ) ] : &RTEMS_SCHEDULER_INVALID_INDEX, \ 49 #define RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER { NULL, 0 } 60 #ifdef CONFIGURE_SCHEDULER_CBS 63 #define RTEMS_SCHEDULER_CONTEXT_CBS_NAME( name ) \ 64 RTEMS_SCHEDULER_CONTEXT_NAME( CBS_ ## name ) 66 #define RTEMS_SCHEDULER_CONTEXT_CBS( name ) \ 67 static Scheduler_EDF_Context RTEMS_SCHEDULER_CONTEXT_CBS_NAME( name ) 69 #define RTEMS_SCHEDULER_CONTROL_CBS( name, obj_name ) \ 71 &RTEMS_SCHEDULER_CONTEXT_CBS_NAME( name ).Base, \ 72 SCHEDULER_CBS_ENTRY_POINTS, \ 77 #ifdef CONFIGURE_SCHEDULER_EDF 80 #define RTEMS_SCHEDULER_CONTEXT_EDF_NAME( name ) \ 81 RTEMS_SCHEDULER_CONTEXT_NAME( EDF_ ## name ) 83 #define RTEMS_SCHEDULER_CONTEXT_EDF( name ) \ 84 static Scheduler_EDF_Context RTEMS_SCHEDULER_CONTEXT_EDF_NAME( name ) 86 #define RTEMS_SCHEDULER_CONTROL_EDF( name, obj_name ) \ 88 &RTEMS_SCHEDULER_CONTEXT_EDF_NAME( name ).Base, \ 89 SCHEDULER_EDF_ENTRY_POINTS, \ 94 #ifdef CONFIGURE_SCHEDULER_PRIORITY 97 #define RTEMS_SCHEDULER_CONTEXT_PRIORITY_NAME( name ) \ 98 RTEMS_SCHEDULER_CONTEXT_NAME( priority_ ## name ) 100 #define RTEMS_SCHEDULER_CONTEXT_PRIORITY( name, prio_count ) \ 102 Scheduler_priority_Context Base; \ 103 Chain_Control Ready[ ( prio_count ) ]; \ 104 } RTEMS_SCHEDULER_CONTEXT_PRIORITY_NAME( name ) 106 #define RTEMS_SCHEDULER_CONTROL_PRIORITY( name, obj_name ) \ 108 &RTEMS_SCHEDULER_CONTEXT_PRIORITY_NAME( name ).Base.Base, \ 109 SCHEDULER_PRIORITY_ENTRY_POINTS, \ 114 #ifdef CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP 117 #define RTEMS_SCHEDULER_CONTEXT_PRIORITY_AFFINITY_SMP_NAME( name ) \ 118 RTEMS_SCHEDULER_CONTEXT_NAME( priority_affinity_SMP_ ## name ) 120 #define RTEMS_SCHEDULER_CONTEXT_PRIORITY_AFFINITY_SMP( name, prio_count ) \ 122 Scheduler_priority_SMP_Context Base; \ 123 Chain_Control Ready[ ( prio_count ) ]; \ 124 } RTEMS_SCHEDULER_CONTEXT_PRIORITY_AFFINITY_SMP_NAME( name ) 126 #define RTEMS_SCHEDULER_CONTROL_PRIORITY_AFFINITY_SMP( name, obj_name ) \ 128 &RTEMS_SCHEDULER_CONTEXT_PRIORITY_AFFINITY_SMP_NAME( name ).Base.Base.Base, \ 129 SCHEDULER_PRIORITY_AFFINITY_SMP_ENTRY_POINTS, \ 134 #ifdef CONFIGURE_SCHEDULER_PRIORITY_SMP 137 #define RTEMS_SCHEDULER_CONTEXT_PRIORITY_SMP_NAME( name ) \ 138 RTEMS_SCHEDULER_CONTEXT_NAME( priority_SMP_ ## name ) 140 #define RTEMS_SCHEDULER_CONTEXT_PRIORITY_SMP( name, prio_count ) \ 142 Scheduler_priority_SMP_Context Base; \ 143 Chain_Control Ready[ ( prio_count ) ]; \ 144 } RTEMS_SCHEDULER_CONTEXT_PRIORITY_SMP_NAME( name ) 146 #define RTEMS_SCHEDULER_CONTROL_PRIORITY_SMP( name, obj_name ) \ 148 &RTEMS_SCHEDULER_CONTEXT_PRIORITY_SMP_NAME( name ).Base.Base.Base, \ 149 SCHEDULER_PRIORITY_SMP_ENTRY_POINTS, \ 154 #ifdef CONFIGURE_SCHEDULER_SIMPLE 157 #define RTEMS_SCHEDULER_CONTEXT_SIMPLE_NAME( name ) \ 158 RTEMS_SCHEDULER_CONTEXT_NAME( simple_ ## name ) 160 #define RTEMS_SCHEDULER_CONTEXT_SIMPLE( name ) \ 161 static Scheduler_simple_Context \ 162 RTEMS_SCHEDULER_CONTEXT_SIMPLE_NAME( name ) 164 #define RTEMS_SCHEDULER_CONTROL_SIMPLE( name, obj_name ) \ 166 &RTEMS_SCHEDULER_CONTEXT_SIMPLE_NAME( name ).Base, \ 167 SCHEDULER_SIMPLE_ENTRY_POINTS, \ 172 #ifdef CONFIGURE_SCHEDULER_SIMPLE_SMP 175 #define RTEMS_SCHEDULER_CONTEXT_SIMPLE_SMP_NAME( name ) \ 176 RTEMS_SCHEDULER_CONTEXT_NAME( simple_SMP_ ## name ) 178 #define RTEMS_SCHEDULER_CONTEXT_SIMPLE_SMP( name ) \ 179 static Scheduler_simple_SMP_Context \ 180 RTEMS_SCHEDULER_CONTEXT_SIMPLE_SMP_NAME( name ) 182 #define RTEMS_SCHEDULER_CONTROL_SIMPLE_SMP( name, obj_name ) \ 184 &RTEMS_SCHEDULER_CONTEXT_SIMPLE_SMP_NAME( name ).Base.Base, \ 185 SCHEDULER_SIMPLE_SMP_ENTRY_POINTS, \ Scheduler control.
Definition: scheduler.h:192
Thread Manipulation with the Priority-Based Scheduler.
Data Related to the Manipulation of Threads for the EDF Scheduler.
Simple SMP Scheduler API.
Deterministic Priority SMP Scheduler API.
Manipulation of Threads Simple-Priority-Based Ready Queue.
Constants and Structures Associated with the Scheduler.
Deterministic Priority Affinity SMP Scheduler API.
Thread manipulation for the CBS scheduler.