36#ifndef _RTEMS_TEST_SCHEDULER_H
37#define _RTEMS_TEST_SCHEDULER_H
55 T_SCHEDULER_ADD_PROCESSOR,
57 T_SCHEDULER_ASK_FOR_HELP,
59 T_SCHEDULER_CANCEL_JOB,
60 T_SCHEDULER_CLEAN_STICKY,
61 T_SCHEDULER_INITIALIZE,
62 T_SCHEDULER_MAKE_STICKY,
63 T_SCHEDULER_MAP_PRIORITY,
64 T_SCHEDULER_NODE_DESTROY,
65 T_SCHEDULER_NODE_INITIALIZE,
67 T_SCHEDULER_RECONSIDER_HELP_REQUEST,
68 T_SCHEDULER_RELEASE_JOB,
69 T_SCHEDULER_REMOVE_PROCESSOR,
71 T_SCHEDULER_SET_AFFINITY,
72 T_SCHEDULER_START_IDLE,
74 T_SCHEDULER_UNMAP_PRIORITY,
76 T_SCHEDULER_UPDATE_PRIORITY,
77 T_SCHEDULER_WITHDRAW_NODE,
79} T_scheduler_operation;
82 Thread_Control *executing;
85 T_scheduler_operation operation;
86 Thread_Control *thread;
98 Thread_Scheduler_state next_state;
107 Thread_Control *idle;
111 Thread_Control *idle;
121 Processor_mask affinity;
183void T_scheduler_set_event_handler(T_scheduler_event_handler,
void *);
188 T_scheduler_operation,
size_t *);
193void T_scheduler_initialize(
const Scheduler_Control *);
195void T_scheduler_schedule(
const Scheduler_Control *, Thread_Control *);
197void T_scheduler_yield(
const Scheduler_Control *, Thread_Control *,
200void T_scheduler_block(
const Scheduler_Control *, Thread_Control *,
203void T_scheduler_unblock(
const Scheduler_Control *, Thread_Control *,
206void T_scheduler_update_priority(
const Scheduler_Control *, Thread_Control *,
215void T_scheduler_node_initialize(
const Scheduler_Control *,
Scheduler_Node *,
218void T_scheduler_node_destroy(
const Scheduler_Control *,
Scheduler_Node *);
220void T_scheduler_release_job(
const Scheduler_Control *, Thread_Control *,
223void T_scheduler_cancel_job(
const Scheduler_Control *, Thread_Control *,
226void T_scheduler_start_idle(
const Scheduler_Control *, Thread_Control *,
230bool T_scheduler_ask_for_help(
const Scheduler_Control *, Thread_Control *,
233void T_scheduler_reconsider_help_request(
const Scheduler_Control *,
236void T_scheduler_withdraw_node(
const Scheduler_Control *, Thread_Control *,
239void T_scheduler_make_sticky(
const Scheduler_Control *, Thread_Control *,
242void T_scheduler_clean_sticky(
const Scheduler_Control *, Thread_Control *,
245void T_scheduler_pin(
const Scheduler_Control *, Thread_Control *,
248void T_scheduler_unpin(
const Scheduler_Control *, Thread_Control *,
251void T_scheduler_add_processor(
const Scheduler_Control *, Thread_Control *);
253Thread_Control *T_scheduler_remove_processor(
const Scheduler_Control *,
261#define T_SCHEDULER_ENTRY_POINTS { T_scheduler_initialize, \
262 T_scheduler_schedule, T_scheduler_yield, T_scheduler_block, \
263 T_scheduler_unblock, T_scheduler_update_priority, \
264 T_scheduler_map_priority, T_scheduler_unmap_priority, \
265 T_scheduler_ask_for_help, T_scheduler_reconsider_help_request, \
266 T_scheduler_withdraw_node, T_scheduler_make_sticky, \
267 T_scheduler_clean_sticky, T_scheduler_pin, T_scheduler_unpin, \
268 T_scheduler_add_processor, T_scheduler_remove_processor, \
269 T_scheduler_node_initialize, T_scheduler_node_destroy, \
270 T_scheduler_release_job, T_scheduler_cancel_job, \
271 T_scheduler_start_idle, T_scheduler_set_affinity }
273#define T_SCHEDULER_ENTRY_POINTS { T_scheduler_initialize, \
274 T_scheduler_schedule, T_scheduler_yield, T_scheduler_block, \
275 T_scheduler_unblock, T_scheduler_update_priority, \
276 T_scheduler_map_priority, T_scheduler_unmap_priority, \
277 T_scheduler_node_initialize, T_scheduler_node_destroy, \
278 T_scheduler_release_job, T_scheduler_cancel_job, \
279 T_scheduler_start_idle }
uint64_t Priority_Control
The thread priority control.
Definition priority.h:91
Status_Control
Status codes.
Definition status.h:111
This header file provides the interfaces of the Processor Mask.
This header file provides interfaces of the Scheduler Handler which are used by the implementation an...
Per CPU Core Structure.
Definition percpu.h:384
The priority node to build up a priority aggregation.
Definition priority.h:112
Scheduler node for per-thread data.
Definition schedulernode.h:94
The scheduler operations.
Definition scheduler.h:62
Definition test-scheduler.h:81
Definition test-scheduler.h:148
Definition test-scheduler.h:153
Definition test-scheduler.h:138
Definition test-scheduler.h:158
Definition test-scheduler.h:143
Definition test-scheduler.h:133
Thread queue context for the thread queue methods.
Definition threadq.h:216
This header file provides interfaces of the RTEMS Test Framework.