summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--c/src/exec/posix/headers/priority.h8
-rw-r--r--c/src/exec/posix/include/rtems/posix/priority.h8
-rw-r--r--c/src/exec/posix/inline/priority.inl6
-rw-r--r--c/src/exec/posix/inline/rtems/posix/priority.inl6
-rw-r--r--cpukit/posix/include/rtems/posix/priority.h8
-rw-r--r--cpukit/posix/inline/rtems/posix/priority.inl6
6 files changed, 30 insertions, 12 deletions
diff --git a/c/src/exec/posix/headers/priority.h b/c/src/exec/posix/headers/priority.h
index ce925b6d58..c0253f3bab 100644
--- a/c/src/exec/posix/headers/priority.h
+++ b/c/src/exec/posix/headers/priority.h
@@ -15,9 +15,15 @@
* "Numericallly higher values represent higher priorities."
*
* Thus, RTEMS Core has priorities run in the opposite sense of the POSIX API.
+ *
+ * There are only 254 posix priority levels since a task at priority level
+ * 255 would never run because of the RTEMS idle task. This is necessary
+ * because GNAT maps the lowest Ada task priority to the lowest thread
+ * priority. The lowest priority Ada task should get to run, so there is
+ * a fundamental conflict with having 255 priorities.
*/
-#define POSIX_SCHEDULER_MAXIMUM_PRIORITY (255)
+#define POSIX_SCHEDULER_MAXIMUM_PRIORITY (254)
#define POSIX_SCHEDULER_MINIMUM_PRIORITY (1)
diff --git a/c/src/exec/posix/include/rtems/posix/priority.h b/c/src/exec/posix/include/rtems/posix/priority.h
index ce925b6d58..c0253f3bab 100644
--- a/c/src/exec/posix/include/rtems/posix/priority.h
+++ b/c/src/exec/posix/include/rtems/posix/priority.h
@@ -15,9 +15,15 @@
* "Numericallly higher values represent higher priorities."
*
* Thus, RTEMS Core has priorities run in the opposite sense of the POSIX API.
+ *
+ * There are only 254 posix priority levels since a task at priority level
+ * 255 would never run because of the RTEMS idle task. This is necessary
+ * because GNAT maps the lowest Ada task priority to the lowest thread
+ * priority. The lowest priority Ada task should get to run, so there is
+ * a fundamental conflict with having 255 priorities.
*/
-#define POSIX_SCHEDULER_MAXIMUM_PRIORITY (255)
+#define POSIX_SCHEDULER_MAXIMUM_PRIORITY (254)
#define POSIX_SCHEDULER_MINIMUM_PRIORITY (1)
diff --git a/c/src/exec/posix/inline/priority.inl b/c/src/exec/posix/inline/priority.inl
index cbe340b35a..dc8187d4ef 100644
--- a/c/src/exec/posix/inline/priority.inl
+++ b/c/src/exec/posix/inline/priority.inl
@@ -17,21 +17,21 @@ RTEMS_INLINE_ROUTINE boolean _POSIX_Priority_Is_valid(
int priority
)
{
- return (boolean) (priority >= 1 && priority <= 255);
+ return (boolean) (priority >= 1 && priority <= 254);
}
RTEMS_INLINE_ROUTINE Priority_Control _POSIX_Priority_To_core(
int priority
)
{
- return (Priority_Control) (256 - priority);
+ return (Priority_Control) (255 - priority);
}
RTEMS_INLINE_ROUTINE int _POSIX_Priority_From_core(
Priority_Control priority
)
{
- return 256 - priority;
+ return 255 - priority;
}
#endif
diff --git a/c/src/exec/posix/inline/rtems/posix/priority.inl b/c/src/exec/posix/inline/rtems/posix/priority.inl
index cbe340b35a..dc8187d4ef 100644
--- a/c/src/exec/posix/inline/rtems/posix/priority.inl
+++ b/c/src/exec/posix/inline/rtems/posix/priority.inl
@@ -17,21 +17,21 @@ RTEMS_INLINE_ROUTINE boolean _POSIX_Priority_Is_valid(
int priority
)
{
- return (boolean) (priority >= 1 && priority <= 255);
+ return (boolean) (priority >= 1 && priority <= 254);
}
RTEMS_INLINE_ROUTINE Priority_Control _POSIX_Priority_To_core(
int priority
)
{
- return (Priority_Control) (256 - priority);
+ return (Priority_Control) (255 - priority);
}
RTEMS_INLINE_ROUTINE int _POSIX_Priority_From_core(
Priority_Control priority
)
{
- return 256 - priority;
+ return 255 - priority;
}
#endif
diff --git a/cpukit/posix/include/rtems/posix/priority.h b/cpukit/posix/include/rtems/posix/priority.h
index ce925b6d58..c0253f3bab 100644
--- a/cpukit/posix/include/rtems/posix/priority.h
+++ b/cpukit/posix/include/rtems/posix/priority.h
@@ -15,9 +15,15 @@
* "Numericallly higher values represent higher priorities."
*
* Thus, RTEMS Core has priorities run in the opposite sense of the POSIX API.
+ *
+ * There are only 254 posix priority levels since a task at priority level
+ * 255 would never run because of the RTEMS idle task. This is necessary
+ * because GNAT maps the lowest Ada task priority to the lowest thread
+ * priority. The lowest priority Ada task should get to run, so there is
+ * a fundamental conflict with having 255 priorities.
*/
-#define POSIX_SCHEDULER_MAXIMUM_PRIORITY (255)
+#define POSIX_SCHEDULER_MAXIMUM_PRIORITY (254)
#define POSIX_SCHEDULER_MINIMUM_PRIORITY (1)
diff --git a/cpukit/posix/inline/rtems/posix/priority.inl b/cpukit/posix/inline/rtems/posix/priority.inl
index cbe340b35a..dc8187d4ef 100644
--- a/cpukit/posix/inline/rtems/posix/priority.inl
+++ b/cpukit/posix/inline/rtems/posix/priority.inl
@@ -17,21 +17,21 @@ RTEMS_INLINE_ROUTINE boolean _POSIX_Priority_Is_valid(
int priority
)
{
- return (boolean) (priority >= 1 && priority <= 255);
+ return (boolean) (priority >= 1 && priority <= 254);
}
RTEMS_INLINE_ROUTINE Priority_Control _POSIX_Priority_To_core(
int priority
)
{
- return (Priority_Control) (256 - priority);
+ return (Priority_Control) (255 - priority);
}
RTEMS_INLINE_ROUTINE int _POSIX_Priority_From_core(
Priority_Control priority
)
{
- return 256 - priority;
+ return 255 - priority;
}
#endif