RTEMS CPU Kit with SuperCore  4.11.2
schedulersimplesmp.h
Go to the documentation of this file.
1 
9 /*
10  * Copyright (C) 2011 On-Line Applications Research Corporation (OAR).
11  *
12  * Copyright (c) 2013 embedded brains GmbH.
13  *
14  * The license and distribution terms for this file may be
15  * found in the file LICENSE in this distribution or at
16  * http://www.rtems.org/license/LICENSE.
17  */
18 
19 #ifndef _RTEMS_SCORE_SCHEDULERSIMPLE_SMP_H
20 #define _RTEMS_SCORE_SCHEDULERSIMPLE_SMP_H
21 
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25 
26 #include <rtems/score/scheduler.h>
29 
52 typedef struct {
54  Chain_Control Ready;
56 
60 #define SCHEDULER_SIMPLE_SMP_ENTRY_POINTS \
61  { \
62  _Scheduler_simple_SMP_Initialize, \
63  _Scheduler_default_Schedule, \
64  _Scheduler_simple_SMP_Yield, \
65  _Scheduler_simple_SMP_Block, \
66  _Scheduler_simple_SMP_Unblock, \
67  _Scheduler_simple_SMP_Change_priority, \
68  _Scheduler_simple_SMP_Ask_for_help, \
69  _Scheduler_simple_SMP_Node_initialize, \
70  _Scheduler_default_Node_destroy, \
71  _Scheduler_simple_SMP_Update_priority, \
72  _Scheduler_priority_Priority_compare, \
73  _Scheduler_default_Release_job, \
74  _Scheduler_default_Tick, \
75  _Scheduler_SMP_Start_idle \
76  SCHEDULER_OPERATION_DEFAULT_GET_SET_AFFINITY \
77  }
78 
79 void _Scheduler_simple_SMP_Initialize( const Scheduler_Control *scheduler );
80 
81 void _Scheduler_simple_SMP_Node_initialize(
82  const Scheduler_Control *scheduler,
83  Thread_Control *the_thread
84 );
85 
86 void _Scheduler_simple_SMP_Block(
87  const Scheduler_Control *scheduler,
88  Thread_Control *thread
89 );
90 
91 Thread_Control *_Scheduler_simple_SMP_Unblock(
92  const Scheduler_Control *scheduler,
93  Thread_Control *thread
94 );
95 
96 Thread_Control *_Scheduler_simple_SMP_Change_priority(
97  const Scheduler_Control *scheduler,
98  Thread_Control *the_thread,
99  Priority_Control new_priority,
100  bool prepend_it
101 );
102 
103 Thread_Control *_Scheduler_simple_SMP_Ask_for_help(
104  const Scheduler_Control *scheduler,
105  Thread_Control *offers_help,
106  Thread_Control *needs_help
107 );
108 
109 void _Scheduler_simple_SMP_Update_priority(
110  const Scheduler_Control *scheduler,
111  Thread_Control *thread,
112  Priority_Control new_priority
113 );
114 
115 Thread_Control *_Scheduler_simple_SMP_Yield(
116  const Scheduler_Control *scheduler,
117  Thread_Control *thread
118 );
119 
122 #ifdef __cplusplus
123 }
124 #endif
125 
126 #endif
127 /* end of include file */
Scheduler context specialization for SMP schedulers.
Definition: schedulersmp.h:44
SMP Scheduler API.
Scheduler control.
Definition: scheduler.h:192
This is used to manage a chain.
Definition: chain.h:83
Thread Manipulation with the Priority-Based Scheduler.
uint32_t Priority_Control
The following type defines the control block used to manage thread priorities.
Definition: priority.h:56
This structure defines the Thread Control Block (TCB).
Definition: thread.h:671
Constants and Structures Associated with the Scheduler.
Definition: schedulersimplesmp.h:52