Comment savoir quand un calendrier () est de retour en raison d'un signal?
-
11-09-2019 - |
Question
Dans un pilote de périphérique pour certains périphériques PCI, j'ai un appel ioctl
qui attend une interruption d'entrée sur le bus PCI. En utilisant wait_queue_head_t
, je mets la tâche de dormir en appelant schedule()
.
Ensuite, la fonction irq_handler
se réveille cette tâche lorsque l'interruption est élevé sur le bus PCI. Tout semble fonctionner correctement.
Ma question est de savoir comment différencier si l'appel schedule()
revient à cause de ma fonction irq_handler
réveiller, ou parce que certains signal a été envoyé?
Dois-je gérer par moi-même avec des drapeaux dans la fonction irq_handler
?
La solution
Quelque chose le long des lignes de cela, après l'appel schedule
:
if (signal_pending(current)) {
retval = -EINTR;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow