Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[ACPI] Reveil a une date/heure donnée

2 réponses
Avatar
groups
Hello,

Je voudrais pouvoir reveiller automatiquement mon PC a une date/heure prevue.
Pour cela, j'utilise l'acpi et le fichier /proc/acpi/alarm comme decrit la :
http://acpi.sourceforge.net/documentation/alarm.html
Cela marche tres bien, mais seulement sur 24h, la date n'est pas prise en compte :(
J'ai cherché sur google et dans les mailings list de acpi, amis je n'ai rien trouvé.
Est-ce que cela fonctionne ? Faut-il une version particuliere du noyau, de l'acpi ?

Je suis en noyau 2.4.23, mais je n'ai pas ma version acpi sous la main.

Merci pour toute aide !
Jerome

2 réponses

Avatar
Erwann ABALEA
Bonjour,

On 10 May 2004, JJL wrote:

Je voudrais pouvoir reveiller automatiquement mon PC a une date/heure prevue.
Pour cela, j'utilise l'acpi et le fichier /proc/acpi/alarm comme decrit la :
http://acpi.sourceforge.net/documentation/alarm.html
Cela marche tres bien, mais seulement sur 24h, la date n'est pas prise en compte :(


Je viens de vérifier dans les sources du noyau (2.6.5), et c'est bien ce
que je pensais, la couche ACPI utilise l'horloge RTC pour faire ce
travail. Quand ton PC est éteint, historiquement, le seul composant qui
fonctionne encore (sur pile) est l'horloge RTC, justement pour permettre à
ton PC de ne pas perdre l'heure. Ce circuit RTC sait générer une
interruption à une heure précise, et les PC savent maitenant se rallumer à
la réception de cette interruption.

Manque de bol, le circuit RTC ne permet pas de spécifier une date pour la
génération de l'interruption, seulement une heure. Ceci explique le
comportement que tu obtiens.

En lisant les sources du noyau sur le sous-système ACPI, dans le fichier
drivers/acpi/system.c, fonction acpi_system_write_alarm() (celle qui est
appelée quand tu écris quelque chose dans /proc/acpi/alarm), on peut voir
d'abord que des conversions sont effectuées sur les données que
l'utilisateur fournit (le circuit RTC a la particularité de pouvoir au
choix représenter la date et l'heure en binaire ou en BCD), puis les
bonnes valeurs sont passées au circuit RTC:

-----
/* write the fields the rtc knows about */
CMOS_WRITE(hr, RTC_HOURS_ALARM);
CMOS_WRITE(min, RTC_MINUTES_ALARM);
CMOS_WRITE(sec, RTC_SECONDS_ALARM);
-----

Aucune info de date n'est prise en compte. Par contre, juste après, il y a
du code (désactivé par défaut) pour tirer parti de la date spécifiée. Ce
code va chercher dans la table ACPI les emplacements mémoire dans le
circuit RTC pour stocker la date de l'alarme. Je ne connais pas de circuit
RTC supportant une date d'alarme, à part celui de mon bon vieux HP200LX ;)

--
Erwann ABALEA - RSA PGP Key ID: 0x2D0EABD5
-----
HC> Pourquoi les dates sont de la forme "04 Feb" et non "04 Fév", comme
HC> on est en droit de l'attendre sur une hiérarchie francophone ?
Pourquoi il y a tant d'enculeurs de mouches fainéants sur fr.* ?
-+- AT in: Guide du Neuneu d'Usenet- Le dino n'est pas neuneutophone -+-

Avatar
groups
Bonjour,

Tout d'abord, merci beaucoup pour cette reponse précise et detaillée !
Cela répond parfaitement a ma question: je ne peux pas avec l'ACPI :(

Erwann ABALEA wrote
Je viens de vérifier dans les sources du noyau (2.6.5), et c'est bien ce
...
J'ai regardé dans les sources de ma version, et c'est bien entendu

pareil.

Aucune info de date n'est prise en compte. Par contre, juste après, il y a
du code (désactivé par défaut) pour tirer parti de la date spécifiée. Ce
code va chercher dans la table ACPI les emplacements mémoire dans le
circuit RTC pour stocker la date de l'alarme. Je ne connais pas de circuit
RTC supportant une date d'alarme, à part celui de mon bon vieux HP200LX ;)
Donc a priori ca ne sert a rien d'activer ce code et de recompiler.

Y'a-t-il un risque (materiel) à l'activer si mon circuit ne le
supporte pas ?

Je vais m'orienter vers une autre solution: nvram-wakeup qui semble
pouvoir gerer la date (http://sourceforge.net/projects/nvram-wakeup)
et qui supporte ma carte mere.

Encore Merci
Jérôme