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?

Était-ce utile?

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
scroll top