システムが保持している現在のグリニッジ時刻と現在の時間帯は Fn gettimeofday システムコールから得られ、 Fn settimeofday システムコールで設定されます。 時刻は 1970 年 1 月 1 日の深夜 (0 時) からの秒数とマイクロ秒数で表現されます。 システムクロックの分解能はハードウェアで決まり、 時刻は継続的または ``チック'' 単位で更新されます。 Fa tp または Fa tzp が NULL の場合、対応する時刻情報は返されず、また設定されません。
Fa tp と Fa tzp の指す構造体は In sys/time.h 内に次のように定義されています:
struct timeval { long tv_sec; /* 1970 年 1 月 1 日からの秒数 */ long tv_usec; /* およびマイクロ秒数 */ }; struct timezone { int tz_minuteswest; /* グリニッジから西方向への偏差 */ int tz_dsttime; /* 夏時間補正のタイプ */ };
Vt timezone 構造体は、ローカル時間帯 (グリニッジから西向きに分単位で測定) と フラグを含みます。 フラグが 0 でない場合は、1 年の適切な時期に 夏時間がその地域に適用されることを示します。
スーパユーザだけが時刻または時間帯を設定できます。 システムが securelevel >= 2 ( init(8) を参照) で実行される場合は、 最大 1 秒のみ時刻を進めるか遅らせることしかできません。 この制限が課されるのは、悪意のあるスーパユーザがファイルに任意の タイムスタンプを設定するのを防止するためです。 システム時刻は、システムが安全モードにあっても adjtime(2) システムコールを使用して制限なしに後方に調整できます。