49 lines
1.5 KiB
C
49 lines
1.5 KiB
C
// 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 <time.h>
|
|
|
|
#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
|