summaryrefslogtreecommitdiffstats
path: root/cpukit/score/include/rtems/score/schedulerprioritysmp.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/score/include/rtems/score/schedulerprioritysmp.h')
-rw-r--r--cpukit/score/include/rtems/score/schedulerprioritysmp.h29
1 files changed, 27 insertions, 2 deletions
diff --git a/cpukit/score/include/rtems/score/schedulerprioritysmp.h b/cpukit/score/include/rtems/score/schedulerprioritysmp.h
index 66de9645bd..3e7d22f81d 100644
--- a/cpukit/score/include/rtems/score/schedulerprioritysmp.h
+++ b/cpukit/score/include/rtems/score/schedulerprioritysmp.h
@@ -47,13 +47,33 @@ extern "C" {
* @{
*/
+/**
+ * @brief Scheduler context specialization for Deterministic Priority SMP
+ * schedulers.
+ */
typedef struct {
Scheduler_SMP_Context Base;
Priority_bit_map_Control Bit_map;
- Chain_Control Ready[ 0 ];
+ Chain_Control Ready[ RTEMS_ZERO_LENGTH_ARRAY ];
} Scheduler_priority_SMP_Context;
/**
+ * @brief Scheduler node specialization for Deterministic Priority SMP
+ * schedulers.
+ */
+typedef struct {
+ /**
+ * @brief SMP scheduler node.
+ */
+ Scheduler_SMP_Node Base;
+
+ /**
+ * @brief The associated ready queue of this node.
+ */
+ Scheduler_priority_Ready_queue Ready_queue;
+} Scheduler_priority_SMP_Node;
+
+/**
* @brief Entry points for the Priority SMP Scheduler.
*/
#define SCHEDULER_PRIORITY_SMP_ENTRY_POINTS \
@@ -63,7 +83,7 @@ typedef struct {
_Scheduler_priority_SMP_Yield, \
_Scheduler_priority_SMP_Block, \
_Scheduler_priority_SMP_Enqueue_fifo, \
- _Scheduler_default_Allocate, \
+ _Scheduler_priority_SMP_Allocate, \
_Scheduler_default_Free, \
_Scheduler_priority_SMP_Update, \
_Scheduler_priority_SMP_Enqueue_fifo, \
@@ -79,6 +99,11 @@ typedef struct {
void _Scheduler_priority_SMP_Initialize( const Scheduler_Control *scheduler );
+bool _Scheduler_priority_SMP_Allocate(
+ const Scheduler_Control *scheduler,
+ Thread_Control *thread
+);
+
void _Scheduler_priority_SMP_Schedule(
const Scheduler_Control *scheduler,
Thread_Control *thread