(* wrapclock.def provides access to clock primitives. Copyright (C) 2023-2024 Free Software Foundation, Inc. Contributed by Gaius Mulley . This file is part of GNU Modula-2. GNU Modula-2 is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GNU Modula-2 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. Under Section 7 of GPL version 3, you are granted additional permissions described in the GCC Runtime Library Exception, version 3.1, as published by the Free Software Foundation. You should have received a copy of the GNU General Public License and a copy of the GCC Runtime Library Exception along with this program; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see . *) DEFINITION MODULE wrapclock ; FROM SYSTEM IMPORT ADDRESS ; TYPE timespec = ADDRESS ; (* timezone - return the glibc timezone value. This contains the difference between UTC and the latest local standard time, in seconds west of UTC. If the underlying timezone is unavailable and clock_gettime, localtime_r, tm_gmtoff is unavailable then 0 is returned. *) PROCEDURE timezone () : LONGINT ; (* istimezone returns 1 if timezone in wrapclock.cc can resolve the timezone value using the timezone C library call or by using clock_gettime, localtime_r and tm_gmtoff. *) PROCEDURE istimezone () : INTEGER ; (* daylight - return the glibc daylight value. This variable has a nonzero value if Daylight Saving Time rules apply. A nonzero value does not necessarily mean that Daylight Saving Time is now in effect; it means only that Daylight Saving Time is sometimes in effect. *) PROCEDURE daylight () : INTEGER ; (* isdst - returns 1 if daylight saving time is currently in effect and returns 0 if it is not. *) PROCEDURE isdst () : INTEGER ; (* tzname - returns the string associated with the local timezone. The daylight value is 0 or 1. The value 0 returns the non daylight saving timezone string and the value of 1 returns the daylight saving timezone string. *) PROCEDURE tzname (daylight: INTEGER) : ADDRESS ; (* InitTimespec - returns a newly created opaque type. *) PROCEDURE InitTimespec () : timespec ; (* KillTimespec - deallocates the memory associated with an opaque type. *) PROCEDURE KillTimespec (tv: timespec) : timespec ; (* GetTimespec - retrieves the number of seconds and nanoseconds from the timespec. A return value of 0 means timespec is unavailable and a return value of 1 indicates success. *) PROCEDURE GetTimespec (ts: timespec; VAR sec, nano: LONGCARD) : INTEGER ; (* SetTimespec - sets the number of seconds and nanoseconds into timespec. A return value of 0 means timespec is unavailable and a return value of 1 indicates success. *) PROCEDURE SetTimespec (ts: timespec; sec, nano: LONGCARD) : INTEGER ; (* GetTimeRealtime - performs return gettime (CLOCK_REALTIME, ts). gettime returns 0 on success and -1 on failure. If the underlying system does not have gettime then GetTimeRealtime returns 1. *) PROCEDURE GetTimeRealtime (ts: timespec) : INTEGER ; (* SetTimeRealtime - performs return settime (CLOCK_REALTIME, ts). gettime returns 0 on success and -1 on failure. If the underlying system does not have gettime then SetTimeRealtime returns 1. *) PROCEDURE SetTimeRealtime (ts: timespec) : INTEGER ; END wrapclock.