summaryrefslogtreecommitdiffstats
path: root/cpukit/score/include/rtems/score/scheduler.h
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2011-02-17 22:21:44 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2011-02-17 22:21:44 +0000
commit010192dd9fcfe40b82ca7595a732ed3ffbe9fdc1 (patch)
tree0bf11736eba94f9f997f0aaa7a59d97d3cb4470f /cpukit/score/include/rtems/score/scheduler.h
parent2011-02-17 Joel Sherrill <joel.sherrill@oarcorp.com> (diff)
downloadrtems-010192dd9fcfe40b82ca7595a732ed3ffbe9fdc1.tar.bz2
2011-02-17 Joel Sherrill <joel.sherrill@oarcorp.com>
* sapi/include/confdefs.h, sapi/include/rtems/config.h, score/include/rtems/score/scheduler.h, score/include/rtems/score/schedulerpriority.h, score/inline/rtems/score/scheduler.inl, score/inline/rtems/score/schedulerpriority.inl, score/src/scheduler.c, score/src/schedulerpriority.c, score/src/schedulerpriorityblock.c, score/src/schedulerpriorityschedule.c, score/src/schedulerprioritythreadschedulerallocate.c, score/src/schedulerprioritythreadschedulerfree.c, score/src/schedulerprioritythreadschedulerupdate.c, score/src/schedulerpriorityunblock.c, score/src/schedulerpriorityyield.c, score/src/threadchangepriority.c, score/src/threadclearstate.c, score/src/threadclose.c, score/src/threadinitialize.c, score/src/threadready.c, score/src/threadresume.c, score/src/threadsetpriority.c, score/src/threadsetstate.c, score/src/threadsuspend.c: Simplify the pluggable scheduler interface. Its configuration made a table of available schedulers and set a pointer to one of the. This was heavy handed since you can only use one scheduler in an application. This configuration mechanism resulted in a scheduler pointer being passed around when you could put all scheduler configuration in an initialized structure.
Diffstat (limited to 'cpukit/score/include/rtems/score/scheduler.h')
-rw-r--r--cpukit/score/include/rtems/score/scheduler.h36
1 files changed, 15 insertions, 21 deletions
diff --git a/cpukit/score/include/rtems/score/scheduler.h b/cpukit/score/include/rtems/score/scheduler.h
index 391dc92992..2ca6c4a0fe 100644
--- a/cpukit/score/include/rtems/score/scheduler.h
+++ b/cpukit/score/include/rtems/score/scheduler.h
@@ -7,6 +7,7 @@
/*
* Copyright (C) 2010 Gedare Bloom.
+ * Copyright (C) 2011 On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
@@ -35,15 +36,6 @@ extern "C" {
*/
/**@{*/
-/*
- * These defines are used to set the scheduler_policy value. The values
- * must correspond directly with the order of the fields in the scheduler
- * table (Scheduler_Table_entry), because the Configuration.scheduler_policy
- * field is used to index the scheduler table.
- */
-#define _Scheduler_USER (0)
-#define _Scheduler_PRIORITY (1)
-
typedef struct Scheduler_Control_struct Scheduler_Control;
/*
@@ -54,9 +46,6 @@ typedef struct {
void ( *scheduler_init )( Scheduler_Control * );
} Scheduler_Table_entry;
-/* instantiated and initialized in confdefs.h */
-extern const Scheduler_Table_entry _Scheduler_Table[];
-
/**
* The following Scheduler_Per_thread_xxx structures are used to
* hold per-thread data used by the scheduler. Thread_Control->scheduler is a
@@ -82,26 +71,29 @@ typedef struct {
*/
typedef struct {
/** Implements the scheduling decision logic (policy). */
- void ( *schedule ) ( Scheduler_Control * );
+ void ( *initialize )(void);
+
+ /** Implements the scheduling decision logic (policy). */
+ void ( *schedule )(void);
/** Voluntarily yields the processor per the scheduling policy. */
- void ( *yield ) ( Scheduler_Control * );
+ void ( *yield )(void);
/** Removes the given thread from scheduling decisions. */
- void ( *block ) ( Scheduler_Control *, Thread_Control * );
+ void ( *block )(Thread_Control *);
/** Adds the given thread to scheduling decisions. */
- void ( *unblock ) ( Scheduler_Control *, Thread_Control * );
+ void ( *unblock )(Thread_Control *);
/** allocates the scheduler field of the given thread */
- void * ( *scheduler_allocate ) ( Scheduler_Control *, Thread_Control * );
+ void * ( *scheduler_allocate )(Thread_Control *);
/** frees the scheduler field of the given thread */
- void ( *scheduler_free ) ( Scheduler_Control *, Thread_Control * );
+ void ( *scheduler_free )(Thread_Control *);
/** updates the scheduler field of the given thread -- primarily used
* when changing the thread's priority. */
- void ( *scheduler_update ) ( Scheduler_Control *, Thread_Control * );
+ void ( *scheduler_update )(Thread_Control *);
} Scheduler_Operations;
/**
@@ -123,7 +115,7 @@ struct Scheduler_Control_struct {
} Ready_queues;
/** The jump table for scheduler-specific functions */
- Scheduler_Operations Operations;
+ Scheduler_Operations Operations;
};
/**
@@ -131,8 +123,10 @@ struct Scheduler_Control_struct {
* scheduler.
*
* @note Can we make this per-cpu? then _Scheduler will be a macro.
+ *
+ * @note This is instantiated and initialized in confdefs.h.
*/
-SCORE_EXTERN Scheduler_Control _Scheduler;
+extern Scheduler_Control _Scheduler;
/**
* This routine initializes the scheduler to the policy chosen by the user