// sys/time.h - POSIX gettimeofday() shim on the IIgs RTC. // // The IIgs Misc Tool ReadTimeHex (set $03, tool $0D) is the only // hardware-visible wall clock; its resolution is one second. We // expose it through the POSIX gettimeofday() surface so portable // code that wants a coarse wall-time stamp (logging, srand, // benchmark deltas in whole seconds) works unmodified. // // tv_sec is the same Unix epoch second count returned by time(). // tv_usec is always 0 (no sub-second hardware). The `tz` argument is // accepted for source compatibility and silently ignored -- the IIgs // has no timezone database. // // The signature mirrors the canonical POSIX one byte-for-byte so // existing third-party code using `struct timeval` and gettimeofday() // links cleanly against runtime/extras.o. #ifndef _SYS_TIME_H #define _SYS_TIME_H #include #ifdef __cplusplus extern "C" { #endif // suseconds_t is an i32 on every common POSIX impl; we match that. typedef long suseconds_t; struct timeval { time_t tv_sec; // seconds since the Unix epoch suseconds_t tv_usec; // microseconds within the second (always 0 here) }; struct timezone { int tz_minuteswest; // minutes west of GMT (always 0) int tz_dsttime; // DST correction (always 0) }; // Returns 0 on success, -1 on failure (e.g. if the Tool Locator has // not yet been initialised). `tz` is accepted for source compat and // silently ignored. Calling with tv==NULL is a no-op success. int gettimeofday(struct timeval *tv, void *tz); #ifdef __cplusplus } #endif #endif