Provided by:
manpages-fr_3.32d0.2p4-1_all 
NOM
rtc - Horloge temps reel
SYNOPSIS
#include <linux/rtc.h>
int ioctl(fd, RTC_request, param);
DESCRIPTION
Il s'agit d'une interface aux pilotes pour les horloges temps reel
(RTC).
La plupart des ordinateurs disposent d'une ou plusieurs horloges
materielles integrees, enregistrant l'heure locale. Elles sont appelees
<< horloges temps reel >> (RTC). L'une d'entre elles est generalement
alimentee par une pile afin de rester a l'heure une fois l'ordinateur
eteint. Les RTC permettent souvent d'utiliser des alarmes et d'autres
interruptions.
Tous les PC i386 et les systemes bases sur ACPI ont une RTC compatible
avec la puce Motorola MC146818 du PC/AT d'origine. Aujourd'hui
l'horloge est generalement integree au jeu de composants de la carte
mere (<< south bridge >>) et utilise une pile de secours remplacable de
la taille d'une piece de monnaie.
Les systemes autres que les PC, comme les systemes embarques construits
autour de processeurs embarquant tout le systeme, utilisent d'autres
mises en oeuvre. Generalement, ils n'offrent pas les memes
fonctionnalites qu'une RTC de PC/AT.
RTC vs horloge syst`eme
Les RTC ne doivent pas etre confondues avec l'horloge systeme, qui est
une horloge logicielle geree par le noyau et utilisee dans
gettimeofday(2) et time(2), ainsi que pour le marquage temporel des
fichiers, etc. L'horloge systeme indique le nombre de secondes et
microsecondes ecoulees depuis un instant de depart, defini comme depuis
l'epoque POSIX : 1er janvier 1970 a 00:00:00 (UTC). (Une mise en oeuvre
usuelle compte le nombre d'interruptions, une par pulsation a une
frequence de 100, 250 ou 1000 Hz.) C'est-a-dire qu'elle est supposee
renvoyer l'heure locale, comme le font les RTC.
Une difference cle entre une RTC et l'horloge systeme est qu'une RTC
fonctionne meme lorsque le systeme est dans un etat de veille
d'alimentation (incluant << eteint >>) et que l'horloge systeme ne peut
fonctionner. Jusqu'a son initialisation, l'horloge systeme ne peut
indiquer que le temps ecoule depuis le demarrage du systeme mais pas
celui depuis l'epoque POSIX. Ainsi, au demarrage et apres la sortie de
veille, l'horloge systeme sera souvent reglee a l'heure locale actuelle
en utilisant une RTC. Les systemes sans RTC ont besoin de regler leur
horloge systeme par un autre moyen, peut-etre a travers le reseau ou en
entrant les valeurs a la main.
Fonctionnalit'es d'une RTC
Les RTC peuvent etre lues et reglees avec hwclock(8), ou directement en
utilisant les ioctl listes ci-dessous.
En plus du compte de la date et de l'heure, de nombreuses RTC peuvent
aussi generer des interruptions :
* a chaque mise a jour de l'horloge (c.-a-d.. une fois par seconde) ;
* a des intervalles reguliers, de frequence reglable a une puissance
de 2 entre 2 Hz et 8192 Hz ;
* lorsque la date d'une alarme reglee auparavant est atteinte.
Chacune de ces sources d'interruptions peut etre activee ou desactivee
separement. Sur de nombreux systemes, l'interruption venant de l'alarme
peut etre configuree comme un evenement declenchant le reveil du
systeme, et ainsi sortir le systeme d'un etat de veille d'alimentation
comme la veille en RAM (STR, appelee S3 dans les systemes ACPI),
l'hibernation (appelee S4 dans les systemes ACPI) ou meme l'extinction
(appelee S5 dans les systemes ACPI). Sur certains systemes, la pile de
secours de la RTC ne peut generer d'interruptions, alors qu'une autre
le peut.
Le peripherique /dev/rtc (ou /dev/rtc0, /dev/rtc1, etc.) est en lecture
seule et un seul acces simultane est possible. Un processus appelant
read(2) ou select(2) est bloque jusqu'a la reception de l'interruption
RTC suivante. Suite a 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 a read(2).
Interface ioctl(2)
Les appels ioctl(2) suivants sont definis sur les descripteurs des
fichiers associes aux peripheriques 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 utilise */
int tm_yday; /* non utilise */
int tm_isdst; /* non utilise */
};
Les membres de cette structure ont les memes sens et les memes
portees que la ceux de la structure tm decrite dans gmtime(3).
Un pointeur vers cette structure est attendu en troisieme
parametre pour ioctl(2).
RTC_SET_TIME
Regle cette horloge RTC a l'heure specifiee par la structure
rtc_time vers laquelle pointe le troisieme parametre passe a
ioctl(2). Pour pouvoir modifier l'heure RTC, le processus doit
etre privilegie (i.e. disposer du droit CAP_SYS_TIME).
RTC_ALM_READ, RTC_ALM_SET
Lit et regle l'heure d'alarme, pour les horloges RTC qui gerent
les alarmes. L'interruption venant de l'alarme doit etre activee
ou desactivee separement en utilisant respectivement les
requetes RTC_AIE_ON ou RTC_AIE_OFF. Le troisieme parametre
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
utilises.
RTC_IRQP_READ, RTC_IRQP_SET
Lit et regle la frequence des interruptions, pour les horloges
RTC gerant les interruptions periodiques. L'interruption
periodique doit etre activee ou desactivee separement en
utilisant respectivement les requetes RTC_PIE_ON ou RTC_PIE_OFF.
Le troisieme parametre d'ioctl(2) est un unsigned long * ou un
unsigned long respectivement. La valeur represente la frequence
en interruptions par seconde. Le jeu des frequences permises est
l'ensemble des multiples de deux entre 2 et 8192. Seul un
processus privilegie (i.e. disposant du droit CAP_SYS_RESOURCE)
peut regler une frequence superieure a celle specifiee dans
/proc/sys/dev/rtc/max-user-freq, par defaut 64.
RTC_AIE_ON, RTC_AIE_OFF
Active ou desactive l'interruption venant de l'alarme, pour les
RTC qui gerent les alarmes. Le troisieme parametre d'ioctl(2)
est ignore.
RTC_UIE_ON, RTC_UIE_OFF
Active ou desactive l'interruption a chaque mise a jour, pour
les horloges gerant cette interruption envoyee chaque seconde.
Le troisieme parametre d'ioctl(2) est ignore.
RTC_PIE_ON, RTC_PIE_OFF
Active ou desactive l'interruption periodique, pour les RTC
gerant ces interruptions periodiques. Le troisieme parametre
d'ioctl(2) est ignore. Seul un processus privilegie (i.e.
disposant du droit CAP_SYS_RESOURCE) peut regler une frequence
superieure a celle specifiee dans
/proc/sys/dev/rtc/max-user-freq.
RTC_EPOCH_READ, RTC_EPOCH_SET
De nombreuses RTC codent l'annee dans un registre de 8 bits,
interprete soit comme un nombre binaire de 8 bits, soit comme un
nombre BCD. Dans les deux cas, le nombre est interprete
relativement a l'epoque de cette RTC. L'epoque de la RTC est
initialise a 1900 sur la plupart des systemes, sauf sur Alpha et
Mips ou il peut etre initialise a 1952, 1980 ou 2000, suivant la
valeur du registre RTC destine a l'annee. Avec certaines RTC,
ces operations peuvent etre utilisees respectivement pour lire
ou regler l'epoque de la RTC. Le troisieme parametre ioctl(2)
est respectivement un unsigned long * ou un unsigned long, et la
valeur de retour (ou assignee) est l'epoque. Pour regler
l'epoque RTC, le processus doit etre privilegie (i.e. disposer
du droit CAP_SYS_TIME).
RTC_WKALM_RD, RTC_WKALM_SET
Certaines RTC disposent d'une interface pour les alarmes plus
puissante, utilisant ces ioctl pour lire ou ecrire 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 utilise pour activer ou desactiver
l'interruption venant de l'alarme, ou pour lire son etat
actuel ; lorsque ces appels sont utilises, RTC_AIE_ON et
RTC_AIE_OFF ne sont pas utilises. L'attribut pending est utilise
par RTC_WKALM_RD pour signaler une interruption en attente
(c'est en general inutile sous Linux, excepte lors du dialogue
avec la RTC geree par un microcode EFI). Le champ time est
autant utilise par RTC_ALM_READ et RTC_ALM_SET, excepte que les
champs tm_mday, tm_mon et tm_year sont egalement valides. Un
pointeur vers cette structure doit etre passe en troisieme
parametre ioctl(2).
FICHIERS
/dev/rtc, /dev/rtc0, /dev/rtc1 : fichiers speciaux de peripherique
caractere des differentes RTC.
/proc/driver/rtc : etat de la (premiere) RTC.
NOTES
Lorsque l'horloge du noyau est synchronisee avec une reference externe
en utilisant adjtimex(2), le noyau met a jour une RTC designee toutes
les 11 minutes. Pour y parvenir, le noyau doit arreter brievement les
interruptions periodiques, ce qui peut affecter les programmes
utilisant cette RTC.
L'epoque d'une RTC n'a rien a voir avec l'epoque POSIX, utilise
uniquement pour l'horloge systeme.
Si l'annee relative a l'epoque de la RTC et au registre de l'annee est
inferieure a 1970, on considere que l'annee est de 100 ans superieure,
c.-a-d. entre 2000 et 2069.
Certaines RTC gerent les caracteres generiques (<< wildcard >>) dans
les champs des alarmes, destines aux scenarios comme les alarmes
periodiques toutes les quinze minutes apres chaque heure, ou au premier
jour de chaque mois. Une telle utilisation n'est pas portable ; un code
en espace utilisateur portable n'attend qu'une seule interruption
d'alarme, puis desactivera ou reinitialisera cette alarme apres l'avoir
recue.
Certaines RTC gerent des interruptions de periodes multiples d'une
seconde plutot qu'en fractions de secondes, des alarmes multiples, la
programmation de signaux de sortie d'horloge, la memoire non volatile,
et d'autres possibilites materielles 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),
/usr/src/linux/Documentation/rtc.txt
COLOPHON
Cette page fait partie de la publication 3.32 du projet man-pages
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent etre trouvees a l'adresse
<URL:http://www.kernel.org/doc/man-pages/>.
TRADUCTION
Depuis 2010, cette traduction est maintenue a l'aide de l'outil po4a
<URL:http://po4a.alioth.debian.org/> par l'equipe de traduction
francophone au sein du projet perkamon
<URL:http://perkamon.alioth.debian.org/>.
Christophe Blaess <URL:http://www.blaess.fr/christophe/> (1996-2003),
Alain Portal <URL:http://manpagesfr.free.fr/> (2003-2006). Simon
Paillard et l'equipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en ecrivant a
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir acces a la version anglaise de ce document
en utilisant la commande << man -L C <section> <page_de_man> >>.
Linux 25 fevrier 2010 RTC(4)