summaryrefslogtreecommitdiffstats
path: root/cpukit/score/include/rtems/score/schedulerpriority.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/schedulerpriority.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/schedulerpriority.h')
-rw-r--r--cpukit/score/include/rtems/score/schedulerpriority.h50
1 files changed, 31 insertions, 19 deletions
diff --git a/cpukit/score/include/rtems/score/schedulerpriority.h b/cpukit/score/include/rtems/score/schedulerpriority.h
index 67ef6b9e93..162cb7011a 100644
--- a/cpukit/score/include/rtems/score/schedulerpriority.h
+++ b/cpukit/score/include/rtems/score/schedulerpriority.h
@@ -7,6 +7,7 @@
/*
* Copryight (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,11 +36,24 @@ extern "C" {
/**@{*/
/**
+ * Entry points for Scheduler Priority
+ */
+#define SCHEDULER_PRIORITY_ENTRY_POINTS \
+ { \
+ .initialize = _Scheduler_priority_Initialize, \
+ .schedule = _Scheduler_priority_Schedule, \
+ .yield = _Scheduler_priority_Yield, \
+ .block = _Scheduler_priority_Block, \
+ .unblock = _Scheduler_priority_Unblock, \
+ .scheduler_allocate = _Scheduler_priority_Thread_scheduler_allocate, \
+ .scheduler_free = _Scheduler_priority_Thread_scheduler_free, \
+ .scheduler_update = _Scheduler_priority_Thread_scheduler_update \
+ }
+
+/**
* This routine initializes the priority scheduler.
*/
-void _Scheduler_priority_Initialize(
- Scheduler_Control *the_scheduler
-);
+void _Scheduler_priority_Initialize(void);
/**
* This routine removes @a the_thread from the scheduling decision,
@@ -48,32 +62,27 @@ void _Scheduler_priority_Initialize(
* a new heir thread.
*/
void _Scheduler_priority_Block(
- Scheduler_Control *the_scheduler,
- Thread_Control *the_thread
+ Thread_Control *the_thread
);
/**
* This kernel routine sets the heir thread to be the next ready thread
* by invoking the_scheduler->ready_queue->operations->first().
*/
-void _Scheduler_priority_Schedule(
- Scheduler_Control *the_scheduler
-);
+void _Scheduler_priority_Schedule(void);
/**
* This routine allocates @a the_thread->scheduler.
*/
void * _Scheduler_priority_Thread_scheduler_allocate(
- Scheduler_Control *the_scheduler,
- Thread_Control *the_thread
+ Thread_Control *the_thread
);
/**
* This routine frees @a the_thread->scheduler.
*/
void _Scheduler_priority_Thread_scheduler_free(
- Scheduler_Control *the_scheduler,
- Thread_Control *the_thread
+ Thread_Control *the_thread
);
/**
@@ -81,8 +90,7 @@ void _Scheduler_priority_Thread_scheduler_free(
* structures and thread state
*/
void _Scheduler_priority_Thread_scheduler_update(
- Scheduler_Control *the_scheduler,
- Thread_Control *the_thread
+ Thread_Control *the_thread
);
/**
@@ -91,17 +99,21 @@ void _Scheduler_priority_Thread_scheduler_update(
* updates any appropriate scheduling variables, for example the heir thread.
*/
void _Scheduler_priority_Unblock(
- Scheduler_Control *the_scheduler,
- Thread_Control *the_thread
+ Thread_Control *the_thread
);
/**
* This routine is invoked when a thread wishes to voluntarily
* transfer control of the processor to another thread in the queue.
+ *
+ * This routine will remove the running THREAD from the ready queue
+ * and place it immediately at the rear of this chain. Reset timeslice
+ * and yield the processor functions both use this routine, therefore if
+ * reset is true and this is the only thread on the queue then the
+ * timeslice counter is reset. The heir THREAD will be updated if the
+ * running is also the currently the heir.
*/
-void _Scheduler_priority_Yield(
- Scheduler_Control *the_scheduler
-);
+void _Scheduler_priority_Yield( void );
#ifndef __RTEMS_APPLICATION__
#include <rtems/score/schedulerpriority.inl>