home *** CD-ROM | disk | FTP | other *** search
- -- This is a UNIX VAX Ada function to get CPU time in seconds of type DURATION
- -- ( it uses pragma INTERFACE to the C language )
-
- with SYSTEM ; use SYSTEM ;
-
- function CPU_Time_Clock return duration is
-
- type Break_Time_Record is record
- Seconds : integer ;
- Min : integer ;
- Hour : integer ;
- Day : integer ;
- Mon : integer ;
- Year : integer ;
- wday : integer ;
- yday : integer ;
- idst : integer ;
- end record ;
-
- type Time_Record is record
- Seconds : integer ;
- Microseconds : integer ;
- end record;
-
- type Zone_Record is record
- Seconds : integer ;
- Microseconds : integer ;
- end record ;
-
- type Time_Pointer_Type is access Time_Record ;
- type Zone_Pointer_Type is access Zone_Record ;
- type Break_Time_Record_Pointer is access Break_Time_Record ;
-
- Break_Time_Pointer : Break_Time_Record_Pointer := new Break_Time_Record ;
- Time_Pointer : Time_Pointer_Type := new Time_Record ;
- Zone_Pointer : Zone_Pointer_Type := new Zone_Record ;
- Return_Time : integer ;
- Time_As_Duration : duration ;
-
- -- This procedure gets the time and zone of day from the ULTRIX operating
- -- system. The time is returned in seconds and microseconds.
-
- procedure gettimeofday ( Time_Pointer : Time_Pointer_Type ;
- Zone_Pointer : Zone_Pointer_Type ) ;
-
- pragma interface(c,gettimeofday) ;
-
- -- This procedure takes as input the time returned by gettimeofday and
- -- breaks up the time into a structure as described in Break_Time_Record.
-
- function localtime (Time : Time_Pointer_Type )
- return Break_Time_Record_Pointer ;
-
- pragma interface (c, localtime) ;
-
- begin
-
- gettimeofday (Time_Pointer, Zone_Pointer ) ;
- Break_Time_Pointer := localtime ( Time_Pointer ) ;
- Return_Time := Break_Time_Pointer.Hour * 3600 +
- Break_Time_Pointer.Min * 60 +
- Break_Time_Pointer.Seconds ;
- Time_As_Duration := duration ( float(Return_Time) +
- ( float(Time_Pointer.Seconds) / 1000000.0 ) ) ;
-
- return Time_As_Duration ;
-
- end CPU_Time_Clock ;
-