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-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 36with Ada.Task_Identification; 37with Ada.Real_Time; 38 39package Ada.Execution_Time with 40 SPARK_Mode 41is 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 118private 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 133end Ada.Execution_Time; 134