File : a-exetim-default.ads


   1 ------------------------------------------------------------------------------
   2 --                                                                          --
   3 --                         GNAT RUN-TIME COMPONENTS                         --
   4 --                                                                          --
   5 --                   A D A . E X E C U T I O N _ T I M E                    --
   6 --                                                                          --
   7 --                                 S p e c                                  --
   8 --                                                                          --
   9 --          Copyright (C) 2007-2015, 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 with Ada.Real_Time;
  38 
  39 package Ada.Execution_Time with
  40   SPARK_Mode
  41 is
  42 
  43    type CPU_Time is private;
  44 
  45    CPU_Time_First : constant CPU_Time;
  46    CPU_Time_Last  : constant CPU_Time;
  47    CPU_Time_Unit  : constant := Ada.Real_Time.Time_Unit;
  48    CPU_Tick       : constant Ada.Real_Time.Time_Span;
  49 
  50    use type Ada.Task_Identification.Task_Id;
  51 
  52    function Clock
  53      (T : Ada.Task_Identification.Task_Id :=
  54         Ada.Task_Identification.Current_Task)
  55       return CPU_Time
  56    with
  57      Volatile_Function,
  58      Global => Ada.Real_Time.Clock_Time,
  59      Pre    => T /= Ada.Task_Identification.Null_Task_Id;
  60 
  61    function "+"
  62      (Left  : CPU_Time;
  63       Right : Ada.Real_Time.Time_Span) return CPU_Time
  64    with
  65      Global => null;
  66 
  67    function "+"
  68      (Left  : Ada.Real_Time.Time_Span;
  69       Right : CPU_Time) return CPU_Time
  70    with
  71      Global => null;
  72 
  73    function "-"
  74      (Left  : CPU_Time;
  75       Right : Ada.Real_Time.Time_Span) return CPU_Time
  76    with
  77      Global => null;
  78 
  79    function "-"
  80      (Left  : CPU_Time;
  81       Right : CPU_Time) return Ada.Real_Time.Time_Span
  82    with
  83      Global => null;
  84 
  85    function "<"  (Left, Right : CPU_Time) return Boolean with
  86      Global => null;
  87    function "<=" (Left, Right : CPU_Time) return Boolean with
  88      Global => null;
  89    function ">"  (Left, Right : CPU_Time) return Boolean with
  90      Global => null;
  91    function ">=" (Left, Right : CPU_Time) return Boolean with
  92      Global => null;
  93 
  94    procedure Split
  95      (T  : CPU_Time;
  96       SC : out Ada.Real_Time.Seconds_Count;
  97       TS : out Ada.Real_Time.Time_Span)
  98    with
  99      Global => null;
 100 
 101    function Time_Of
 102      (SC : Ada.Real_Time.Seconds_Count;
 103       TS : Ada.Real_Time.Time_Span := Ada.Real_Time.Time_Span_Zero)
 104       return CPU_Time
 105    with
 106      Global => null;
 107 
 108    Interrupt_Clocks_Supported          : constant Boolean := False;
 109    Separate_Interrupt_Clocks_Supported : constant Boolean := False;
 110 
 111    pragma Warnings (Off, "check will fail at run time");
 112    function Clock_For_Interrupts return CPU_Time with
 113      Volatile_Function,
 114      Global => Ada.Real_Time.Clock_Time,
 115      Pre    => Interrupt_Clocks_Supported;
 116    pragma Warnings (On, "check will fail at run time");
 117 
 118 private
 119    pragma SPARK_Mode (Off);
 120 
 121    type CPU_Time is new Ada.Real_Time.Time;
 122 
 123    CPU_Time_First : constant CPU_Time  := CPU_Time (Ada.Real_Time.Time_First);
 124    CPU_Time_Last  : constant CPU_Time  := CPU_Time (Ada.Real_Time.Time_Last);
 125 
 126    CPU_Tick : constant Ada.Real_Time.Time_Span := Ada.Real_Time.Tick;
 127 
 128    pragma Import (Intrinsic, "<");
 129    pragma Import (Intrinsic, "<=");
 130    pragma Import (Intrinsic, ">");
 131    pragma Import (Intrinsic, ">=");
 132 
 133 end Ada.Execution_Time;