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-- This specification is derived from the Ada Reference Manual for use with -- 10-- GNAT. In accordance with the copyright of that document, you can freely -- 11-- copy and modify this specification, provided that if you redistribute a -- 12-- modified version, any changes that you have made are clearly indicated. -- 13-- -- 14------------------------------------------------------------------------------ 15 16-- This unit is not implemented in typical GNAT implementations that lie on 17-- top of operating systems, because it is infeasible to implement in such 18-- environments. 19 20-- If a target environment provides appropriate support for this package 21-- then the Unimplemented_Unit pragma should be removed from this spec and 22-- an appropriate body provided. 23 24with Ada.Task_Identification; 25with Ada.Real_Time; 26 27package Ada.Execution_Time with 28 SPARK_Mode 29is 30 pragma Preelaborate; 31 32 pragma Unimplemented_Unit; 33 34 type CPU_Time is private; 35 36 CPU_Time_First : constant CPU_Time; 37 CPU_Time_Last : constant CPU_Time; 38 CPU_Time_Unit : constant := 0.000001; 39 CPU_Tick : constant Ada.Real_Time.Time_Span; 40 41 use type Ada.Task_Identification.Task_Id; 42 43 function Clock 44 (T : Ada.Task_Identification.Task_Id := 45 Ada.Task_Identification.Current_Task) 46 return CPU_Time 47 with 48 Volatile_Function, 49 Global => Ada.Real_Time.Clock_Time, 50 Pre => T /= Ada.Task_Identification.Null_Task_Id; 51 52 function "+" 53 (Left : CPU_Time; 54 Right : Ada.Real_Time.Time_Span) return CPU_Time 55 with 56 Global => null; 57 58 function "+" 59 (Left : Ada.Real_Time.Time_Span; 60 Right : CPU_Time) return CPU_Time 61 with 62 Global => null; 63 64 function "-" 65 (Left : CPU_Time; 66 Right : Ada.Real_Time.Time_Span) return CPU_Time 67 with 68 Global => null; 69 70 function "-" 71 (Left : CPU_Time; 72 Right : CPU_Time) return Ada.Real_Time.Time_Span 73 with 74 Global => null; 75 76 function "<" (Left, Right : CPU_Time) return Boolean with 77 Global => null; 78 function "<=" (Left, Right : CPU_Time) return Boolean with 79 Global => null; 80 function ">" (Left, Right : CPU_Time) return Boolean with 81 Global => null; 82 function ">=" (Left, Right : CPU_Time) return Boolean with 83 Global => null; 84 85 procedure Split 86 (T : CPU_Time; 87 SC : out Ada.Real_Time.Seconds_Count; 88 TS : out Ada.Real_Time.Time_Span) 89 with 90 Global => null; 91 92 function Time_Of 93 (SC : Ada.Real_Time.Seconds_Count; 94 TS : Ada.Real_Time.Time_Span := Ada.Real_Time.Time_Span_Zero) 95 return CPU_Time 96 with 97 Global => null; 98 99 Interrupt_Clocks_Supported : constant Boolean := False; 100 Separate_Interrupt_Clocks_Supported : constant Boolean := False; 101 102 pragma Warnings (Off, "check will fail at run time"); 103 function Clock_For_Interrupts return CPU_Time with 104 Volatile_Function, 105 Global => Ada.Real_Time.Clock_Time, 106 Pre => Interrupt_Clocks_Supported; 107 pragma Warnings (On, "check will fail at run time"); 108 109private 110 pragma SPARK_Mode (Off); 111 112 type CPU_Time is new Ada.Real_Time.Time; 113 114 CPU_Time_First : constant CPU_Time := CPU_Time (Ada.Real_Time.Time_First); 115 CPU_Time_Last : constant CPU_Time := CPU_Time (Ada.Real_Time.Time_Last); 116 117 CPU_Tick : constant Ada.Real_Time.Time_Span := Ada.Real_Time.Tick; 118 119end Ada.Execution_Time; 120