RTEMS CPU Kit with SuperCore  4.11.2
schedulerprioritysmp.h
Go to the documentation of this file.
1 
9 /*
10  * Copyright (c) 2013-2014 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_Change_priority, \
87  _Scheduler_priority_SMP_Ask_for_help, \
88  _Scheduler_priority_SMP_Node_initialize, \
89  _Scheduler_default_Node_destroy, \
90  _Scheduler_priority_SMP_Update_priority, \
91  _Scheduler_priority_Priority_compare, \
92  _Scheduler_default_Release_job, \
93  _Scheduler_default_Tick, \
94  _Scheduler_SMP_Start_idle \
95  SCHEDULER_OPERATION_DEFAULT_GET_SET_AFFINITY \
96  }
97 
98 void _Scheduler_priority_SMP_Initialize( const Scheduler_Control *scheduler );
99 
100 void _Scheduler_priority_SMP_Node_initialize(
101  const Scheduler_Control *scheduler,
102  Thread_Control *thread
103 );
104 
105 void _Scheduler_priority_SMP_Block(
106  const Scheduler_Control *scheduler,
107  Thread_Control *thread
108 );
109 
110 Thread_Control *_Scheduler_priority_SMP_Unblock(
111  const Scheduler_Control *scheduler,
112  Thread_Control *thread
113 );
114 
115 Thread_Control *_Scheduler_priority_SMP_Change_priority(
116  const Scheduler_Control *scheduler,
117  Thread_Control *the_thread,
118  Priority_Control new_priority,
119  bool prepend_it
120 );
121 
122 Thread_Control *_Scheduler_priority_SMP_Ask_for_help(
123  const Scheduler_Control *scheduler,
124  Thread_Control *needs_help,
125  Thread_Control *offers_help
126 );
127 
128 void _Scheduler_priority_SMP_Update_priority(
129  const Scheduler_Control *scheduler,
130  Thread_Control *thread,
131  Priority_Control new_priority
132 );
133 
134 Thread_Control *_Scheduler_priority_SMP_Yield(
135  const Scheduler_Control *scheduler,
136  Thread_Control *thread
137 );
138 
141 #ifdef __cplusplus
142 }
143 #endif /* __cplusplus */
144 
145 #endif /* _RTEMS_SCORE_SCHEDULERPRIORITYSMP_H */
Scheduler context specialization for SMP schedulers.
Definition: schedulersmp.h:44
SMP Scheduler API.
Scheduler control.
Definition: scheduler.h:192
Definition: prioritybitmap.h:40
This is used to manage a chain.
Definition: chain.h:83
Thread Manipulation with the Priority-Based Scheduler.
Scheduler_SMP_Node Base
SMP scheduler node.
Definition: schedulerprioritysmp.h:68
uint32_t Priority_Control
The following type defines the control block used to manage thread priorities.
Definition: priority.h:56
Scheduler context specialization for Deterministic Priority SMP schedulers.
Definition: schedulerprioritysmp.h:54
Scheduler_priority_Ready_queue Ready_queue
The associated ready queue of this node.
Definition: schedulerprioritysmp.h:73
This structure defines the Thread Control Block (TCB).
Definition: thread.h:671
Data for ready queue operations.
Definition: schedulerpriority.h:79
Constants and Structures Associated with the Scheduler.
Scheduler node specialization for SMP schedulers.
Definition: schedulersmp.h:98
Scheduler node specialization for Deterministic Priority SMP schedulers.
Definition: schedulerprioritysmp.h:64