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-2019, 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-- As a special exception under Section 7 of GPL version 3, you are granted -- 23-- additional permissions described in the GCC Runtime Library Exception, -- 24-- version 3.1, as published by the Free Software Foundation. -- 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 38with Ada.Task_Identification; 39with Ada.Real_Time; 40 41package Ada.Execution_Time with 42 SPARK_Mode 43is 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 with 84 Global => null; 85 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 function ">=" (Left, Right : CPU_Time) return Boolean with 93 Global => null; 94 95 procedure Split 96 (T : CPU_Time; 97 SC : out Ada.Real_Time.Seconds_Count; 98 TS : out Ada.Real_Time.Time_Span) 99 with 100 Global => null; 101 102 function Time_Of 103 (SC : Ada.Real_Time.Seconds_Count; 104 TS : Ada.Real_Time.Time_Span := Ada.Real_Time.Time_Span_Zero) 105 return CPU_Time 106 with 107 Global => null; 108 109 Interrupt_Clocks_Supported : constant Boolean := False; 110 Separate_Interrupt_Clocks_Supported : constant Boolean := False; 111 112 pragma Warnings (Off, "check will fail at run time"); 113 function Clock_For_Interrupts return CPU_Time with 114 Volatile_Function, 115 Global => Ada.Real_Time.Clock_Time, 116 Pre => Interrupt_Clocks_Supported; 117 pragma Warnings (On, "check will fail at run time"); 118 119private 120 pragma SPARK_Mode (Off); 121 122 type CPU_Time is new Ada.Real_Time.Time; 123 124 CPU_Time_First : constant CPU_Time := CPU_Time (Ada.Real_Time.Time_First); 125 CPU_Time_Last : constant CPU_Time := CPU_Time (Ada.Real_Time.Time_Last); 126 127 CPU_Tick : constant Ada.Real_Time.Time_Span := Ada.Real_Time.Tick; 128 129 pragma Import (Intrinsic, "<"); 130 pragma Import (Intrinsic, "<="); 131 pragma Import (Intrinsic, ">"); 132 pragma Import (Intrinsic, ">="); 133 134end Ada.Execution_Time; 135