File : a-tasatt.ads


   1 ------------------------------------------------------------------------------
   2 --                                                                          --
   3 --                         GNAT RUN-TIME COMPONENTS                         --
   4 --                                                                          --
   5 --                  A D A . T A S K _ A T T R I B U T E S                   --
   6 --                                                                          --
   7 --                                 S p e c                                  --
   8 --                                                                          --
   9 --            Copyright (C) 2014-2016, Free Software Foundation, Inc.       --
  10 --                                                                          --
  11 -- This specification is derived from the Ada Reference Manual for use with --
  12 -- GNAT. The copyright notice above, and the license provisions that follow --
  13 -- apply solely to the  contents of the part following the private keyword. --
  14 --                                                                          --
  15 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  16 -- terms of the  GNU General Public License as published  by the Free Soft- --
  17 -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  18 -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  19 -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
  20 -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
  21 --                                                                          --
  22 --                                                                          --
  23 --                                                                          --
  24 --                                                                          --
  25 --                                                                          --
  26 -- You should have received a copy of the GNU General Public License and    --
  27 -- a copy of the GCC Runtime Library Exception along with this program;     --
  28 -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
  29 -- <http://www.gnu.org/licenses/>.                                          --
  30 --                                                                          --
  31 -- GNAT was originally developed  by the GNAT team at  New York University. --
  32 -- Extensive contributions were provided by Ada Core Technologies Inc.      --
  33 --                                                                          --
  34 ------------------------------------------------------------------------------
  35 
  36 with Ada.Task_Identification;
  37 
  38 generic
  39    type Attribute is private;
  40    Initial_Value : Attribute;
  41 
  42 package Ada.Task_Attributes is
  43 
  44    --  Note that this package will use an efficient implementation with no
  45    --  locks and no extra dynamic memory allocation if Attribute is the size
  46    --  of either Integer or System.Address, and Initial_Value is 0 (null for
  47    --  an access type).
  48 
  49    --  Other types and initial values are supported, but will require
  50    --  the use of locking and a level of indirection (meaning extra dynamic
  51    --  memory allocation).
  52 
  53    --  The maximum number of task attributes supported by this implementation
  54    --  is determined by the constant System.Parameters.Max_Attribute_Count.
  55    --  If you exceed this number, Storage_Error will be raised during the
  56    --  elaboration of the instantiation of this package.
  57 
  58    type Attribute_Handle is access all Attribute;
  59 
  60    function Value
  61      (T : Ada.Task_Identification.Task_Id :=
  62             Ada.Task_Identification.Current_Task) return Attribute;
  63    --  Return the value of the corresponding attribute of T. Tasking_Error
  64    --  is raised if T is terminated and Program_Error will be raised if T
  65    --  is Null_Task_Id.
  66 
  67    function Reference
  68      (T : Ada.Task_Identification.Task_Id :=
  69             Ada.Task_Identification.Current_Task) return Attribute_Handle;
  70    --  Return an access value that designates the corresponding attribute of
  71    --  T. Tasking_Error is raised if T is terminated and Program_Error will be
  72    --  raised if T is Null_Task_Id.
  73 
  74    procedure Set_Value
  75      (Val : Attribute;
  76       T   : Ada.Task_Identification.Task_Id :=
  77               Ada.Task_Identification.Current_Task);
  78    --  Finalize the old value of the attribute of T and assign Val to that
  79    --  attribute. Tasking_Error is raised if T is terminated and Program_Error
  80    --  will be raised if T is Null_Task_Id.
  81 
  82    procedure Reinitialize
  83      (T : Ada.Task_Identification.Task_Id :=
  84             Ada.Task_Identification.Current_Task);
  85    --  Same as Set_Value (Initial_Value, T). Tasking_Error is raised if T is
  86    --  terminated and Program_Error will be raised if T is Null_Task_Id.
  87 
  88 private
  89    pragma Inline (Value);
  90    pragma Inline (Reference);
  91    pragma Inline (Set_Value);
  92    pragma Inline (Reinitialize);
  93 end Ada.Task_Attributes;