aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPatrick Bernardi <bernardi@adacore.com>2021-11-03 17:55:50 -0400
committerPierre-Marie de Rodat <derodat@adacore.com>2021-11-10 08:57:41 +0000
commit301526488738f16fa1018a2f1c9ce3138ecdf2cb (patch)
tree808ac0a89503130b0299f048ba2b253d69b1c59a /gcc
parentbbe3c88351bc98a9866720e03ef76e8caf516461 (diff)
downloadgcc-301526488738f16fa1018a2f1c9ce3138ecdf2cb.zip
gcc-301526488738f16fa1018a2f1c9ce3138ecdf2cb.tar.gz
gcc-301526488738f16fa1018a2f1c9ce3138ecdf2cb.tar.bz2
[Ada] Do not assume a priority value of zero is a valid priority
gcc/ada/ * libgnarl/s-taskin.adb (Initialize_ATCB): Initialize T.Common.Current_Priority to Priority'First. * libgnarl/s-taskin.ads (Unspecified_Priority): Redefined as -1. * libgnat/system-rtems.ads: Start priority range from 1, as 0 is reserved by the operating system.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/libgnarl/s-taskin.adb2
-rw-r--r--gcc/ada/libgnarl/s-taskin.ads5
-rw-r--r--gcc/ada/libgnat/system-rtems.ads8
3 files changed, 8 insertions, 7 deletions
diff --git a/gcc/ada/libgnarl/s-taskin.adb b/gcc/ada/libgnarl/s-taskin.adb
index ab50af1..1e6f42d 100644
--- a/gcc/ada/libgnarl/s-taskin.adb
+++ b/gcc/ada/libgnarl/s-taskin.adb
@@ -127,7 +127,7 @@ package body System.Tasking is
end if;
pragma Assert (T.Common.Domain /= null);
- T.Common.Current_Priority := 0;
+ T.Common.Current_Priority := Priority'First;
T.Common.Protected_Action_Nesting := 0;
T.Common.Call := null;
T.Common.Task_Arg := Task_Arg;
diff --git a/gcc/ada/libgnarl/s-taskin.ads b/gcc/ada/libgnarl/s-taskin.ads
index cf560b5..1751553 100644
--- a/gcc/ada/libgnarl/s-taskin.ads
+++ b/gcc/ada/libgnarl/s-taskin.ads
@@ -773,7 +773,10 @@ package System.Tasking is
-- Priority info --
-------------------
- Unspecified_Priority : constant Integer := System.Priority'First - 1;
+ Unspecified_Priority : constant Integer := -1;
+ -- Indicates that a task has an unspecified priority. This is hardcoded as
+ -- -1 rather than System.Priority'First - 1 as the value needs to be used
+ -- in init.c to specify that the main task has no specified priority.
Priority_Not_Boosted : constant Integer := System.Priority'First - 1;
-- Definition of Priority actually has to come from the RTS configuration
diff --git a/gcc/ada/libgnat/system-rtems.ads b/gcc/ada/libgnat/system-rtems.ads
index c083cb5..77423d3 100644
--- a/gcc/ada/libgnat/system-rtems.ads
+++ b/gcc/ada/libgnat/system-rtems.ads
@@ -109,15 +109,13 @@ package System is
-- hardware priority levels. Protected Object ceilings can
-- override these values.
-- 245 is used by the Interrupt_Manager task
- -- 0 is reserved for the RTEMS IDLE task and really should not
- -- be accessible from Ada but GNAT initializes
- -- Current_Priority to 0 so it must be valid
+ -- 0 is reserved for the RTEMS IDLE task
Max_Priority : constant Positive := 244;
Max_Interrupt_Priority : constant Positive := 254;
- subtype Any_Priority is Integer range 0 .. 254;
- subtype Priority is Any_Priority range 0 .. 244;
+ subtype Any_Priority is Integer range 1 .. 254;
+ subtype Priority is Any_Priority range 1 .. 244;
subtype Interrupt_Priority is Any_Priority range 245 .. 254;
Default_Priority : constant Priority := 122;