summaryrefslogtreecommitdiffstats
path: root/cpukit/score/include/rtems/score/scheduleredfsmp.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/score/include/rtems/score/scheduleredfsmp.h')
-rw-r--r--cpukit/score/include/rtems/score/scheduleredfsmp.h200
1 files changed, 0 insertions, 200 deletions
diff --git a/cpukit/score/include/rtems/score/scheduleredfsmp.h b/cpukit/score/include/rtems/score/scheduleredfsmp.h
deleted file mode 100644
index 018568190e..0000000000
--- a/cpukit/score/include/rtems/score/scheduleredfsmp.h
+++ /dev/null
@@ -1,200 +0,0 @@
-/**
- * @file
- *
- * @brief EDF SMP Scheduler API
- *
- * @ingroup ScoreSchedulerSMPEDF
- */
-
-/*
- * Copyright (c) 2017 embedded brains GmbH.
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _RTEMS_SCORE_SCHEDULEREDFSMP_H
-#define _RTEMS_SCORE_SCHEDULEREDFSMP_H
-
-#include <rtems/score/scheduler.h>
-#include <rtems/score/scheduleredf.h>
-#include <rtems/score/schedulersmp.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ScoreSchedulerSMPEDF EDF Priority SMP Scheduler
- *
- * @ingroup ScoreSchedulerSMP
- *
- * @{
- */
-
-typedef struct {
- Scheduler_SMP_Node Base;
-
- /**
- * @brief Generation number to ensure FIFO/LIFO order for threads of the same
- * priority across different ready queues.
- */
- int64_t generation;
-
- /**
- * @brief The ready queue index depending on the processor affinity of the thread.
- *
- * The ready queue index zero is used for threads with a one-to-all thread
- * processor affinity. Threads with a one-to-one processor affinity use the
- * processor index plus one as the ready queue index.
- */
- uint32_t ready_queue_index;
-} Scheduler_EDF_SMP_Node;
-
-typedef struct {
- /**
- * @brief Chain node for Scheduler_SMP_Context::Affine_queues.
- */
- Chain_Node Node;
-
- /**
- * @brief The ready threads of the corresponding affinity.
- */
- RBTree_Control Queue;
-
- /**
- * @brief The scheduled thread of the corresponding processor.
- */
- Scheduler_EDF_SMP_Node *scheduled;
-} Scheduler_EDF_SMP_Ready_queue;
-
-typedef struct {
- Scheduler_SMP_Context Base;
-
- /**
- * @brief Current generation for LIFO (index 0) and FIFO (index 1) ordering.
- */
- int64_t generations[ 2 ];
-
- /**
- * @brief Chain of ready queues with affine threads to determine the highest
- * priority ready thread.
- */
- Chain_Control Affine_queues;
-
- /**
- * @brief A table with ready queues.
- *
- * The index zero queue is used for threads with a one-to-all processor
- * affinity. Index one corresponds to processor index zero, and so on.
- */
- Scheduler_EDF_SMP_Ready_queue Ready[ RTEMS_ZERO_LENGTH_ARRAY ];
-} Scheduler_EDF_SMP_Context;
-
-#define SCHEDULER_EDF_SMP_ENTRY_POINTS \
- { \
- _Scheduler_EDF_SMP_Initialize, \
- _Scheduler_default_Schedule, \
- _Scheduler_EDF_SMP_Yield, \
- _Scheduler_EDF_SMP_Block, \
- _Scheduler_EDF_SMP_Unblock, \
- _Scheduler_EDF_SMP_Update_priority, \
- _Scheduler_EDF_Map_priority, \
- _Scheduler_EDF_Unmap_priority, \
- _Scheduler_EDF_SMP_Ask_for_help, \
- _Scheduler_EDF_SMP_Reconsider_help_request, \
- _Scheduler_EDF_SMP_Withdraw_node, \
- _Scheduler_EDF_SMP_Add_processor, \
- _Scheduler_EDF_SMP_Remove_processor, \
- _Scheduler_EDF_SMP_Node_initialize, \
- _Scheduler_default_Node_destroy, \
- _Scheduler_EDF_Release_job, \
- _Scheduler_EDF_Cancel_job, \
- _Scheduler_default_Tick, \
- _Scheduler_EDF_SMP_Start_idle, \
- _Scheduler_EDF_SMP_Set_affinity \
- }
-
-void _Scheduler_EDF_SMP_Initialize( const Scheduler_Control *scheduler );
-
-void _Scheduler_EDF_SMP_Node_initialize(
- const Scheduler_Control *scheduler,
- Scheduler_Node *node,
- Thread_Control *the_thread,
- Priority_Control priority
-);
-
-void _Scheduler_EDF_SMP_Block(
- const Scheduler_Control *scheduler,
- Thread_Control *thread,
- Scheduler_Node *node
-);
-
-void _Scheduler_EDF_SMP_Unblock(
- const Scheduler_Control *scheduler,
- Thread_Control *thread,
- Scheduler_Node *node
-);
-
-void _Scheduler_EDF_SMP_Update_priority(
- const Scheduler_Control *scheduler,
- Thread_Control *the_thread,
- Scheduler_Node *node
-);
-
-bool _Scheduler_EDF_SMP_Ask_for_help(
- const Scheduler_Control *scheduler,
- Thread_Control *the_thread,
- Scheduler_Node *node
-);
-
-void _Scheduler_EDF_SMP_Reconsider_help_request(
- const Scheduler_Control *scheduler,
- Thread_Control *the_thread,
- Scheduler_Node *node
-);
-
-void _Scheduler_EDF_SMP_Withdraw_node(
- const Scheduler_Control *scheduler,
- Thread_Control *the_thread,
- Scheduler_Node *node,
- Thread_Scheduler_state next_state
-);
-
-void _Scheduler_EDF_SMP_Add_processor(
- const Scheduler_Control *scheduler,
- Thread_Control *idle
-);
-
-Thread_Control *_Scheduler_EDF_SMP_Remove_processor(
- const Scheduler_Control *scheduler,
- struct Per_CPU_Control *cpu
-);
-
-void _Scheduler_EDF_SMP_Yield(
- const Scheduler_Control *scheduler,
- Thread_Control *thread,
- Scheduler_Node *node
-);
-
-void _Scheduler_EDF_SMP_Start_idle(
- const Scheduler_Control *scheduler,
- Thread_Control *idle,
- struct Per_CPU_Control *cpu
-);
-
-bool _Scheduler_EDF_SMP_Set_affinity(
- const Scheduler_Control *scheduler,
- Thread_Control *thread,
- Scheduler_Node *node,
- const Processor_mask *affinity
-);
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _RTEMS_SCORE_SCHEDULEREDFSMP_H */