File : a-exetim-mingw.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) 2009-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 --  This is the Windows native version of this package
  37 
  38 with Ada.Task_Identification;
  39 with Ada.Real_Time;
  40 
  41 package Ada.Execution_Time with
  42   SPARK_Mode
  43 is
  44    type CPU_Time is private;
  45 
  46    CPU_Time_First : constant CPU_Time;
  47    CPU_Time_Last  : constant CPU_Time;
  48    CPU_Time_Unit  : constant := 0.000001;
  49    CPU_Tick       : constant Ada.Real_Time.Time_Span;
  50 
  51    use type Ada.Task_Identification.Task_Id;
  52 
  53    function Clock
  54      (T : Ada.Task_Identification.Task_Id :=
  55         Ada.Task_Identification.Current_Task)
  56       return CPU_Time
  57    with
  58      Volatile_Function,
  59      Global => Ada.Real_Time.Clock_Time,
  60      Pre    => T /= Ada.Task_Identification.Null_Task_Id;
  61 
  62    function "+"
  63      (Left  : CPU_Time;
  64       Right : Ada.Real_Time.Time_Span) return CPU_Time
  65    with
  66      Global => null;
  67 
  68    function "+"
  69      (Left  : Ada.Real_Time.Time_Span;
  70       Right : CPU_Time) return CPU_Time
  71    with
  72      Global => null;
  73 
  74    function "-"
  75      (Left  : CPU_Time;
  76       Right : Ada.Real_Time.Time_Span) return CPU_Time
  77    with
  78      Global => null;
  79 
  80    function "-"
  81      (Left  : CPU_Time;
  82       Right : CPU_Time) return Ada.Real_Time.Time_Span;
  83 
  84    function "<"  (Left, Right : CPU_Time) return Boolean with
  85      Global => null;
  86    function "<=" (Left, Right : CPU_Time) return Boolean with
  87      Global => null;
  88    function ">"  (Left, Right : CPU_Time) return Boolean with
  89      Global => null;
  90    function ">=" (Left, Right : CPU_Time) return Boolean with
  91      Global => null;
  92 
  93    procedure Split
  94      (T  : CPU_Time;
  95       SC : out Ada.Real_Time.Seconds_Count;
  96       TS : out Ada.Real_Time.Time_Span)
  97    with
  98      Global => null;
  99 
 100    function Time_Of
 101      (SC : Ada.Real_Time.Seconds_Count;
 102       TS : Ada.Real_Time.Time_Span := Ada.Real_Time.Time_Span_Zero)
 103       return CPU_Time
 104    with
 105      Global => null;
 106 
 107    Interrupt_Clocks_Supported          : constant Boolean := False;
 108    Separate_Interrupt_Clocks_Supported : constant Boolean := False;
 109 
 110    pragma Warnings (Off, "check will fail at run time");
 111    function Clock_For_Interrupts return CPU_Time with
 112      Volatile_Function,
 113      Global => Ada.Real_Time.Clock_Time,
 114      Pre    => Interrupt_Clocks_Supported;
 115    pragma Warnings (On, "check will fail at run time");
 116 
 117 private
 118    pragma SPARK_Mode (Off);
 119 
 120    type CPU_Time is new Ada.Real_Time.Time;
 121 
 122    CPU_Time_First : constant CPU_Time  := CPU_Time (Ada.Real_Time.Time_First);
 123    CPU_Time_Last  : constant CPU_Time  := CPU_Time (Ada.Real_Time.Time_Last);
 124 
 125    CPU_Tick : constant Ada.Real_Time.Time_Span := Ada.Real_Time.Tick;
 126 
 127    pragma Import (Intrinsic, "<");
 128    pragma Import (Intrinsic, "<=");
 129    pragma Import (Intrinsic, ">");
 130    pragma Import (Intrinsic, ">=");
 131 
 132 end Ada.Execution_Time;