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 \
132void _Scheduler_priority_affinity_SMP_Yield(
207 Thread_Scheduler_state next_state
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
Scheduler control.
Definition: scheduler.h:337