From 51e69f04c0161130375d97979e76cbfd0bd2d45e Mon Sep 17 00:00:00 2001 From: charlet Date: Mon, 5 Sep 2005 07:46:06 +0000 Subject: * a-calend-mingw.adb: Add call to OS_Primitives.Initialize; * s-taprop-mingw.adb, s-taprop-vms.adb, s-taprop-solaris.adb, s-taprop-os2.adb, s-taprop-irix-athread.adb, s-taprop-linux.adb, s-taprop-hpux-dce.adb, s-taprop-irix.adb, s-taprop-tru64.adb, s-taprop-lynxos.adb: Move with clauses outside Warnings Off now that dependent units are Preelaborate. (Initialize): Call Interrupt_Managemeent.Initialize and OS_Primitives.Initialize to ensure proper initialization of this unit. Remove use of System.Soft_Links Make this unit Preelaborate. * s-stache.ads, s-taspri-vxworks.ads, s-taspri-mingw.ads, s-taspri-vms.ads, s-tasinf-solaris.ads, s-taspri-os2.ads, s-taspri-lynxos.ads, s-taspri-hpux-dce.ads, s-taspri-tru64.ads, s-tasinf-tru64.ads, s-tasinf-irix.ads, s-tasinf-irix-athread.ads, s-proinf-irix-athread.adb, s-proinf-irix-athread.ads, s-tratas.ads, s-tasinf.ads: Minor reformatting. Add pragma Preelaborate, since these packages are suitable for this categorization. Update comments. * s-traent-vms.ads, s-intman-dummy.adb, s-taprop-dummy.adb: Make this unit Preelaborate. * s-osprim-vxworks.adb, s-osprim-vms.adb, s-osprim-vms.ads, s-osprim-mingw.adb, s-intman-vxworks.ads, s-intman-vxworks.adb, s-intman-vms.adb, s-intman-mingw.adb, s-intman-vms.ads, s-osprim-unix.adb, s-osprim-os2.adb, s-osprim-solaris.adb, s-intman-solaris.adb, s-intman-irix-athread.adb, s-intman-irix.adb: Mark this unit Preelaborate. (Initialize): New procedure. Update comments. * s-taspri-linux.ads: Removed. * s-tpopsp-solaris.adb (Initialize): Create the key in this procedure, as done by other implementations (e.g. posix). * s-taprop.ads (Timed_Delay): Update spec since the caller now is responsible for deferring abort. Mark this unit Preelaborate. * s-taprob.adb, s-tarest.adb: Call System.Tasking.Initialize to ensure proper initialization of the tasking run-time. * s-tasdeb.ads: Mark this unit Preelaborate. (Known_Tasks): Add explicit default value to avoid elaboration code. * s-inmaop-vms.adb (Elaboration code): Add call to Interrupt_Management.Initialize since the elaboration code depends on proper initialization of this package. * s-intman.ads, s-inmaop-posix.adb, s-intman-posix.adb, s-osprim.ads, s-taprop-posix.adb, s-taspri-posix.ads, s-osprim-posix.adb: Make this unit Preelaborate. * a-calend.adb: Add call to OS_Primitives.Initialize * a-elchha.adb: Update use of Except.Id.Full_Name. Minor reformatting. Remove use of Ada.Exceptions.Traceback when possible, cleaner. * a-dynpri.adb, a-sytaco.adb, a-sytaco.ads: Move with clauses outside Warnings Off now that dependent units are Preelaborate. Use raise xxx with "..."; Ada 2005 form. * a-taside.ads, a-taside.adb: Remove some dependencies, to make it easier to make this unit truly Preelaborate. Rewrite some code to be conformant with Preelaborate rules. * g-os_lib.adb: Remove non-preelaborate code so that this unit can be marked Preelaborate in the future. * s-proinf.ads, g-string.ads, s-auxdec.ads, s-auxdec-vms_64.ads: Make these units Preelaborate. * s-exctab.adb: Update use of Except.Id.Full_Name. * s-soflin.ads, s-soflin.adb: Mark this unit Preelaborate_05. (Set_Exc_Stack_Addr_Soft, Get_Exc_Stack_Addr_NT, Set_Exc_Stack_Addr_NT, Set_Exc_Stack_Addr): Removed, no longer used. Remove reference to *Machine_State_Addr*, no longer needed. * s-stalib.ads: Mark this unit as Preelaborate[_05]. (Exception_Data): Full_Name is now a System.Address so that this unit can be made Preelaborate. Clean up/simplify code thanks to Full_Name being a System.Address. Remove obsolete pragma Suppress (All_Checks), no longer needed. * s-taskin.ads, s-taskin.adb: Move with clauses outside Warnings Off now that dependent units are Preelaborate. Make this unit Preelaborate. (Initialize): New proceduure, replace elaboration code and makes the set up of the tasking run-time cleaner. (Detect_Blocking): Now a function instead of a deferred boolean, to obey Preelaborate rules. * s-tassta.adb (Finalize_Global_Tasks): Remove Get/Set_Exc_Stack_Addr soft links, no longer used. * s-traces.ads, s-traent.ads: Add pragma Preelaborate, since these packages are suitable for this categorization. * s-solita.adb: Replace use of Ada.Exception by raise xxx with "..." since we compile run-time sources in Ada 2005 mode. (Timed_Delay_T): Call Abort_Defer/Undefer around Timed_Delay, to avoid having s-taprop*.adb depend on s-soflin and to avoid code duplication. Remove reference to *Machine_State_Addr*, no longer needed. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@103847 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ada/a-dynpri.adb | 37 ++++++++++++------------------------- 1 file changed, 12 insertions(+), 25 deletions(-) (limited to 'gcc/ada/a-dynpri.adb') diff --git a/gcc/ada/a-dynpri.adb b/gcc/ada/a-dynpri.adb index 46a16a5df4c..a8acb2342b4 100644 --- a/gcc/ada/a-dynpri.adb +++ b/gcc/ada/a-dynpri.adb @@ -31,11 +31,6 @@ -- -- ------------------------------------------------------------------------------ -pragma Warnings (Off); --- Allow withing of non-Preelaborated units in Ada 2005 mode where this --- package will be categorized as Preelaborate. See AI-362 for details. --- It is safe in the context of the run-time to violate the rules! - with Ada.Task_Identification; -- used for Task_Id -- Current_Task @@ -52,26 +47,22 @@ with System.Task_Primitives.Operations; with System.Tasking; -- used for Task_Id -with Ada.Exceptions; --- used for Raise_Exception - -with System.Tasking.Initialization; --- used for Defer/Undefer_Abort - with System.Parameters; -- used for Single_Lock -with Unchecked_Conversion; +with System.Soft_Links; +-- use for Abort_Defer +-- Abort_Undefer -pragma Warnings (On); +with Unchecked_Conversion; package body Ada.Dynamic_Priorities is package STPO renames System.Task_Primitives.Operations; + package SSL renames System.Soft_Links; use System.Parameters; use System.Tasking; - use Ada.Exceptions; function Convert_Ids is new Unchecked_Conversion @@ -92,13 +83,11 @@ package body Ada.Dynamic_Priorities is begin if Target = Convert_Ids (Ada.Task_Identification.Null_Task_Id) then - Raise_Exception (Program_Error'Identity, - Error_Message & "null task"); + raise Program_Error with Error_Message & "null task"; end if; if Task_Identification.Is_Terminated (T) then - Raise_Exception (Tasking_Error'Identity, - Error_Message & "null task"); + raise Tasking_Error with Error_Message & "null task"; end if; return Target.Common.Base_Priority; @@ -121,16 +110,14 @@ package body Ada.Dynamic_Priorities is begin if Target = Convert_Ids (Ada.Task_Identification.Null_Task_Id) then - Raise_Exception (Program_Error'Identity, - Error_Message & "null task"); + raise Program_Error with Error_Message & "null task"; end if; if Task_Identification.Is_Terminated (T) then - Raise_Exception (Tasking_Error'Identity, - Error_Message & "terminated task"); + raise Tasking_Error with Error_Message & "terminated task"; end if; - Initialization.Defer_Abort (Self_ID); + SSL.Abort_Defer.all; if Single_Lock then STPO.Lock_RTS; @@ -148,7 +135,7 @@ package body Ada.Dynamic_Priorities is STPO.Unlock_RTS; end if; - -- Yield is needed to enforce FIFO task dispatching. + -- Yield is needed to enforce FIFO task dispatching -- LL Set_Priority is made while holding the RTS lock so that it -- is inheriting high priority until it release all the RTS locks. @@ -175,7 +162,7 @@ package body Ada.Dynamic_Priorities is end if; end if; - Initialization.Undefer_Abort (Self_ID); + SSL.Abort_Undefer.all; end Set_Priority; end Ada.Dynamic_Priorities; -- cgit v1.2.1