Provided by: manpages-fr_4.19.0-7_all bug

NOM

       rtc - Horloge temps réel

SYNOPSIS

       #include <linux/rtc.h>

       int ioctl(fd, RTC_request, param);

DESCRIPTION

       Il s'agit d'une interface aux pilotes pour les horloges temps réel (RTC).

       La  plupart  des  ordinateurs disposent d'une ou plusieurs horloges matérielles intégrées,
       enregistrant l'heure locale. Elles sont appelées  « horloges  temps  réel »  (RTC).  L'une
       d'entre  elles  est  généralement alimentée par une pile afin de rester à l'heure une fois
       l'ordinateur éteint. Les  RTC  permettent  souvent  d'utiliser  des  alarmes  et  d'autres
       interruptions.

       Tous  les  PC  i386  et  les  systèmes  basés sur ACPI ont une RTC compatible avec la puce
       Motorola MC146818 du PC/AT d'origine. Aujourd'hui l'horloge est généralement  intégrée  au
       jeu  de  composants  de  la  carte  mère (« south bridge ») et utilise une pile de secours
       remplaçable de la taille d'une pièce de monnaie.

       Les systèmes autres que  les  PC,  comme  les  systèmes  embarqués  construits  autour  de
       processeurs  embarquant  tout le système, utilisent d'autres mises en œuvre. Généralement,
       ils n'offrent pas les mêmes fonctionnalités qu'une RTC de PC/AT.

   RTC vs horloge système
       Les RTC ne doivent pas être  confondues  avec  l'horloge  système,  qui  est  une  horloge
       logicielle  gérée par le noyau et utilisée dans gettimeofday(2) et time(2), ainsi que pour
       le marquage temporel des fichiers, etc. L'horloge système indique le nombre de secondes et
       microsecondes  écoulées  depuis un instant de départ, défini comme depuis l'époque POSIX :
       1er janvier  1970  à  00:00:00  (UTC).  (Une  mise  en  œuvre  usuelle  compte  le  nombre
       d'interruptions,  une  par pulsation à une fréquence de 100, 250 ou 1000 Hz.) C'est-à-dire
       qu'elle est supposée renvoyer l'heure locale, comme le font les RTC.

       Une différence clé entre une RTC et l'horloge  système  est  qu'une  RTC  fonctionne  même
       lorsque  le système est dans un état de veille d'alimentation (incluant « éteint ») et que
       l'horloge système ne peut fonctionner. Jusqu'à son initialisation,  l'horloge  système  ne
       peut  indiquer  que  le  temps écoulé depuis le démarrage du système mais pas celui depuis
       l'époque POSIX. Ainsi, au démarrage et après la sortie de veille, l'horloge  système  sera
       souvent  réglée  à l'heure locale actuelle en utilisant une RTC. Les systèmes sans RTC ont
       besoin de régler leur horloge système par un autre moyen, peut-être à travers le réseau ou
       en entrant les valeurs à la main.

   Fonctionnalités d'une RTC
       RTCs  can  be  read  and  written with hwclock(8), or directly with the ioctl(2)  requests
       listed below.

       En plus du compte de la date et de l'heure, de nombreuses RTC peuvent  aussi  générer  des
       interruptions :

       •  à chaque mise à jour de l'horloge (c.-à-d.. une fois par seconde) ;

       •  à  des  intervalles réguliers, de fréquence réglable à une puissance de 2 entre 2 Hz et
          8192 Hz ;

       •  lorsque la date d'une alarme réglée auparavant est atteinte.

       Chacune de ces sources d'interruptions peut être activée ou désactivée séparément. Sur  de
       nombreux  systèmes,  l'interruption  venant  de  l'alarme  peut  être  configurée comme un
       événement déclenchant le réveil du système, et ainsi sortir le système d'un état de veille
       d'alimentation  comme  la  veille  en  RAM  (STR,  appelée  S3  dans  les  systèmes ACPI),
       l'hibernation (appelée S4 dans les systèmes ACPI) ou même l'extinction  (appelée  S5  dans
       les  systèmes  ACPI).  Sur certains systèmes, la pile de secours de la RTC ne peut générer
       d'interruptions, alors qu'une autre le peut.

       Le périphérique /dev/rtc (ou /dev/rtc0, /dev/rtc1, etc.) est en lecture seule et  un  seul
       accès  simultané  est  possible.  Un  processus  appelant  read(2) ou select(2) est bloqué
       jusqu'à la réception de l'interruption RTC suivante. Suite à l'interruption, le  processus
       peut lire un entier long, dont l'octet de poids faible contient le type d'interruption qui
       vient de se produire et les 3 octets restants contiennent le nombre d'interruptions depuis
       le dernier appel à read(2).

   Interface ioctl(2)
       Les  appels  ioctl(2) suivants sont définis sur les descripteurs des fichiers associés aux
       périphériques RTC :

       RTC_RD_TIME
              Renvoie l'heure de cette RTC dans la structure suivante :

                  struct rtc_time {
                      int tm_sec;
                      int tm_min;
                      int tm_hour;
                      int tm_mday;
                      int tm_mon;
                      int tm_year;
                      int tm_wday;     /* non utilisé */
                      int tm_yday;     /* non utilisé */
                      int tm_isdst;    /* non utilisé */
                  };

              Les membres de cette structure ont les mêmes sens et les mêmes portées que la  ceux
              de  la  structure  tm  décrite dans gmtime(3). Un pointeur vers cette structure est
              attendu en troisième paramètre pour ioctl(2).

       RTC_SET_TIME
              Règle cette horloge RTC à l'heure spécifiée par la structure rtc_time vers laquelle
              pointe  le troisième paramètre passé à ioctl(2). Pour pouvoir modifier l'heure RTC,
              le processus doit être privilégié (i.e. disposer du droit CAP_SYS_TIME).

       RTC_ALM_READ, RTC_ALM_SET
              Lit et règle l'heure d'alarme, pour  les  horloges  RTC  qui  gèrent  les  alarmes.
              L'interruption  venant  de  l'alarme  doit être activée ou désactivée séparément en
              utilisant respectivement les  requêtes  RTC_AIE_ON  ou  RTC_AIE_OFF.  Le  troisième
              paramètre  d'ioctl(2) est un pointeur vers une structure rtc_time. Seuls les champs
              tm_sec, tm_min, et tm_hour de cette structure sont utilisés.

       RTC_IRQP_READ, RTC_IRQP_SET
              Lit et règle la fréquence des interruptions,  pour  les  horloges  RTC  gérant  les
              interruptions   périodiques.   L'interruption   périodique  doit  être  activée  ou
              désactivée séparément  en  utilisant  respectivement  les  requêtes  RTC_PIE_ON  ou
              RTC_PIE_OFF.  Le  troisième  paramètre  d'ioctl(2)  est  un  unsigned  long * ou un
              unsigned long respectivement. La valeur représente la  fréquence  en  interruptions
              par  seconde.  Le  jeu des fréquences permises est l'ensemble des multiples de deux
              entre  2  et  8192.  Seul  un  processus  privilégié  (i.e.  disposant   du   droit
              CAP_SYS_RESOURCE)  peut  régler  une  fréquence  supérieure  à celle spécifiée dans
              /proc/sys/dev/rtc/max-user-freq, par défaut 64.

       RTC_AIE_ON, RTC_AIE_OFF
              Active ou désactive l'interruption venant de l'alarme, pour les RTC qui gèrent  les
              alarmes. Le troisième paramètre d'ioctl(2) est ignoré.

       RTC_UIE_ON, RTC_UIE_OFF
              Active  ou  désactive l'interruption à chaque mise à jour, pour les horloges gérant
              cette interruption envoyée chaque seconde. Le troisième  paramètre  d'ioctl(2)  est
              ignoré.

       RTC_PIE_ON, RTC_PIE_OFF
              Active   ou   désactive   l'interruption   périodique,  pour  les  RTC  gérant  ces
              interruptions périodiques. Le troisième paramètre d'ioctl(2) est  ignoré.  Seul  un
              processus  privilégié  (i.e.  disposant  du droit CAP_SYS_RESOURCE) peut régler une
              fréquence supérieure à celle spécifiée dans /proc/sys/dev/rtc/max-user-freq.

       RTC_EPOCH_READ, RTC_EPOCH_SET
              Many RTCs encode the year in an 8-bit register which is either  interpreted  as  an
              8-bit  binary  number  or as a BCD number. In both cases, the number is interpreted
              relative to this RTC's Epoch. The RTC's  Epoch  is  initialized  to  1900  on  most
              systems  but on Alpha and MIPS it might also be initialized to 1952, 1980, or 2000,
              depending on the value of an RTC register for  the  year.  With  some  RTCs,  these
              operations  can  be used to read or to set the RTC's Epoch, respectively. The third
              ioctl(2)  argument is an unsigned long * or an unsigned long, respectively, and the
              value  returned (or assigned) is the Epoch. To set the RTC's Epoch the process must
              be privileged (i.e., have the CAP_SYS_TIME capability).

       RTC_WKALM_RD, RTC_WKALM_SET
              Certaines RTC disposent d'une interface pour les alarmes plus puissante,  utilisant
              ces ioctl pour lire ou écrire l'heure de l'alarme de la RTC avec cette structure :

                  struct rtc_wkalrm {
                      unsigned char enabled;
                      unsigned char pending;
                      struct rtc_time time;
                  };

              L'attribut  enabled est utilisé pour activer ou désactiver l'interruption venant de
              l'alarme, ou pour  lire  son  état  actuel ;  lorsque  ces  appels  sont  utilisés,
              RTC_AIE_ON  et RTC_AIE_OFF ne sont pas utilisés. L'attribut pending est utilisé par
              RTC_WKALM_RD pour signaler une interruption en attente (c'est  en  général  inutile
              sous  Linux,  excepté  lors du dialogue avec la RTC gérée par un microcode EFI). Le
              champ time est autant utilisé par RTC_ALM_READ  et  RTC_ALM_SET,  excepté  que  les
              champs  tm_mday,  tm_mon  et tm_year sont également valides. Un pointeur vers cette
              structure doit être passé en troisième paramètre ioctl(2).

FICHIERS

       /dev/rtc, /dev/rtc0, /dev/rtc1, etc.
              RTC special character device files.

       /proc/driver/rtc
              status of the (first) RTC.

NOTES

       Lorsque l'horloge du noyau est  synchronisée  avec  une  référence  externe  en  utilisant
       adjtimex(2),  le noyau met à jour une RTC désignée toutes les 11 minutes. Pour y parvenir,
       le noyau doit arrêter brièvement les interruptions périodiques, ce qui peut  affecter  les
       programmes utilisant cette RTC.

       L'époque  d'une RTC n'a rien à voir avec l'époque POSIX, utilisé uniquement pour l'horloge
       système.

       Si l'année relative à l'époque de la RTC et au registre de l'année est inférieure à  1970,
       on considère que l'année est de 100 ans supérieure, c.-à-d. entre 2000 et 2069.

       Some  RTCs  support  "wildcard" values in alarm fields, to support scenarios like periodic
       alarms at fifteen minutes after every hour, or on the first day of each month. Such  usage
       is  nonportable;  portable user-space code expects only a single alarm interrupt, and will
       either disable or reinitialize the alarm after receiving it.

       Certaines RTC gèrent des interruptions de périodes multiples d'une  seconde  plutôt  qu'en
       fractions  de  secondes,  des  alarmes  multiples,  la  programmation de signaux de sortie
       d'horloge, la mémoire non volatile, et d'autres possibilités matérielles qui ne  sont  pas
       accessibles par cette API.

VOIR AUSSI

       date(1),  adjtimex(2),  gettimeofday(2),  settimeofday(2),  stime(2),  time(2), gmtime(3),
       time(7), hwclock(8)

       Documentation/rtc.txt dans les sources du noyau Linux

TRADUCTION

       La traduction française de cette  page  de  manuel  a  été  créée  par  Christophe  Blaess
       <https://www.blaess.fr/christophe/>,  Stéphan  Rafin  <stephan.rafin@laposte.net>, Thierry
       Vignaud <tvignaud@mandriva.com>, François Micaux, Alain  Portal  <aportal@univ-montp2.fr>,
       Jean-Philippe    Guérard   <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)   <jean-
       luc.coulon@wanadoo.fr>,   Julien    Cristau    <jcristau@debian.org>,    Thomas    Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin
       Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>,  Denis
       Barbier <barbier@debian.org> et David Prévot <david@tilapin.org>

       Cette  traduction  est  une  documentation libre ; veuillez vous reporter à la GNU General
       Public  License  version 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩   concernant   les
       conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un
       message à ⟨debian-l10n-french@lists.debian.org⟩.