summaryrefslogtreecommitdiffstats
path: root/cpukit/score/include/rtems/score/scheduler.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--cpukit/score/include/rtems/score/scheduler.h159
1 files changed, 0 insertions, 159 deletions
diff --git a/cpukit/score/include/rtems/score/scheduler.h b/cpukit/score/include/rtems/score/scheduler.h
index 0a6d68208a..bbb4e37240 100644
--- a/cpukit/score/include/rtems/score/scheduler.h
+++ b/cpukit/score/include/rtems/score/scheduler.h
@@ -19,8 +19,6 @@
#ifndef _RTEMS_SCORE_SCHEDULER_H
#define _RTEMS_SCORE_SCHEDULER_H
-#include <rtems/score/priority.h>
-#include <rtems/score/smplockseq.h>
#include <rtems/score/thread.h>
#if defined(__RTEMS_HAVE_SYS_CPUSET_H__) && defined(RTEMS_SMP)
#include <sys/cpuset.h>
@@ -44,8 +42,6 @@ struct Per_CPU_Control;
typedef struct Scheduler_Control Scheduler_Control;
-typedef struct Scheduler_Node Scheduler_Node;
-
#if defined(RTEMS_SMP)
typedef Thread_Control * Scheduler_Void_or_thread;
@@ -223,161 +219,6 @@ struct Scheduler_Control {
uint32_t name;
};
-#if defined(RTEMS_SMP)
-/**
- * @brief State to indicate potential help for other threads.
- *
- * @dot
- * digraph state {
- * y [label="HELP YOURSELF"];
- * ao [label="HELP ACTIVE OWNER"];
- * ar [label="HELP ACTIVE RIVAL"];
- *
- * y -> ao [label="obtain"];
- * y -> ar [label="wait for obtain"];
- * ao -> y [label="last release"];
- * ao -> r [label="wait for obtain"];
- * ar -> r [label="timeout"];
- * ar -> ao [label="timeout"];
- * }
- * @enddot
- */
-typedef enum {
- /**
- * @brief This scheduler node is solely used by the owner thread.
- *
- * This thread owns no resources using a helping protocol and thus does not
- * take part in the scheduler helping protocol. No help will be provided for
- * other thread.
- */
- SCHEDULER_HELP_YOURSELF,
-
- /**
- * @brief This scheduler node is owned by a thread actively owning a resource.
- *
- * This scheduler node can be used to help out threads.
- *
- * In case this scheduler node changes its state from ready to scheduled and
- * the thread executes using another node, then an idle thread will be
- * provided as a user of this node to temporarily execute on behalf of the
- * owner thread. Thus lower priority threads are denied access to the
- * processors of this scheduler instance.
- *
- * In case a thread actively owning a resource performs a blocking operation,
- * then an idle thread will be used also in case this node is in the
- * scheduled state.
- */
- SCHEDULER_HELP_ACTIVE_OWNER,
-
- /**
- * @brief This scheduler node is owned by a thread actively obtaining a
- * resource currently owned by another thread.
- *
- * This scheduler node can be used to help out threads.
- *
- * The thread owning this node is ready and will give away its processor in
- * case the thread owning the resource asks for help.
- */
- SCHEDULER_HELP_ACTIVE_RIVAL,
-
- /**
- * @brief This scheduler node is owned by a thread obtaining a
- * resource currently owned by another thread.
- *
- * This scheduler node can be used to help out threads.
- *
- * The thread owning this node is blocked.
- */
- SCHEDULER_HELP_PASSIVE
-} Scheduler_Help_state;
-#endif
-
-/**
- * @brief Scheduler node for per-thread data.
- */
-struct Scheduler_Node {
-#if defined(RTEMS_SMP)
- /**
- * @brief Chain node for usage in various scheduler data structures.
- *
- * Strictly this is the wrong place for this field since the data structures
- * to manage scheduler nodes belong to the particular scheduler
- * implementation. Currently all SMP scheduler implementations use chains.
- * The node is here to simplify things, just like the object node in the
- * thread control block. It may be replaced with a union to add a red-black
- * tree node in the future.
- */
- Chain_Node Node;
-
- /**
- * @brief The thread using this node.
- */
- Thread_Control *user;
-
- /**
- * @brief The help state of this node.
- */
- Scheduler_Help_state help_state;
-
- /**
- * @brief The thread owning this node.
- */
- Thread_Control *owner;
-
- /**
- * @brief The idle thread claimed by this node in case the help state is
- * SCHEDULER_HELP_ACTIVE_OWNER.
- *
- * Active owners will lend their own node to an idle thread in case they
- * execute currently using another node or in case they perform a blocking
- * operation. This is necessary to ensure the priority ceiling protocols
- * work across scheduler boundaries.
- */
- Thread_Control *idle;
-
- /**
- * @brief The thread accepting help by this node in case the help state is
- * not SCHEDULER_HELP_YOURSELF.
- */
- Thread_Control *accepts_help;
-#endif
-
- /**
- * @brief The thread priority information used by the scheduler.
- *
- * The thread priority is manifest in two independent areas. One area is the
- * user visible thread priority along with a potential thread queue. The
- * other is the scheduler. During a thread priority change, the user visible
- * thread priority and the thread queue are first updated and the thread
- * priority value here is changed. Once this is done the scheduler is
- * notified via the update priority operation, so that it can update its
- * internal state and honour a new thread priority value.
- */
- struct {
- /**
- * @brief The thread priority value of this scheduler node.
- *
- * The producer of this value is _Thread_Change_priority(). The consumer
- * is the scheduler via the unblock and update priority operations.
- */
- Priority_Control value;
-
-#if defined(RTEMS_SMP)
- /**
- * @brief Sequence lock to synchronize priority value updates.
- */
- SMP_sequence_lock_Control Lock;
-#endif
-
- /**
- * @brief In case a priority update is necessary and this is true, then
- * enqueue the thread as the first of its priority group, otherwise enqueue
- * the thread as the last of its priority group.
- */
- bool prepend_it;
- } Priority;
-};
-
/**
* @brief Registered schedulers.
*