summaryrefslogtreecommitdiff
path: root/gcc/ada/s-taprop-hpux-dce.adb
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/ada/s-taprop-hpux-dce.adb')
-rw-r--r--gcc/ada/s-taprop-hpux-dce.adb45
1 files changed, 14 insertions, 31 deletions
diff --git a/gcc/ada/s-taprop-hpux-dce.adb b/gcc/ada/s-taprop-hpux-dce.adb
index 4efb4ec208a..5989c197a07 100644
--- a/gcc/ada/s-taprop-hpux-dce.adb
+++ b/gcc/ada/s-taprop-hpux-dce.adb
@@ -43,41 +43,32 @@ pragma Polling (Off);
with System.Tasking.Debug;
-- used for Known_Tasks
-with Interfaces.C;
--- used for int
--- size_t
-
with System.Interrupt_Management;
-- used for Keep_Unmasked
-- Abort_Task_Interrupt
-- Interrupt_ID
+pragma Warnings (Off);
with System.Interrupt_Management.Operations;
-- used for Set_Interrupt_Mask
-- All_Tasks_Mask
pragma Elaborate_All (System.Interrupt_Management.Operations);
+pragma Warnings (On);
+
+with System.OS_Primitives;
+-- used for Delay_Modes
+
+with Interfaces.C;
+-- used for int
+-- size_t
+
with System.Parameters;
-- used for Size_Type
with System.Task_Primitives.Interrupt_Operations;
-- used for Get_Interrupt_ID
-with System.Tasking;
--- used for Ada_Task_Control_Block
--- Task_Id
-
-with System.Soft_Links;
--- used for Defer/Undefer_Abort
-
--- Note that we do not use System.Tasking.Initialization directly since
--- this is a higher level package that we shouldn't depend on. For example
--- when using the restricted run time, it is replaced by
--- System.Tasking.Restricted.Stages.
-
-with System.OS_Primitives;
--- used for Delay_Modes
-
with Unchecked_Conversion;
with Unchecked_Deallocation;
@@ -91,7 +82,6 @@ package body System.Task_Primitives.Operations is
use System.OS_Primitives;
package PIO renames System.Task_Primitives.Interrupt_Operations;
- package SSL renames System.Soft_Links;
----------------
-- Local Data --
@@ -124,9 +114,6 @@ package body System.Task_Primitives.Operations is
-- is not implemented for DCE threads. The HPUX 10 port is at this
-- stage considered dead, and no further work is planned on it.
- FIFO_Within_Priorities : constant Boolean := Dispatching_Policy = 'F';
- -- Indicates whether FIFO_Within_Priorities is set
-
Foreign_Task_Elaborated : aliased Boolean := True;
-- Used to identified fake tasks (i.e., non-Ada Threads)
@@ -495,11 +482,6 @@ package body System.Task_Primitives.Operations is
Result : Interfaces.C.int;
begin
- -- The little window between deferring abort and locking Self_ID is the
- -- only reason to check for pending abort and priority change below!
-
- SSL.Abort_Defer.all;
-
if Single_Lock then
Lock_RTS;
end if;
@@ -550,7 +532,6 @@ package body System.Task_Primitives.Operations is
end if;
Result := sched_yield;
- SSL.Abort_Undefer.all;
end Timed_Delay;
---------------------
@@ -632,7 +613,7 @@ package body System.Task_Primitives.Operations is
Result := pthread_setschedparam
(T.Common.LL.Thread, SCHED_RR, Param'Access);
- elsif FIFO_Within_Priorities or else Time_Slice_Val = 0 then
+ elsif Dispatching_Policy = 'F' or else Time_Slice_Val = 0 then
Result := pthread_setschedparam
(T.Common.LL.Thread, SCHED_FIFO, Param'Access);
@@ -643,7 +624,7 @@ package body System.Task_Primitives.Operations is
pragma Assert (Result = 0);
- if FIFO_Within_Priorities then
+ if Dispatching_Policy = 'F' then
-- Annex D requirement [RM D.2.2 par. 9]:
-- If the task drops its priority due to the loss of inherited
@@ -1162,6 +1143,8 @@ package body System.Task_Primitives.Operations is
begin
Environment_Task_Id := Environment_Task;
+ Interrupt_Management.Initialize;
+
-- Initialize the lock used to synchronize chain of all ATCBs
Initialize_Lock (Single_RTS_Lock'Access, RTS_Lock_Level);