gettimeofday

GETTIMEOFDAY(2)         Linux Programmeurs Handleiding         GETTIMEOFDAY(2)



NAAM
       gettimeofday, settimeofday - krijg/zet tijd

OVERZICHT
       #include <sys/time.h>

       int gettimeofday(struct timeval *tw, struct timezone *tz);
       int settimeofday(const struct timeval *tv , const struct timezone *tz);

BESCHRIJVING
       De functies gettimeofday en settimeofday kunnen zowel de tijd als de
       tijdzone zetten en inspecteren.  Het tv argument is een timeval
       "struct" zoals bepaald in /usr/include/sys/time.h:

       struct timeval {
               long tv_sec;        /* seconden */
               long tv_usec;  /* microseconden */
       };

       en geeft het aantal seconden en microseconden sinds de Epoch (zie
       time(2)).  Het tz argument is een tijdzone :

       struct timezone {
               int  tz_minuteswest; /* minuten W van Greenwich */
               int  tz_dsttime;     /* soort zomertijd (dst) correctie */
       };

       Het gebruik van de tijdzone structuur is verouderd; het 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 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:

        DST_NONE     /* geen zomertijd */
        DST_USA      /* USA stijl zomertijd */
        DST_AUST     /* Australische stijl zomertijd */
        DST_WET      /* West Europese zomertijd */
        DST_MET      /* Midden Europese zomertijd */
        DST_EET      /* Oost Europese zomertijd  */
        DST_CAN      /* Canada */
        DST_GB       /* Groot Britannië en Ierland */
        DST_RUM      /* Roemenië */
        DST_TUR      /* Turkije */
        DST_AUSTALT  /* Australische stijl met verschuiving in 1986 */

       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 tz_dsttime veld in een aanroep van settimeofday nul
       zijn.

       Onder Linux is er een eigenaardige `warp clock' semantiek geassocieerd
       met de settimeofday systeem aanroep als tijdens de allereerste aanroep
       (na opstarten van het systeem) die een niet-NULL tz argument heeft, het
       tv argument NULL is en het 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.

       De volgende macros zijn gedefinieerd om te werken met een timeval
       struct:
       #define timerisset(tvp)\
               ((tvp)->tv_sec || (tvp)->tv_usec)
       #define timercmp(tvp, uvp, cmp)\
               ((tvp)->tv_sec cmp (uvp)->tv_sec ||\
               (tvp)->tv_sec == (uvp)->tv_sec &&\
               (tvp)->tv_usec cmp (uvp)->tv_usec)
       #define timerclear(tvp)\
               ((tvp)->tv_sec = (tvp)->tv_usec = 0)

       Als òf tv òf tz nul is, dan wordt de corresponderende structure niet
       gezet of teruggegeven.

       Alleen de supergebruiker mag settimeofday gebruiken.


TERUGGEEF WAARDE
       gettimeofday en settimeofday geven 0 bij succes, of -1 voor falen (in
       welk geval errno op die manier wordt gezet).

FOUTEN
       EPERM  {toestemming} settimeofday wordt aangeroepen door iemand anders
              dan de supergebruiker.

       EINVAL {ongeldig} Tijdzone (of iets anders) is ongeldig.

       EFAULT {fout} Een van tv of tz wijst buiten uw toegankelijke adres
              ruimte.

NOOT
       Het prototype voor settimeofday en de `defines' voor timercmp,
       timerisset, timerclear, timeradd, timersub zijn (sinds glibc2.2.2)
       alleen dan beschikbaar als _BSD_SOURCE is gedefinieerd (expliciet of
       impliciet, door _POSIX_SOURCE niet te definieren of door te compileren
       met de -ansi vlag).

VOLDOET AAN
       SVr4, BSD 4.3

ZIE OOK
       date(1), adjtimex(2), time(2), ctime(3), ftime(3)



Linux 2.0.32                   10 December 1997                GETTIMEOFDAY(2)