RTEMS CPU Kit with SuperCore  4.11.2
schedulerpriorityaffinitysmp.h
Go to the documentation of this file.
1 
9 /*
10  * COPYRIGHT (c) 2014.
11  * On-Line Applications Research Corporation (OAR).
12  *
13  * The license and distribution terms for this file may be
14  * found in the file LICENSE in this distribution or at
15  * http://www.rtems.org/license/LICENSE.
16  */
17 
18 #ifndef _RTEMS_SCORE_SCHEDULERPRIORITYAFFINITYSMP_H
19 #define _RTEMS_SCORE_SCHEDULERPRIORITYAFFINITYSMP_H
20 
21 #include <rtems/score/scheduler.h>
25 #include <rtems/score/cpuset.h>
26 
27 #ifdef __cplusplus
28 extern "C" {
29 #endif /* __cplusplus */
30 
50 #define SCHEDULER_PRIORITY_AFFINITY_SMP_ENTRY_POINTS \
51  { \
52  _Scheduler_priority_SMP_Initialize, \
53  _Scheduler_default_Schedule, \
54  _Scheduler_priority_SMP_Yield, \
55  _Scheduler_priority_affinity_SMP_Block, \
56  _Scheduler_priority_affinity_SMP_Unblock, \
57  _Scheduler_priority_affinity_SMP_Change_priority, \
58  _Scheduler_priority_affinity_SMP_Ask_for_help, \
59  _Scheduler_priority_affinity_SMP_Node_initialize, \
60  _Scheduler_default_Node_destroy, \
61  _Scheduler_priority_SMP_Update_priority, \
62  _Scheduler_priority_Priority_compare, \
63  _Scheduler_default_Release_job, \
64  _Scheduler_default_Tick, \
65  _Scheduler_SMP_Start_idle, \
66  _Scheduler_priority_affinity_SMP_Get_affinity, \
67  _Scheduler_priority_affinity_SMP_Set_affinity \
68  }
69 
80  const Scheduler_Control *scheduler,
81  Thread_Control *thread
82 );
83 
93  const Scheduler_Control *scheduler,
94  Thread_Control *thread
95 );
96 
106  const Scheduler_Control *scheduler,
107  Thread_Control *thread
108 );
109 
122  const Scheduler_Control *scheduler,
123  Thread_Control *thread,
124  size_t cpusetsize,
125  cpu_set_t *cpuset
126 );
127 
137  const Scheduler_Control *scheduler,
138  Thread_Control *the_thread,
139  Priority_Control new_priority,
140  bool prepend_it
141 );
142 
143 Thread_Control *_Scheduler_priority_affinity_SMP_Ask_for_help(
144  const Scheduler_Control *scheduler,
145  Thread_Control *offers_help,
146  Thread_Control *needs_help
147 );
148 
161  const Scheduler_Control *scheduler,
162  Thread_Control *thread,
163  size_t cpusetsize,
164  const cpu_set_t *cpuset
165 );
166 
173 typedef struct {
178 
182  CPU_set_Control Affinity;
184 
187 #ifdef __cplusplus
188 }
189 #endif /* __cplusplus */
190 
191 #endif /* _RTEMS_SCORE_SCHEDULERPRIORITYAFFINITYSMP_H */
SMP Scheduler API.
Scheduler control.
Definition: scheduler.h:192
void _Scheduler_priority_affinity_SMP_Block(const Scheduler_Control *scheduler, Thread_Control *thread)
SMP Priority Affinity Scheduler Block Operation.
Definition: schedulerpriorityaffinitysmp.c:221
Information About the CPU Set.
Thread Manipulation with the Priority-Based Scheduler.
Scheduler_priority_SMP_Node Base
SMP priority scheduler node.
Definition: schedulerpriorityaffinitysmp.h:177
Deterministic Priority SMP Scheduler API.
uint32_t Priority_Control
The following type defines the control block used to manage thread priorities.
Definition: priority.h:56
CPU_set_Control Affinity
Structure containing affinity set data and size.
Definition: schedulerpriorityaffinitysmp.h:182
This structure defines the Thread Control Block (TCB).
Definition: thread.h:671
Thread_Control * _Scheduler_priority_affinity_SMP_Change_priority(const Scheduler_Control *scheduler, Thread_Control *the_thread, Priority_Control new_priority, bool prepend_it)
Change priority for the priority affinity SMP scheduler.
Definition: schedulerpriorityaffinitysmp.c:538
bool _Scheduler_priority_affinity_SMP_Set_affinity(const Scheduler_Control *scheduler, Thread_Control *thread, size_t cpusetsize, const cpu_set_t *cpuset)
Set affinity for the priority affinity SMP scheduler.
Definition: schedulerpriorityaffinitysmp.c:612
Constants and Structures Associated with the Scheduler.
bool _Scheduler_priority_affinity_SMP_Get_affinity(const Scheduler_Control *scheduler, Thread_Control *thread, size_t cpusetsize, cpu_set_t *cpuset)
Get affinity for the priority affinity SMP scheduler.
Definition: schedulerpriorityaffinitysmp.c:592
Thread_Control * _Scheduler_priority_affinity_SMP_Unblock(const Scheduler_Control *scheduler, Thread_Control *thread)
SMP Priority Affinity Scheduler Unblock Operation.
Definition: schedulerpriorityaffinitysmp.c:401
void _Scheduler_priority_affinity_SMP_Node_initialize(const Scheduler_Control *scheduler, Thread_Control *thread)
Initializes per thread scheduler information.
Definition: schedulerpriorityaffinitysmp.c:97
Scheduler node specialization for Deterministic Priority SMP schedulers.
Definition: schedulerprioritysmp.h:64
Scheduler node specialization for Deterministic Priority Affinity SMP schedulers. ...
Definition: schedulerpriorityaffinitysmp.h:173