RTEMS  5.0.0
schedulerprioritysmp.h
Go to the documentation of this file.
1 
9 /*
10  * Copyright (c) 2013, 2018 embedded brains GmbH. All rights reserved.
11  *
12  * embedded brains GmbH
13  * Dornierstr. 4
14  * 82178 Puchheim
15  * Germany
16  * <rtems@embedded-brains.de>
17  *
18  * The license and distribution terms for this file may be
19  * found in the file LICENSE in this distribution or at
20  * http://www.rtems.org/license/LICENSE.
21  */
22 
23 #ifndef _RTEMS_SCORE_SCHEDULERPRIORITYSMP_H
24 #define _RTEMS_SCORE_SCHEDULERPRIORITYSMP_H
25 
26 #include <rtems/score/scheduler.h>
29 
30 #ifdef __cplusplus
31 extern "C" {
32 #endif /* __cplusplus */
33 
54 typedef struct {
57  Chain_Control Ready[ RTEMS_ZERO_LENGTH_ARRAY ];
59 
64 typedef struct {
69 
75 
79 #define SCHEDULER_PRIORITY_SMP_ENTRY_POINTS \
80  { \
81  _Scheduler_priority_SMP_Initialize, \
82  _Scheduler_default_Schedule, \
83  _Scheduler_priority_SMP_Yield, \
84  _Scheduler_priority_SMP_Block, \
85  _Scheduler_priority_SMP_Unblock, \
86  _Scheduler_priority_SMP_Update_priority, \
87  _Scheduler_default_Map_priority, \
88  _Scheduler_default_Unmap_priority, \
89  _Scheduler_priority_SMP_Ask_for_help, \
90  _Scheduler_priority_SMP_Reconsider_help_request, \
91  _Scheduler_priority_SMP_Withdraw_node, \
92  _Scheduler_default_Pin_or_unpin, \
93  _Scheduler_default_Pin_or_unpin, \
94  _Scheduler_priority_SMP_Add_processor, \
95  _Scheduler_priority_SMP_Remove_processor, \
96  _Scheduler_priority_SMP_Node_initialize, \
97  _Scheduler_default_Node_destroy, \
98  _Scheduler_default_Release_job, \
99  _Scheduler_default_Cancel_job, \
100  _Scheduler_default_Tick, \
101  _Scheduler_SMP_Start_idle \
102  SCHEDULER_OPERATION_DEFAULT_GET_SET_AFFINITY \
103  }
104 
105 void _Scheduler_priority_SMP_Initialize( const Scheduler_Control *scheduler );
106 
107 void _Scheduler_priority_SMP_Node_initialize(
108  const Scheduler_Control *scheduler,
109  Scheduler_Node *node,
110  Thread_Control *the_thread,
111  Priority_Control priority
112 );
113 
114 void _Scheduler_priority_SMP_Block(
115  const Scheduler_Control *scheduler,
116  Thread_Control *thread,
117  Scheduler_Node *node
118 );
119 
120 void _Scheduler_priority_SMP_Unblock(
121  const Scheduler_Control *scheduler,
122  Thread_Control *thread,
123  Scheduler_Node *node
124 );
125 
126 void _Scheduler_priority_SMP_Update_priority(
127  const Scheduler_Control *scheduler,
128  Thread_Control *the_thread,
129  Scheduler_Node *node
130 );
131 
132 bool _Scheduler_priority_SMP_Ask_for_help(
133  const Scheduler_Control *scheduler,
134  Thread_Control *the_thread,
135  Scheduler_Node *node
136 );
137 
138 void _Scheduler_priority_SMP_Reconsider_help_request(
139  const Scheduler_Control *scheduler,
140  Thread_Control *the_thread,
141  Scheduler_Node *node
142 );
143 
144 void _Scheduler_priority_SMP_Withdraw_node(
145  const Scheduler_Control *scheduler,
146  Thread_Control *the_thread,
147  Scheduler_Node *node,
148  Thread_Scheduler_state next_state
149 );
150 
151 void _Scheduler_priority_SMP_Add_processor(
152  const Scheduler_Control *scheduler,
153  Thread_Control *idle
154 );
155 
156 Thread_Control *_Scheduler_priority_SMP_Remove_processor(
157  const Scheduler_Control *scheduler,
158  struct Per_CPU_Control *cpu
159 );
160 
161 void _Scheduler_priority_SMP_Yield(
162  const Scheduler_Control *scheduler,
163  Thread_Control *thread,
164  Scheduler_Node *node
165 );
166 
169 #ifdef __cplusplus
170 }
171 #endif /* __cplusplus */
172 
173 #endif /* _RTEMS_SCORE_SCHEDULERPRIORITYSMP_H */
Scheduler context specialization for SMP schedulers.
Definition: schedulersmp.h:44
SMP Scheduler API.
Definition: prioritybitmap.h:37
Definition: chain.h:83
Thread Manipulation with the Priority-Based Scheduler.
Scheduler_SMP_Node Base
SMP scheduler node.
Definition: schedulerprioritysmp.h:68
uint64_t Priority_Control
The thread priority control.
Definition: priority.h:66
Scheduler context specialization for Deterministic Priority SMP schedulers.
Definition: schedulerprioritysmp.h:54
Definition: thread.h:728
Scheduler_priority_Ready_queue Ready_queue
The associated ready queue of this node.
Definition: schedulerprioritysmp.h:73
Per CPU Core Structure.
Definition: percpu.h:290
Data for ready queue operations.
Definition: schedulerpriority.h:80
Scheduler node specialization for SMP schedulers.
Definition: schedulersmp.h:98
Scheduler control.
Definition: scheduler.h:266
Scheduler node for per-thread data.
Definition: schedulernode.h:65
Scheduler node specialization for Deterministic Priority SMP schedulers.
Definition: schedulerprioritysmp.h:64
Constants and Structures Associated with the Scheduler.