Come sapere quando un programma) chiamata (sta tornando a causa di un segnale?
-
11-09-2019 - |
Domanda
In un driver per alcuni hardware PCI, ho una chiamata ioctl
che attende un interrupt in arrivo sul bus PCI. Utilizzando wait_queue_head_t
, ho messo il compito di dormire chiamando schedule()
.
Quindi, la funzione irq_handler
si sveglia questa operazione quando l'interrupt è sollevata sul bus PCI. Tutto sembra funzionare correttamente.
La mia domanda è come differenziare se la chiamata schedule()
sta tornando a causa della mia funzione irq_handler
svegliarlo, o perché qualche segnale è stato invia?
Devo gestire da solo con le bandiere nella funzione irq_handler
?
Soluzione
Qualcosa sulla falsariga di questo, dopo la chiamata schedule
:
if (signal_pending(current)) {
retval = -EINTR;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow