diff options
Diffstat (limited to 'cpukit')
-rw-r--r-- | cpukit/posix/include/rtems/posix/priority.h | 8 | ||||
-rw-r--r-- | cpukit/posix/inline/rtems/posix/priority.inl | 6 |
2 files changed, 10 insertions, 4 deletions
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 |