38#ifndef _RTEMS_SCORE_SCHEDULERPRIORITYAFFINITYSMP_H
39#define _RTEMS_SCORE_SCHEDULERPRIORITYAFFINITYSMP_H
46#include <sys/cpuset.h>
74#define SCHEDULER_PRIORITY_AFFINITY_SMP_ENTRY_POINTS \
76 _Scheduler_priority_SMP_Initialize, \
77 _Scheduler_default_Schedule, \
78 _Scheduler_priority_affinity_SMP_Yield, \
79 _Scheduler_priority_affinity_SMP_Block, \
80 _Scheduler_priority_affinity_SMP_Unblock, \
81 _Scheduler_priority_affinity_SMP_Update_priority, \
82 _Scheduler_default_Map_priority, \
83 _Scheduler_default_Unmap_priority, \
84 _Scheduler_priority_affinity_SMP_Ask_for_help, \
85 _Scheduler_priority_affinity_SMP_Reconsider_help_request, \
86 _Scheduler_priority_affinity_SMP_Withdraw_node, \
87 _Scheduler_priority_affinity_SMP_Make_sticky, \
88 _Scheduler_priority_affinity_SMP_Clean_sticky, \
89 _Scheduler_default_Pin_or_unpin_not_supported, \
90 _Scheduler_default_Pin_or_unpin_not_supported, \
91 _Scheduler_priority_affinity_SMP_Add_processor, \
92 _Scheduler_priority_affinity_SMP_Remove_processor, \
93 _Scheduler_priority_affinity_SMP_Node_initialize, \
94 _Scheduler_default_Node_destroy, \
95 _Scheduler_default_Release_job, \
96 _Scheduler_default_Cancel_job, \
97 _Scheduler_SMP_Start_idle, \
98 _Scheduler_priority_affinity_SMP_Set_affinity \
113 const Scheduler_Control *scheduler,
115 Thread_Control *the_thread,
127 const Scheduler_Control *scheduler,
128 Thread_Control *thread,
132void _Scheduler_priority_affinity_SMP_Yield(
133 const Scheduler_Control *scheduler,
134 Thread_Control *thread,
146 const Scheduler_Control *scheduler,
147 Thread_Control *thread,
159 const Scheduler_Control *scheduler,
160 Thread_Control *the_thread,
175 const Scheduler_Control *scheduler,
176 Thread_Control *the_thread,
189 const Scheduler_Control *scheduler,
190 Thread_Control *the_thread,
204 const Scheduler_Control *scheduler,
205 Thread_Control *the_thread,
207 Thread_Scheduler_state next_state
220 const Scheduler_Control *scheduler,
221 Thread_Control *the_thread,
235 const Scheduler_Control *scheduler,
236 Thread_Control *the_thread,
247 const Scheduler_Control *scheduler,
260 const Scheduler_Control *scheduler,
276 const Scheduler_Control *scheduler,
277 Thread_Control *thread,
279 const Processor_mask *affinity
uint64_t Priority_Control
The thread priority control.
Definition priority.h:91
Thread_Control * _Scheduler_priority_affinity_SMP_Remove_processor(const Scheduler_Control *scheduler, struct Per_CPU_Control *cpu)
Removes an idle thread from the given cpu.
Definition schedulerpriorityaffinitysmp.c:604
Status_Control _Scheduler_priority_affinity_SMP_Set_affinity(const Scheduler_Control *scheduler, Thread_Control *thread, Scheduler_Node *node, const Processor_mask *affinity)
Sets affinity for the priority affinity SMP scheduler.
Definition schedulerpriorityaffinitysmp.c:641
void _Scheduler_priority_affinity_SMP_Node_initialize(const Scheduler_Control *scheduler, Scheduler_Node *node, Thread_Control *the_thread, Priority_Control priority)
Initializes per thread scheduler information.
Definition schedulerpriorityaffinitysmp.c:95
void _Scheduler_priority_affinity_SMP_Withdraw_node(const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node, Thread_Scheduler_state next_state)
Withdraws node.
Definition schedulerpriorityaffinitysmp.c:530
void _Scheduler_priority_affinity_SMP_Add_processor(const Scheduler_Control *scheduler, Thread_Control *idle)
Adds idle to scheduler.
Definition schedulerpriorityaffinitysmp.c:588
bool _Scheduler_priority_affinity_SMP_Ask_for_help(const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node)
Asks for help.
Definition schedulerpriorityaffinitysmp.c:503
void _Scheduler_priority_affinity_SMP_Make_sticky(const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node)
Makes the node sticky.
Definition schedulerpriorityaffinitysmp.c:553
void _Scheduler_priority_affinity_SMP_Block(const Scheduler_Control *scheduler, Thread_Control *thread, Scheduler_Node *node)
Blocks a thread.
Definition schedulerpriorityaffinitysmp.c:197
void _Scheduler_priority_affinity_SMP_Reconsider_help_request(const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node)
Reconsiders help.
Definition schedulerpriorityaffinitysmp.c:514
void _Scheduler_priority_affinity_SMP_Update_priority(const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node)
Updates the priority of the node.
Definition schedulerpriorityaffinitysmp.c:477
void _Scheduler_priority_affinity_SMP_Clean_sticky(const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node)
Cleans the sticky property from the node.
Definition schedulerpriorityaffinitysmp.c:568
void _Scheduler_priority_affinity_SMP_Unblock(const Scheduler_Control *scheduler, Thread_Control *thread, Scheduler_Node *node)
Unblocks a thread.
Definition schedulerpriorityaffinitysmp.c:381
Status_Control
Status codes.
Definition status.h:111
This header file provides interfaces of the Deterministic Priority Scheduler which are used by the im...
This header file provides interfaces of the Deterministic Priority SMP Scheduler which are used by th...
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 node specialization for Deterministic Priority SMP schedulers.
Definition schedulerprioritysmp.h:82
Scheduler node specialization for Deterministic Priority Affinity SMP schedulers.
Definition schedulerpriorityaffinitysmp.h:288
Scheduler_priority_SMP_Node Base
SMP priority scheduler node.
Definition schedulerpriorityaffinitysmp.h:292
Processor_mask Affinity
The thread processor affinity set.
Definition schedulerpriorityaffinitysmp.h:297