How can I get the current time in microseconds (formatted as integer64) in ada ?
I want to get the equivalent of C function clock_gettime (frome time.h).
It depends when you want the count to start. If you want uptime, you’ll need to handle
clock_gettime(). If you want time since the Unix epoch, this might help:
with Ada.Calendar; with Ada.Text_IO; procedure Get_Current_Time is type Integer_64 is range -2**63 .. 2**63 - 1; The_Unix_Epoch : constant Ada.Calendar.Time := Ada.Calendar.Time_Of (Year => 1970, Month => 1, Day => 1); use type Ada.Calendar.Time; Time_Now : constant Ada.Calendar.Time := Ada.Calendar.Clock; Time_Since_Epoch : constant Duration := Time_Now - The_Unix_Epoch; In_Microseconds : constant Integer_64 := Integer_64 (Time_Since_Epoch * 1.0e6); begin Ada.Text_IO.Put_Line ("result:" & In_Microseconds'Image); end Get_Current_Time;
Or, instead of
The_Unix_Epoch, you could store the current clock at the start of your program, if you just want elapsed time.