39#ifndef _RTEMS_SCORE_SCHEDULERSIMPLE_SMP_H
40#define _RTEMS_SCORE_SCHEDULERSIMPLE_SMP_H
79#define SCHEDULER_SIMPLE_SMP_MAXIMUM_PRIORITY 255
84#define SCHEDULER_SIMPLE_SMP_ENTRY_POINTS \
86 _Scheduler_simple_SMP_Initialize, \
87 _Scheduler_default_Schedule, \
88 _Scheduler_simple_SMP_Yield, \
89 _Scheduler_simple_SMP_Block, \
90 _Scheduler_simple_SMP_Unblock, \
91 _Scheduler_simple_SMP_Update_priority, \
92 _Scheduler_default_Map_priority, \
93 _Scheduler_default_Unmap_priority, \
94 _Scheduler_simple_SMP_Ask_for_help, \
95 _Scheduler_simple_SMP_Reconsider_help_request, \
96 _Scheduler_simple_SMP_Withdraw_node, \
97 _Scheduler_simple_SMP_Make_sticky, \
98 _Scheduler_simple_SMP_Clean_sticky, \
99 _Scheduler_default_Pin_or_unpin_not_supported, \
100 _Scheduler_default_Pin_or_unpin_not_supported, \
101 _Scheduler_simple_SMP_Add_processor, \
102 _Scheduler_simple_SMP_Remove_processor, \
103 _Scheduler_simple_SMP_Node_initialize, \
104 _Scheduler_default_Node_destroy, \
105 _Scheduler_default_Release_job, \
106 _Scheduler_default_Cancel_job, \
107 _Scheduler_SMP_Start_idle \
108 SCHEDULER_DEFAULT_SET_AFFINITY_OPERATION \
127 const Scheduler_Control *scheduler,
129 Thread_Control *the_thread,
141 const Scheduler_Control *scheduler,
142 Thread_Control *thread,
154 const Scheduler_Control *scheduler,
155 Thread_Control *thread,
167 const Scheduler_Control *scheduler,
168 Thread_Control *the_thread,
183 const Scheduler_Control *scheduler,
184 Thread_Control *the_thread,
197 const Scheduler_Control *scheduler,
198 Thread_Control *the_thread,
212 const Scheduler_Control *scheduler,
213 Thread_Control *the_thread,
215 Thread_Scheduler_state next_state
228 const Scheduler_Control *scheduler,
229 Thread_Control *the_thread,
243 const Scheduler_Control *scheduler,
244 Thread_Control *the_thread,
255 const Scheduler_Control *scheduler,
268 const Scheduler_Control *scheduler,
280 const Scheduler_Control *scheduler,
281 Thread_Control *thread,
uint64_t Priority_Control
The thread priority control.
Definition priority.h:91
void _Scheduler_simple_SMP_Node_initialize(const Scheduler_Control *scheduler, Scheduler_Node *node, Thread_Control *the_thread, Priority_Control priority)
Initializes the node with the given attributes.
Definition schedulersimplesmp.c:74
void _Scheduler_simple_SMP_Make_sticky(const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node)
Makes the node sticky.
Definition schedulersimplesmp.c:392
bool _Scheduler_simple_SMP_Ask_for_help(const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node)
Asks for help.
Definition schedulersimplesmp.c:342
void _Scheduler_simple_SMP_Yield(const Scheduler_Control *scheduler, Thread_Control *thread, Scheduler_Node *node)
Definition schedulersimplesmp.c:461
void _Scheduler_simple_SMP_Block(const Scheduler_Control *scheduler, Thread_Control *thread, Scheduler_Node *node)
Blocks a thread.
Definition schedulersimplesmp.c:218
Thread_Control * _Scheduler_simple_SMP_Remove_processor(const Scheduler_Control *scheduler, struct Per_CPU_Control *cpu)
Removes an idle thread from the given cpu.
Definition schedulersimplesmp.c:443
void _Scheduler_simple_SMP_Reconsider_help_request(const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node)
Reconsiders help.
Definition schedulersimplesmp.c:353
void _Scheduler_simple_SMP_Clean_sticky(const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node)
Cleans the sticky property from the node.
Definition schedulersimplesmp.c:407
void _Scheduler_simple_SMP_Withdraw_node(const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node, Thread_Scheduler_state next_state)
Withdraws node.
Definition schedulersimplesmp.c:369
void _Scheduler_simple_SMP_Unblock(const Scheduler_Control *scheduler, Thread_Control *thread, Scheduler_Node *node)
Unblocks a thread.
Definition schedulersimplesmp.c:283
void _Scheduler_simple_SMP_Update_priority(const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node)
Updates the priority of the node.
Definition schedulersimplesmp.c:321
void _Scheduler_simple_SMP_Initialize(const Scheduler_Control *scheduler)
Initializes the scheduler's context.
Definition schedulersimplesmp.c:65
void _Scheduler_simple_SMP_Add_processor(const Scheduler_Control *scheduler, Thread_Control *idle)
Adds idle to scheduler.
Definition schedulersimplesmp.c:427
This header file provides interfaces of the Deterministic Priority Scheduler which are used by the im...
This header file provides interfaces of the SMP Scheduler which are used by the implementation and th...
This header file provides interfaces of the Scheduler Handler which are used by the implementation an...
Per CPU Core Structure.
Definition percpu.h:384
Scheduler node for per-thread data.
Definition schedulernode.h:94
Scheduler context specialization for SMP schedulers.
Definition schedulersmp.h:61
Definition schedulersimplesmp.h:74
This union represents a chain control block.
Definition chain.h:96