diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2011-09-01 18:13:54 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2011-09-01 18:13:54 +0000 |
commit | ac9d2ecc46ea40b6da0ccaeeabd16e8c19ff47e0 (patch) | |
tree | 4f87d546461e9cc7cfd18ccc187073161fb333b7 /cpukit/score/include/rtems/score/scheduler.h | |
parent | 2011-09-01 Sebastian Huber <sebastian.huber@embedded-brains.de> (diff) | |
download | rtems-ac9d2ecc46ea40b6da0ccaeeabd16e8c19ff47e0.tar.bz2 |
2011-09-01 Petr Benes <benesp16@fel.cvut.cz>
PR 1895/cpukit
* rtems/src/ratemoncancel.c, rtems/src/ratemondelete.c,
rtems/src/ratemonperiod.c, sapi/include/confdefs.h,
score/Makefile.am, score/include/rtems/score/scheduler.h,
score/include/rtems/score/schedulerpriority.h,
score/include/rtems/score/schedulersimple.h,
score/include/rtems/score/schedulersimplesmp.h,
score/inline/rtems/score/scheduler.inl,
score/inline/rtems/score/schedulerpriority.inl,
score/src/coremutexseize.c: Add priority_compare and release_job
hooks interfaces to scheduler interface.
* score/src/schedulerpriorityprioritycompare.c,
score/src/schedulerpriorityreleasejob.c: New files.
Diffstat (limited to 'cpukit/score/include/rtems/score/scheduler.h')
-rw-r--r-- | cpukit/score/include/rtems/score/scheduler.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/cpukit/score/include/rtems/score/scheduler.h b/cpukit/score/include/rtems/score/scheduler.h index 26ccdc9a6a..f899391128 100644 --- a/cpukit/score/include/rtems/score/scheduler.h +++ b/cpukit/score/include/rtems/score/scheduler.h @@ -77,8 +77,18 @@ typedef struct { /** extract a thread from the ready set */ void ( *extract )(Thread_Control *); + /** + * Compares two priorities (returns >0 for higher priority, 0 for equal + * and <0 for lower priority). + */ + int ( *priority_compare )(Priority_Control, Priority_Control); + + /** This routine is called upon release of a new job. */ + void ( *release_job ) (Thread_Control *, uint32_t); + /** perform scheduler update actions required at each clock tick */ void ( *tick )(void); + } Scheduler_Operations; /** @@ -107,6 +117,20 @@ typedef struct { extern Scheduler_Control _Scheduler; /** + * Macro testing whether @a p1 has lower priority than @a p2 + * in the intuitive sense of priority. + */ +#define _Scheduler_Is_priority_lower_than( _p1, _p2 ) \ + (_Scheduler_Priority_compare(_p1,_p2) < 0) + +/** + * Macro testing whether @a p1 has higher priority than @a p2 + * in the intuitive sense of priority. + */ +#define _Scheduler_Is_priority_higher_than( _p1, _p2 ) \ + (_Scheduler_Priority_compare(_p1,_p2) > 0) + +/** * This routine initializes the scheduler to the policy chosen by the user * through confdefs, or to the priority scheduler with ready chains by * default. |