.\" Hey Emacs! This file is -*- nroff -*- source. .\" .\" Copyright (c) 1992 Drew Eckhardt (drew@cs.colorado.edu), March 28, 1992 .\" .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" .\" Modified by Michael Haardt (michael@moria.de) .\" Modified Fri Jul 23 21:26:27 1993 by Rik Faith (faith@cs.unc.edu) .\" Modified 21 Aug 1994 by Michael Chastain (mec@shell.portal.com): .\" Fixed necessary '#include' lines. .\" Modified 15 Apr 1995 by Michael Chastain (mec@shell.portal.com): .\" Added reference to adjtimex. .\" Removed some nonsense lines pointed out by Urs Thuermann, .\" (urs@isnogud.escape.de), aeb, 950722. .\" Modified 14 Jan 1997 by Austin Donnelly (and1000@debian.org): .\" Added return values section, and bit on EFAULT .\" Added clarification on timezone, aeb, 971210. .\" Removed "#include ", aeb, 010316. .\" .\" Translated Mon Nov 13 14:41:52 CET 2000 from man-pages 1.29 by Jos Boersema .\" Updated to man-pages 1.45 by Joost van Baal, Wed Dec 19 18:28:13 CET 2001 .\" .\" Email naar . .\" .\" $Id: gettimeofday.2,v 1.1 2003/04/28 18:43:34 bokkie Exp $ .\" .TH GETTIMEOFDAY 2 "10 December 1997" "Linux 2.0.32" "Linux Programmeurs Handleiding" .SH NAAM gettimeofday, settimeofday \- krijg/zet tijd .SH OVERZICHT .B #include .sp .BI "int gettimeofday(struct timeval *" tw ", struct timezone *" tz ); .br .BI "int settimeofday(const struct timeval *" tv .BI ", const struct timezone *" tz ); .SH BESCHRIJVING De functies .B gettimeofday en .B settimeofday kunnen zowel de tijd als de tijdzone zetten en inspecteren. Het .I tv argument is een .B timeval "struct" zoals bepaald in /usr/include/sys/time.h: .sp .nf struct timeval { .in +8 long tv_sec; /* seconden */ long tv_usec; /* microseconden */ .in -8 }; .fi .sp en geeft het aantal seconden en microseconden sinds de Epoch (zie .BR time (2)). Het .I tz argument is een .B tijdzone : .sp .nf struct timezone { .in +8 int tz_minuteswest; /* minuten W van Greenwich */ int tz_dsttime; /* soort zomertijd (dst) correctie */ .in -8 }; .fi .PP Het gebruik van de tijdzone structuur is verouderd; het .I tz_dsttime {tijd zone zomertijd tijd} veld is nooit gebruikt onder Linux - het werd nooit en zal nooit ondersteund worden door libc of glibc. Elk voorkomen van dit veld in de kernel broncode (behalve de declaratie ervan) is een bug. Daarom is het volgende alleen van historisch belang. Het veld .I tz_dsttime bevat een symbolische constante (de waarden worden hieronder gegeven) welke aangeeft in welk deel van het jaar Daylight Saving Time (zomertijd) werkzaam is. (NB: de waarde is constant door het jaar heen - het geeft niet aan of DST werkzaam is, maar het geeft slechts de keuze voor een algorithme.) De zomertijd algorithmes zijn als volgt gedefinieerd: .PP .ta 14 \fB DST_NONE\fP /* geen zomertijd */ .br \fB DST_USA\fP /* USA stijl zomertijd */ .br \fB DST_AUST\fP /* Australische stijl zomertijd */ .br \fB DST_WET\fP /* West Europese zomertijd */ .br \fB DST_MET\fP /* Midden Europese zomertijd */ .br \fB DST_EET\fP /* Oost Europese zomertijd */ .br \fB DST_CAN\fP /* Canada */ .br \fB DST_GB\fP /* Groot Britannië en Ierland */ .br \fB DST_RUM\fP /* Roemenië */ .br \fB DST_TUR\fP /* Turkije */ .br \fB DST_AUSTALT\fP /* Australische stijl met verschuiving in 1986 */ .PP Natuurlijk bleek dat de periode waarin zomertijd geld niet met een eenvoudig algorithme per land bepaald kan worden. Inderdaad: deze periode wordt bepaald door onvoorspelbare politieke beslissingen. Daarom is deze methode van tijdzone representatie afgeschaft. Onder Linux moet het .I tz_dsttime veld in een aanroep van .B settimeofday nul zijn. .PP Onder Linux is er een eigenaardige `warp clock' semantiek geassocieerd met de .B settimeofday systeem aanroep als tijdens de allereerste aanroep (na opstarten van het systeem) die een niet-NULL .I tz argument heeft, het .I tv argument NULL is en het .I tz_minuteswest niet-nul is. In zo'n geval wordt aangenomen dat de CMOS klok op locale tijd staat, en dat daar deze hoeveelheid bij moet worden opgeteld om de UTC systeem tijd te krijgen. Ongetwijfeld is het een slecht idee dit te gebruiken. .PP De volgende macros zijn gedefinieerd om te werken met een timeval struct: .br .nf #define timerisset(tvp)\\ .ti +8 ((tvp)->tv_sec || (tvp)->tv_usec) #define timercmp(tvp, uvp, cmp)\\ .in +8 ((tvp)->tv_sec cmp (uvp)->tv_sec ||\\ (tvp)->tv_sec == (uvp)->tv_sec &&\\ (tvp)->tv_usec cmp (uvp)->tv_usec) .in -8 #define timerclear(tvp)\\ .ti +8 ((tvp)->tv_sec = (tvp)->tv_usec = 0) .fi .PP Als òf .I tv òf .I tz nul is, dan wordt de corresponderende structure niet gezet of teruggegeven. .PP Alleen de supergebruiker mag .BR settimeofday " gebruiken." .SH "TERUGGEEF WAARDE" .B gettimeofday en .B settimeofday geven 0 bij succes, of \-1 voor falen (in welk geval .I errno op die manier wordt gezet). .SH FOUTEN .TP .B EPERM {toestemming} .B settimeofday wordt aangeroepen door iemand anders dan de supergebruiker. .TP .B EINVAL {ongeldig} Tijdzone (of iets anders) is ongeldig. .TP .B EFAULT {fout} Een van .I tv of .I tz wijst buiten uw toegankelijke adres ruimte. .SH NOOT Het prototype voor .B settimeofday en de `defines' voor .BR timercmp , .BR timerisset , .BR timerclear , .BR timeradd , .BR timersub zijn (sinds glibc2.2.2) alleen dan beschikbaar als .B _BSD_SOURCE is gedefinieerd (expliciet of impliciet, door _POSIX_SOURCE niet te definieren of door te compileren met de -ansi vlag). .SH "VOLDOET AAN" SVr4, BSD 4.3 .SH "ZIE OOK" .BR date "(1)," .BR adjtimex (2), .BR time (2), .BR ctime (3), .BR ftime (3)