diff options
Diffstat (limited to 'gcc/ada/s-taprop-hpux-dce.adb')
-rw-r--r-- | gcc/ada/s-taprop-hpux-dce.adb | 45 |
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); |