next up previous contents
suivant: Pilote du clavier monter: Pilote de l'horloge précédent: Fonctionnement   Table des matières

Gestion de l'heure

Après informer l'ordonnanceur d'un basculement de thread, l'horloge met également à disposition du système l'heure et la date actuelle. Cette information est stockée par le pilote de l'horloge sous la forme d'une structure t_clock, composée des champs suivants:

  1. initial_time : Date et heure initiale, lors du démarrage du système, exprimée en secondes.
  2. elapsed_time : Temps écoulé depuis le démarrage du système, en secondes.

Lors de son initialisation, le pilote de l'horloge initialise une variable t_clock, la system_clock. Pour cela, l'horloge demande au pilote du CMOS la date et l'heure actuelle, la transforme en secondes, et l'affecte au champ ``initial_time'' de la system_clock. Le pilote affecte également la valeur 0 au champ ``elapsed_time'' de la system_clock.

La mise à jour de ce champ se passe de la manière suivante: l'horloge sait parfaitement que le quantum de temps alloué à chaque thread est de ``NB_TICK'', soit 10ms. L'horloge utilise donc un compteur temporaire, celui de la seconde en cours, qu'elle incrémente de 10 à chaque changement de thread. Ainsi lorsque le compteur arrive à 60, elle incrémente le champ ``elapsed_time'' de la system_clock et remet le compteur à 0.

Lorsque l'on souhaite connaître l'heure actuelle, l'horloge renvoie la somme des deux champs de la system_clock. On obtient alors l'heure et la date actuelle du système exprimée en secondes. On utilise pour cela l'appel système exporté par l'horloge :

    unsigned int system_time(void);


next up previous contents
suivant: Pilote du clavier monter: Pilote de l'horloge précédent: Fonctionnement   Table des matières
nicolas 2006-07-30