GETTIMEOFDAY(2)    Manuel du programmeur Linux    GETTIMEOFDAY(2)


NOM
       gettimeofday,   settimeofday   -  Lire  /  écrire  l'heure
       actuelle.

SYNOPSIS
       #include <sys/time.h>
       #include <unistd.h>

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

DESCRIPTION
       gettimeofday et settimeofday  peuvent  programmer  l'heure
       ainsi que le fuseau horaire (timezone).  tv est une struc­
       ture timeval décrite dans /usr/include/sys/time.h :

       struct timeval {
               int  tv_sec;        /* secondes */
               int  tv_usec;  /* microsecondes */
               };


       et tz est une structure timezone  décrite  egalement  dans
       /usr/include/sys/time.h:

       struct timezone {
               int  tz_minuteswest; /* minutes west of Greenwich  */
               int  tz_dsttime;     /* type de changement horaire */
               };

       L'utilisation  de  la  structure timezone est obsolète, le
       champ tz_dsttime n'a jamais été utilisé sous Linux, il n'a
       jamais  été  géré,  et  ne  le  sera jamais par la libc ou
       glibc.  Toute occurrence de ce champ dans les  sources  du
       noyau  (sauf  pour  les déclarations) est un bug. Ainsi le
       paragraphe suivant n'a qu'un intérêt historique.

       Le champ  tz_dsttime  contient  une  constante  symbolique
       (dont  les  valeurs  sont fournies ci-dessous) qui indique
       quelle partie du changement horaire annuel est  en  cours.
       (Remarque  :  Cette  valeur  est constante tout au long de
       l'année, elle n'indique pas réellement la  valeur  horaire
       en  cours,  elle  sélectionne un algorithme).  Les change­
       ments horaires (Daylight saving - DST) sont définis  comme
       suit :

       DST_NONE    /* Aucun */
       DST_USA     /* USA */
       DST_AUST    /* Australie */
       DST_WET     /* Europe occidentale */
       DST_MET     /* Europe centrale */
       DST_EET     /* Europe Orientale */
       DST_CAN     /* Canada */



Linux                     28 Avril 1998                         1





GETTIMEOFDAY(2)    Manuel du programmeur Linux    GETTIMEOFDAY(2)


       DST_GB      /* Grande Bretagne et Irlande */
       DST_RUM     /* Roumanie */
       DST_TUR     /* Turkie */
       DST_AUSTALT /* Australie avec décalage en 1986 */

       Il  est  évident que le décallage horaire en cours ne peut
       pas être uniquement fourni par un algorithme par pays.  Ce
       décallage  dépend  de  décisions politiques imprévisibles.
       Ainsi cette méthode des fuseaux horaires a été abandonnée.
       Sous  Linux,  durant  un  appel  à  settimeofday  le champ
       tz_dsttime doit être nul.

       Sous Linux, il existe une sémantique particulière associée
       à  l'appel  système  settimeofday  si,  durant la première
       invocation (après le boot), il a un argument tz  non-NULL,
       un  argument  tv NULL et un champ tz_minuteswest différent
       de zéro. Dans ce cas, on suppose que l'horloge CMOS de  la
       machine  est  configurée  sur  le temps local, et que l'on
       doit l'augmenter de cette valeur  pour  obtenir  le  temps
       UTC.   Bien  entendu,  il  faut éviter autant que possible
       d'utiliser cette particularité.

       Les macros suivantes permettent de  manipuler  les  struc­
       tures timeval :
       #define   timerisset(tvp)\
               ((tvp)->tv_sec || (tvp)->tv_usec)
       indique si le timer est non-nul.

       #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)
               compare deux timers.

       #define timerclear(tvp)\
               ((tvp)->tv_sec = (tvp)->tv_usec = 0)
       efface un timer

       Si  tv  ou tz est nulle, la structure correspondante n'est
       ni programmée ni renvoyée.

       Seul le Super-User peut appeler settimeofday.

VALEUR RENVOYÉE
       gettimeofday et settimeofday renvoient  0  s'ils  réussis­
       sent,  ou  -1 s'ils échouent, auquel cas errno contient le
       code d'erreur.

ERREURS
       EPERM  settimeofday est appelé par quelqu'un  d'autre  que
              le Super-User

       EINVAL le  fuseau  horaire  est invalide.  EFAULT tv ou tz
              pointent  en   dehors   de   l'espace   d'adressage



Linux                     28 Avril 1998                         2





GETTIMEOFDAY(2)    Manuel du programmeur Linux    GETTIMEOFDAY(2)


              autorisé.

CONFORMITÉ
       SVr4, BSD 4.3

VOIR AUSSI
       date(1), adjtimex(2), time(2), ctime(3), ftime(3)


TRADUCTION
       Christophe Blaess, 1997.














































Linux                     28 Avril 1998                         3