| (* wrapclock.def provides access to clock primitives. |
| |
| Copyright (C) 2023-2025 Free Software Foundation, Inc. |
| Contributed by Gaius Mulley <gaiusmod2@gmail.com>. |
| |
| 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 |
| <http://www.gnu.org/licenses/>. *) |
| |
| 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. |