Cela se fait via les registres "alarm" de la RTC (horloge temps réel) . Sur le PC-AT d'origine, cette puce était un Motorola MC146818.
Avant de se mettre en veille (ACPI S3), le noyau programme l'heure de réveil programmée suivante dans les registres "d'alarme" du RTC, qui est toujours sous tension. Lorsque l'heure de réveil arrive, le RTC déclenchera le chipset pour mettre le système sous tension et le reprendre à partir de S3. (Notez que dans la plupart des systèmes modernes, le RTC fait en fait partie du southbridge lui-même, de sorte que la signalisation de mise sous tension a lieu en interne).
Une fois que le système a quitté le mode veille, le noyau évalue sa liste d'événements de réveil en attente et répartit ceux qui sont arrivés.
Ce document d’Intel décrit l’interface (pour les systèmes x86):
La programmation de ces registres s’effectue dans le noyau Linux sous Windows cmos_set_alarm
.
Jonathon Reinhart
la source