Utilisation de services de minuteur multiprocesseur
Sur un système multiprocesseur, plusieurs processeurs peuvent accéder simultanément aux blocs de demande de temporisation et aux structures de temporisation de surveillance.
Les services de noyau ci-dessous peuvent modifier les informations critiques de ces blocs et structures, et vérifier par conséquent s'il est sûr d'effectuer le service demandé avant de poursuivre:
| Article | Descriptif |
|---|---|
| Tstop | Annule une demande de temporisateur en attente. |
| W_clear | Supprime un temporisateur de surveillance de la liste des temporisateurs de surveillance connus du noyau. |
| W_init | Enregistre un temporisateur de surveillance avec le noyau. |
Si le service demandé ne peut pas être exécuté, le service de noyau renvoie une valeur d'erreur.
Pour être en sécurité multiprocesseur, l'appelant doit vérifier la valeur renvoyée par ces services de noyau. Si le service n'a pas abouti, l'appelant doit prendre une action appropriée, par exemple, réessayer dans une boucle. Si l'appelant détient un verrou de pilote de périphérique, il doit être libéré, puis réacquérir le verrou dans cette boucle afin d'éviter l'interblocage.
Les pilotes qui ont été écrits pour les systèmes uniprocesseur ne vérifiable pas les valeurs de retour de ces services de noyau et ne sont pas en sécurité multiprocesseur. De tels pilotes peuvent encore fonctionner comme des pilotes de périphérique funnelées.