Wie kann man wissen, wenn ein Zeitplan () Aufruf aufgrund eines Signals zurückkehrt?
-
11-09-2019 - |
Frage
In einem Gerätetreiber für einige PCI-Hardware, habe ich einen ioctl
Anruf, der auf dem PCI-Bus für einen eingehenden Interrupt wartet. Mit wait_queue_head_t
, habe ich die Aufgabe, durch den Aufruf schedule()
zu schlafen.
Dann wacht die irq_handler
Funktion diese Aufgabe, wenn die Unterbrechung auf dem PCI-Bus angehoben wird. Alles scheint richtig zu arbeiten.
Meine Frage ist, wie zu unterscheiden, ob die schedule()
nennt es wegen meiner irq_handler
Funktion Wake zurückkehrt, oder weil einige Signale senden gewesen?
Habe ich es mit Fahnen in der irq_handler
Funktion von mir handhaben müssen?
Lösung
Etwas nach dem Vorbild dieser, nach dem schedule
Aufruf:
if (signal_pending(current)) {
retval = -EINTR;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow