DEFINITION MODULE wraptime ; (* Description: provides an interface to various time related entities on the underlying host operating system. It provides access to the glibc/libc functions: gettimeofday, settimeofday and localtime_r. *) FROM SYSTEM IMPORT ADDRESS ; TYPE timeval = ADDRESS ; timezone = ADDRESS ; tm = ADDRESS ; (* InitTimeval - returns a newly created opaque type. *) PROCEDURE InitTimeval () : timeval ; (* KillTimeval - deallocates the memory associated with an opaque type. *) PROCEDURE KillTimeval (tv: timeval) : timeval ; (* InitTimezone - returns a newly created opaque type. *) PROCEDURE InitTimezone () : timezone ; (* KillTimezone - deallocates the memory associated with an opaque type. *) PROCEDURE KillTimezone (tv: timezone) : timezone ; (* InitTM - returns a newly created opaque type. *) PROCEDURE InitTM () : tm ; (* KillTM - deallocates the memory associated with an opaque type. *) PROCEDURE KillTM (tv: tm) : tm ; (* gettimeofday - calls gettimeofday(2) with the same parameters, tv, and, tz. It returns 0 on success. *) PROCEDURE gettimeofday (tv: timeval; tz: timezone) : INTEGER ; (* settimeofday - calls settimeofday(2) with the same parameters, tv, and, tz. It returns 0 on success. *) PROCEDURE settimeofday (tv: timeval; tz: timezone) : INTEGER ; (* GetFractions - returns the tv_usec field inside the timeval structure as a CARDINAL. *) PROCEDURE GetFractions (tv: timeval) : CARDINAL ; (* localtime_r - returns the tm parameter, m, after it has been assigned with appropriate contents determined by, tv. Notice that this procedure function expects, timeval, as its first parameter and not a time_t (as expected by the posix equivalent). This avoids having to expose a time_t system dependant definition. *) PROCEDURE localtime_r (tv: timeval; m: tm) : tm ; (* GetYear - returns the year from the structure, m. *) PROCEDURE GetYear (m: tm) : CARDINAL ; (* GetMonth - returns the month from the structure, m. *) PROCEDURE GetMonth (m: tm) : CARDINAL ; (* GetDay - returns the day of the month from the structure, m. *) PROCEDURE GetDay (m: tm) : CARDINAL ; (* GetHour - returns the hour of the day from the structure, m. *) PROCEDURE GetHour (m: tm) : CARDINAL ; (* GetMinute - returns the minute within the hour from the structure, m. *) PROCEDURE GetMinute (m: tm) : CARDINAL ; (* GetSecond - returns the seconds in the minute from the structure, m. The return value will always be in the range 0..59. A leap minute of value 60 will be truncated to 59. *) PROCEDURE GetSecond (m: tm) : CARDINAL ; (* GetSummerTime - returns a boolean indicating whether summer time is set. *) PROCEDURE GetSummerTime (tz: timezone) : BOOLEAN ; (* GetDST - returns the number of minutes west of GMT. *) PROCEDURE GetDST (tz: timezone) : INTEGER ; (* SetTimeval - sets the fields in timeval, tv, with: second, minute, hour, day, month, year, fractions. *) PROCEDURE SetTimeval (tv: timeval; second, minute, hour, day, month, year, yday, wday, isdst: CARDINAL) ; (* SetTimezone - set the timezone field inside timeval, tv. *) PROCEDURE SetTimezone (tv: timeval; zone: CARDINAL; minuteswest: INTEGER) ; END wraptime.