summaryrefslogtreecommitdiffstats
path: root/cpukit/score/inline/rtems/score
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2011-09-01 18:13:54 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2011-09-01 18:13:54 +0000
commitac9d2ecc46ea40b6da0ccaeeabd16e8c19ff47e0 (patch)
tree4f87d546461e9cc7cfd18ccc187073161fb333b7 /cpukit/score/inline/rtems/score
parent2011-09-01 Sebastian Huber <sebastian.huber@embedded-brains.de> (diff)
downloadrtems-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/inline/rtems/score')
-rw-r--r--cpukit/score/inline/rtems/score/scheduler.inl26
-rw-r--r--cpukit/score/inline/rtems/score/schedulerpriority.inl17
2 files changed, 43 insertions, 0 deletions
diff --git a/cpukit/score/inline/rtems/score/scheduler.inl b/cpukit/score/inline/rtems/score/scheduler.inl
index cc0a79614a..0a60928565 100644
--- a/cpukit/score/inline/rtems/score/scheduler.inl
+++ b/cpukit/score/inline/rtems/score/scheduler.inl
@@ -159,6 +159,32 @@ RTEMS_INLINE_ROUTINE void _Scheduler_Extract(
_Scheduler.Operations.extract( the_thread );
}
+/**
+ * @brief Scheduler Priority compare
+ *
+ * This routine compares two priorities.
+ */
+RTEMS_INLINE_ROUTINE int _Scheduler_Priority_compare(
+ Priority_Control p1,
+ Priority_Control p2
+)
+{
+ return _Scheduler.Operations.priority_compare(p1, p2);
+}
+
+/**
+ * @brief Scheduler Release job
+ *
+ * This routine is called when a new period of task is issued.
+ */
+RTEMS_INLINE_ROUTINE void _Scheduler_Release_job(
+ Thread_Control *the_thread,
+ uint32_t length
+)
+{
+ _Scheduler.Operations.release_job(the_thread, length);
+}
+
/** @brief Scheduler Method Invoked at Each Clock Tick
*
* This method is invoked at each clock tick to allow the scheduler
diff --git a/cpukit/score/inline/rtems/score/schedulerpriority.inl b/cpukit/score/inline/rtems/score/schedulerpriority.inl
index ab5f117334..9b418fc7ae 100644
--- a/cpukit/score/inline/rtems/score/schedulerpriority.inl
+++ b/cpukit/score/inline/rtems/score/schedulerpriority.inl
@@ -185,6 +185,23 @@ RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body(void)
);
}
+/**
+ * @brief Scheduler priority Priority compare body
+ *
+ * This routine implements priority comparison for priority-based
+ * scheduling.
+ *
+ * @return >0 for higher priority, 0 for equal and <0 for lower priority.
+ */
+RTEMS_INLINE_ROUTINE int _Scheduler_priority_Priority_compare_body(
+ Priority_Control p1,
+ Priority_Control p2
+)
+{
+ /* High priority in priority scheduler is represented by low numbers. */
+ return ( p2 - p1 );
+}
+
/**@}*/
#endif