blob: 269271d015cab7cfb36dfd66492c0a5fd9efe2fc [file] [log] [blame]
(* 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.