aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/lib-writ.ads
diff options
context:
space:
mode:
authorRobert Dewar <dewar@adacore.com>2006-10-31 18:49:53 +0100
committerArnaud Charlet <charlet@gcc.gnu.org>2006-10-31 18:49:53 +0100
commit3cb8344bd34b50012b5c43c7d34d01472f41e026 (patch)
tree374a7395bdca27ea31e5e0b8a2dcd982429143b4 /gcc/ada/lib-writ.ads
parent9b832db55cf50f7a6739a35ec9f190eccc1d2973 (diff)
downloadgcc-3cb8344bd34b50012b5c43c7d34d01472f41e026.zip
gcc-3cb8344bd34b50012b5c43c7d34d01472f41e026.tar.gz
gcc-3cb8344bd34b50012b5c43c7d34d01472f41e026.tar.bz2
a-dispat.ads, [...]: New files.
2006-10-31 Robert Dewar <dewar@adacore.com> Jose Ruiz <ruiz@adacore.com> * a-dispat.ads, a-diroro.ads, a-diroro.adb: New files. * ali.adb (Get_Name): Properly handle scanning of wide character names encoded with brackets notation. (Known_ALI_Lines): Add S lines to this list. (Scan_ALI): Acquire S (priority specific dispatching) lines. New flag Elaborate_All_Desirable in unit table * ali.ads (Priority_Specific_Dispatching): Add this range of identifiers to be used for Priority_Specific_Dispatching table entries. (ALIs_Record): Add First_Specific_Dispatching and Last_Specific_Dispatching that point to the first and last entries respectively in the priority specific dispatching table for this unit. (Specific_Dispatching): Add this table for storing each S (priority specific dispatching) line encountered in the input ALI file. New flag Elaborate_All_Desirable in unit table * bcheck.adb: (Check_Configuration_Consistency): Add call to Check_Consistent_Dispatching_Policy. (Check_Consistent_Dispatching_Policy): Add this procedure in charge of verifying that the use of Priority_Specific_Dispatching, Task_Dispatching_Policy, and Locking_Policy is consistent across the partition. * bindgen.adb: (Public_Version_Warning): function removed. (Set_PSD_Pragma_Table): Add this procedure in charge of getting the required information from ALI files in order to initialize the table containing the specific dispatching policy. (Gen_Adainit_Ada): Generate the variables required for priority specific dispatching entries (__gl_priority_specific_dispatching and __gl_num_specific_dispatching). (Gen_Adainit_C): Generate the variables required for priority specific dispatching entries (__gl_priority_specific_dispatching and __gl_num_specific_dispatching). (Gen_Output_File): Acquire settings for Priority_Specific_Dispatching pragma entries. (Gen_Restrictions_String_1, Gen_Restrictions_String_2): Removed. (Gen_Restrictions_Ada, Gen_Restrictions_C, Set_Boolean): New procedures. (Tab_To): Removed. (Gen_Output_File_Ada/_C): Set directly __gl_xxx variables instead of a call to gnat_set_globals. Generate a string containing settings from Priority_Specific_Dispatching pragma entries. (Gen_Object_Files_Options): Do not include the runtime libraries when pragma No_Run_Time is specified. * init.c (__gnat_install_handler, case FreeBSD): Use SA_SIGINFO, for consistency with s-intman-posix.adb. (__gnat_error_handler, case FreeBSD): Account for the fact that the handler is installed with SA_SIGINFO. (__gnat_adjust_context_for_raise, FreeBSD case): New function for FreeBSD ZCX support, copied from Linux version. Add MaRTE-specific definitions for the linux target. Redefine sigaction, sigfillset, and sigemptyset so the routines defined by MaRTE. (__gl_priority_specific_dispatching): Add this variable that stores the string containing priority specific dispatching policies in the partition. (__gl_num_specific_dispatching): Add this variable that indicates the highest priority for which a priority specific dispatching pragma applies. (__gnat_get_specific_dispatching): Add this routine that returns the priority specific dispatching policy, as set by a Priority_Specific_Dispatching pragma appearing anywhere in the current partition. The input argument is the priority number, and the result is the upper case first character of the policy name. (__gnat_set_globals): Now a dummy function. (__gnat_handle_vms_condition): Feed adjust_context_for_raise with mechargs instead of sigargs, as the latter can be retrieved from the former and sigargs is not what we want on ia64. (__gnat_adjust_context_for_raise, alpha-vms): Fetch sigargs from the mechargs argument. (__gnat_adjust_context_for_raise, ia64-vms): New function. (tasking_error): Remove unused symbol. (_abort_signal): Move this symbol to the IRIX specific part since this is the only target that uses this definition. (Check_Abort_Status): Move this symbol to the IRIX specific part since this is the only target that uses this definition. (Lock_Task): Remove unused symbol. (Unlock_Task): Remove unused symbol. * lib-writ.adb (Write_ALI): Output new S lines for Priority_Specific_Dispatching pragmas. Implement new flag BD for elaborate body desirable * lib-writ.ads: Document S lines for Priority Specific Dispatching. (Specific_Dispatching): Add this table for storing the entries corresponding to Priority_Specific_Dispatching pragmas. Document new BD flag for elaborate body desirable * par-prag.adb (Prag): Add Priority_Specific_Dispatching to the list of known pragmas. From-SVN: r118243
Diffstat (limited to 'gcc/ada/lib-writ.ads')
-rw-r--r--gcc/ada/lib-writ.ads60
1 files changed, 59 insertions, 1 deletions
diff --git a/gcc/ada/lib-writ.ads b/gcc/ada/lib-writ.ads
index 90737ed..0d4a160 100644
--- a/gcc/ada/lib-writ.ads
+++ b/gcc/ada/lib-writ.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2005, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2006, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -368,6 +368,26 @@ package Lib.Writ is
-- line number of the corresponding Interrupt_State pragma.
-- This is used in consistency messages.
+ -- -------------------------------------
+ -- -- S Priority Specific Dispatching --
+ -- -------------------------------------
+
+ -- S policy_identifier first_priority last_priority line-number
+
+ -- This line records information from a Priority_Specific_Dispatching
+ -- pragma. There is one line for each separate pragma, and if no such
+ -- pragmas are used, then no S lines are present.
+
+ -- The policy_identifier is the first character (upper case) of the
+ -- corresponding policy name (e.g. 'F' for FIFO_Within_Priorities).
+
+ -- The first_priority and last_priority fields define the range of
+ -- priorities to which the specified dispatching policy apply.
+
+ -- The line number is an unsigned decimal integer giving the
+ -- line number of the corresponding Priority_Specific_Dispatching
+ -- pragma. This is used in consistency messages.
+
----------------------------
-- Compilation Unit Lines --
----------------------------
@@ -403,6 +423,14 @@ package Lib.Writ is
-- The <<attributes>> are a series of two letter codes indicating
-- information about the unit:
--
+ -- BD Unit does not have pragma Elaborate_Body, but the elaboration
+ -- circuit has determined that it would be a good idea if this
+ -- pragma were present, since the body of the package contains
+ -- elaboration code that modifies one or more variables in the
+ -- visible part of the package. The binder will try, but does
+ -- not promise, to keep the elaboration of the body close to
+ -- the elaboration of the spec.
+ --
-- DE Dynamic Elaboration. This unit was compiled with the
-- dynamic elaboration model, as set by either the -gnatE
-- switch or pragma Elaboration_Checks (Dynamic).
@@ -643,6 +671,36 @@ package Lib.Writ is
Table_Increment => 200,
Table_Name => "Name_Interrupt_States");
+ -- The table structure defined here stores one entry for each
+ -- Priority_Specific_Dispatching pragma encountered either in the main
+ -- source or in an ancillary with'ed source. Since
+ -- have to be consistent across all units in a partition, we may
+ -- as well detect inconsistencies at compile time when we can.
+
+ type Specific_Dispatching_Entry is record
+ Dispatching_Policy : Character;
+ -- First character (upper case) of the corresponding policy name
+
+ First_Priority : Nat;
+ -- Lower bound of the priority range to which the specified dispatching
+ -- policy applies.
+
+ Last_Priority : Nat;
+ -- Upper bound of the priority range to which the specified dispatching
+ -- policy applies.
+
+ Pragma_Loc : Source_Ptr;
+ -- Location of pragma setting this value in place
+ end record;
+
+ package Specific_Dispatching is new Table.Table (
+ Table_Component_Type => Specific_Dispatching_Entry,
+ Table_Index_Type => Nat,
+ Table_Low_Bound => 1,
+ Table_Initial => 10,
+ Table_Increment => 100,
+ Table_Name => "Name_Priority_Specific_Dispatching");
+
-----------------
-- Subprograms --
-----------------