forked from Imagelibrary/rtems
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:
@@ -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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user