next up previous contents
Nächste Seite: Block Device Drivers (Kernel Aufwärts: Linux Device Drivers Vorherige Seite: Timer und Workqueues   Inhalt

Interrupts

Interrupts sind ein kostbares Betriebsmittel. Normalerweise stehen nur 15 oder 16 davon zur Verfügung. Jeder Treiber kann Interrupts registrieren und wieder freigeben. Zu diesem Zweck sind die folgenden Funktionen implementiert:
       int request_irq(unsigned int irq,
              void (*handler)(int, void *, struct pt_regs *),
              unsigned long irqflags, const char *devname,
              void *dev_id);
       void free_irq(unsigned int irq, void *dev_id);
Dem Handler werden beim Aufruf die folgenden Werte übergeben:
int:
Die Interrupt Nummer
void *(dev_id):
Den Device id des Handlers
pt_regs *regs:
Bereich der geretten Register
Für die Details siehe man-Page von request_irq(9). Normalerweise ruft beim Öffnen eines Geräts die Funktion request_irq() und als letzte Funktion beim Schliessen die Funktion free_irq() auf.

Hans-Peter Oser 2007-10-30