6e937c1c5c
2004-02-02 Vincent Celier <celier@gnat.com> * gprcmd.adb (Check_Args): If condition is false, print the invoked comment before the usage. Gprcmd: Fail when command is not recognized. (Usage): Document command "prefix" * g-md5.adb (Digest): Process last block. (Update): Do not process last block. Store remaining characters and length in Context. * g-md5.ads (Update): Document that several call to update are equivalent to one call with the concatenated string. (Context): Add fields to allow new Update behaviour. * fname-uf.ads/adb (Get_File_Name): New Boolean parameter May_Fail, defaulted to False. When May_Fail is True and no existing file can be found, return No_File. * 6vcstrea.adb: Inlined functions are now wrappers to implementation functions. * lib-writ.adb (Write_With_Lines): When body file does not exist, use spec file name instead on the W line. 2004-02-02 Robert Dewar <dewar@gnat.com> * ali.adb: Read and acquire info from new format restrictions lines * bcheck.adb: Add circuits for checking restrictions with parameters * bindgen.adb: Output dummy restrictions data To be changed later * ali.ads, checks.adb, exp_aggr.adb, exp_attr.adb, exp_ch11.adb, exp_ch3.adb, exp_ch5.adb, exp_ch6.adb, exp_ch7.adb, exp_util.adb, freeze.adb, gnat1drv.adb, sem_attr.adb, sem_ch10.adb, sem_ch11.adb, sem_ch12.adb, targparm.adb, targparm.ads, tbuild.adb, sem_ch2.adb, sem_elab.adb, sem_res.adb: Minor changes for new restrictions handling. * exp_ch9.adb (Build_Master_Entity): Cleanup the code (also suppresses the warning message on access to possibly uninitialized variable S) Minor changes for new restrictions handling. * gnatbind.adb: Minor reformatting Minor changes for new restrictions handling Move circuit for -r processing here from bcheck (cleaner) * gnatcmd.adb, gnatlink.adb: Minor reformatting * lib-writ.adb: Output new format restrictions lines * lib-writ.ads: Document new R format lines for new restrictions handling. * s-restri.ads/adb: New files * Makefile.rtl: Add entry for s-restri.ads/adb * par-ch3.adb: Fix bad error messages starting with upper case letter Minor reformatting * restrict.adb: Major rewrite throughout for new restrictions handling Major point is to handle restrictions with parameters * restrict.ads: Major changes in interface to handle restrictions with parameters. Also generally simplifies setting of restrictions. * snames.ads/adb: New entry for proper handling of No_Requeue * sem_ch3.adb (Count_Tasks): New circuitry for implementing Max_Tasks restriction counting. Other minor changes for new restrictions handling * sem_prag.adb: No_Requeue is a synonym for No_Requeue_Statements. Restriction_Warnings now allows full parameter notation Major rewrite of Restrictions for new restrictions handling 2004-02-02 Javier Miranda <miranda@gnat.com> * par-ch3.adb (P_Identifier_Declarations): Give support to the Ada 0Y syntax rule for object renaming declarations. (P_Array_Type_Definition): Give support for the Ada 0Y syntax rule for component definitions. * sem_ch3.adb (Analyze_Component_Declaration): Give support to access components. (Array_Type_Declaration): Give support to access components. In addition it was also modified to reflect the name of the object in anonymous array types. The old code did not take into account that it is possible to have an unconstrained anonymous array with an initial value. (Check_Or_Process_Discriminants): Allow access discriminant in non-limited types. (Process_Discriminants): Allow access discriminant in non-limited types Initialize the new Access_Definition field in N_Object_Renaming_Decl node. Change Ada0Y to Ada 0Y in comments * sem_ch4.adb (Find_Equality_Types): Allow anonymous access types in equality operators. Change Ada0Y to Ada 0Y in comments * sem_ch8.adb (Analyze_Object_Renaming): Give support to access renamings Change Ada0Y to Ada 0Y in comments * sem_type.adb (Find_Unique_Type): Give support to the equality operators for universal access types Change Ada0Y to Ada 0Y in comments * sinfo.adb (Access_Definition, Set_Access_Definition): New subprograms * sinfo.ads (N_Component_Definition): Addition of Access_Definition field. (N_Object_Renaming_Declaration): Addition of Access_Definition field Change Ada0Y to Ada 0Y in comments * sprint.adb (Sprint_Node_Actual): Give support to the new syntax for component definition and object renaming nodes Change Ada0Y to Ada 0Y in comments 2004-02-02 Jose Ruiz <ruiz@act-europe.fr> * restrict.adb: Use the new restriction identifier No_Requeue_Statements instead of the old No_Requeue for defining the restricted profile. * sem_ch9.adb (Analyze_Requeue): Check the new restriction No_Requeue_Statements. * s-rident.ads: Adding restriction No_Requeue_Statements (AI-00249) that supersedes the GNAT specific restriction No_Requeue. The later is kept for backward compatibility. 2004-02-02 Ed Schonberg <schonberg@gnat.com> * lib.ads, i-cobol.ads, * s-stoele.ads, s-thread.ads, style.ads, 5staprop.adb, atree.adb, atree.ads, g-crc32.ads: Remove redundant pragma and fix incorrect ones. * sem_prag.adb For pragma Inline and pragma Pure_Function, emit a warning if the pragma is redundant. 2004-02-02 Thomas Quinot <quinot@act-europe.fr> * 5staprop.adb: Add missing 'constant' keywords. * Makefile.in: use consistent value for SYMLIB on platforms where libaddr2line is supported. 2004-02-02 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> * utils.c (end_subprog_body): Do not call rest_of_compilation if just annotating types. 2004-02-02 Olivier Hainque <hainque@act-europe.fr> * init.c (__gnat_install_handler): Setup an alternate stack for signal handlers in the environment thread. This allows proper propagation of an exception on stack overflows in this thread even when the builtin ABI stack-checking scheme is used without support for a stack reserve region. * utils.c (create_field_decl): Augment the head comment about bitfield creation, and don't account for DECL_BIT_FIELD in DECL_NONADDRESSABLE_P here, because the former is not accurate enough at this point. Let finish_record_type decide instead. Don't make a bitfield if the field is to be addressable. Always set a size for the field if the record is packed, to ensure the checks for bitfield creation are triggered. (finish_record_type): During last pass over the fields, clear DECL_BIT_FIELD when possible in the !STRICT_ALIGNMENT case, as this is not covered by the calls to layout_decl. Adjust DECL_NONADDRESSABLE_P from DECL_BIT_FIELD. From-SVN: r77110
147 lines
5.8 KiB
Ada
147 lines
5.8 KiB
Ada
------------------------------------------------------------------------------
|
|
-- --
|
|
-- GNAT COMPILER COMPONENTS --
|
|
-- --
|
|
-- S Y S T E M . T H R E A D S --
|
|
-- --
|
|
-- S p e c --
|
|
-- --
|
|
-- Copyright (C) 1992-2004 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- --
|
|
-- ware Foundation; either version 2, or (at your option) any later ver- --
|
|
-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
|
|
-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
|
|
-- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License --
|
|
-- for more details. You should have received a copy of the GNU General --
|
|
-- Public License distributed with GNAT; see file COPYING. If not, write --
|
|
-- to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, --
|
|
-- MA 02111-1307, USA. --
|
|
-- --
|
|
-- As a special exception, if other files instantiate generics from this --
|
|
-- unit, or you link this unit with other files to produce an executable, --
|
|
-- this unit does not by itself cause the resulting executable to be --
|
|
-- covered by the GNU General Public License. This exception does not --
|
|
-- however invalidate any other reasons why the executable file might be --
|
|
-- covered by the GNU Public License. --
|
|
-- --
|
|
-- GNAT was originally developed by the GNAT team at New York University. --
|
|
-- Extensive contributions were provided by Ada Core Technologies Inc. --
|
|
-- --
|
|
------------------------------------------------------------------------------
|
|
|
|
-- This package provides facilities to register a thread to the runtime,
|
|
-- and allocate its task specific datas.
|
|
|
|
-- pragma Thread_Body is currently supported for:
|
|
-- VxWorks AE653 with the restricted / cert runtime
|
|
|
|
with Ada.Exceptions;
|
|
-- used for Exception_Occurrence
|
|
|
|
with System.Soft_Links;
|
|
-- used for TSD
|
|
|
|
package System.Threads is
|
|
|
|
subtype EO is Ada.Exceptions.Exception_Occurrence;
|
|
|
|
subtype EOA is Ada.Exceptions.Exception_Occurrence_Access;
|
|
|
|
type ATSD is limited private;
|
|
-- Type of the Ada thread specific data. It contains datas needed
|
|
-- by the GNAT runtime.
|
|
|
|
type ATSD_Access is access ATSD;
|
|
|
|
-- Get/Set for the attributes of the current thread
|
|
|
|
function Get_Jmpbuf_Address return Address;
|
|
pragma Inline (Get_Jmpbuf_Address);
|
|
|
|
procedure Set_Jmpbuf_Address (Addr : Address);
|
|
pragma Inline (Set_Jmpbuf_Address);
|
|
|
|
function Get_Sec_Stack_Addr return Address;
|
|
pragma Inline (Get_Sec_Stack_Addr);
|
|
|
|
procedure Set_Sec_Stack_Addr (Addr : Address);
|
|
pragma Inline (Set_Sec_Stack_Addr);
|
|
|
|
function Get_Current_Excep return EOA;
|
|
pragma Inline (Get_Current_Excep);
|
|
|
|
--------------------------
|
|
-- Thread Body Handling --
|
|
--------------------------
|
|
|
|
-- The subprograms in this section are called by the expansion of a
|
|
-- subprogram body to which a Thread_Body pragma has been applied:
|
|
|
|
-- Given a subprogram body
|
|
|
|
-- procedure xyz (params ....) is -- can also be a function
|
|
-- <user declarations>
|
|
-- begin
|
|
-- <user statements>
|
|
-- <user exception handlers>
|
|
-- end xyz;
|
|
|
|
-- The expansion resulting from use of the Thread_Body pragma is:
|
|
|
|
-- procedure xyz (params ...) is
|
|
|
|
-- _Secondary_Stack : aliased
|
|
-- Storage_Elements.Storage_Array
|
|
-- (1 .. Storage_Offset (Sec_Stack_Size));
|
|
-- for _Secondary_Stack'Alignment use Standard'Maximum_Alignment;
|
|
|
|
-- _Process_ATSD : aliased System.Threads.ATSD;
|
|
|
|
-- begin
|
|
-- System.Threads.Thread_Body_Enter;
|
|
-- (_Secondary_Stack'Address,
|
|
-- _Secondary_Stack'Length,
|
|
-- _Process_ATSD'Address);
|
|
|
|
-- declare
|
|
-- <user declarations>
|
|
-- begin
|
|
-- <user statements>
|
|
-- <user exception handlers>
|
|
-- end;
|
|
|
|
-- System.Threads.Thread_Body_Leave;
|
|
|
|
-- exception
|
|
-- when E : others =>
|
|
-- System.Threads.Thread_Body_Exceptional_Exit (E);
|
|
-- end;
|
|
|
|
-- Note the exception handler is omitted if pragma Restriction
|
|
-- No_Exception_Handlers is currently active.
|
|
|
|
-- Note: the secondary stack size (Sec_Stack_Size) comes either from
|
|
-- the pragma, if specified, or is the default value taken from
|
|
-- the declaration in System.Secondary_Stack.
|
|
|
|
procedure Thread_Body_Enter
|
|
(Sec_Stack_Address : System.Address;
|
|
Sec_Stack_Size : Natural;
|
|
Process_ATSD_Address : System.Address);
|
|
-- Enter thread body, see above for details
|
|
|
|
procedure Thread_Body_Leave;
|
|
-- Leave thread body (normally), see above for details
|
|
|
|
procedure Thread_Body_Exceptional_Exit
|
|
(EO : Ada.Exceptions.Exception_Occurrence);
|
|
-- Leave thread body (abnormally on exception), see above for details
|
|
|
|
private
|
|
|
|
type ATSD is new System.Soft_Links.TSD;
|
|
|
|
end System.Threads;
|