Reduced number of POSIX thread priorities from 255 to 254 to avoid conflicts

of lowest priority with the RTEMS IDLE thread.  This was causing the lowest
priority GNAT Ada task to never run.
This commit is contained in:
Joel Sherrill
1997-04-15 18:02:18 +00:00
parent c24fef3e90
commit 6881e0cb4b
6 changed files with 30 additions and 12 deletions

View File

@@ -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)

View File

@@ -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)

View File

@@ -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

View File

@@ -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

View File

@@ -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)

View File

@@ -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