Nächste Seite: Block Device Drivers (Kernel
Aufwärts: Linux Device Drivers
Vorherige Seite: Timer und Workqueues
Inhalt
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