Content-type: text/html
probe_irq_on()
probe_irq_off() teste si irqs appartient à une liste interne d'IRQ activées. irqs devrait être la valeur renvoyée par le dernier appel à probe_irq_on(). Cette fonction permet de détecter les IRQ dont le vecteur a été désactivé, c'est-à-dire, celles ayant reçu une interruption.
unsigned long irqs;
int irq;
irqs = probe_irq_on();
outb(FB2K_GIVE_ME_AN_INTERRUPT_OR_GIVE_ME_DEATH,
FB2K_CONTROL_PORT);
/* L'interruption peut prendre du temps pour se produire */
udelay(1000);
irq = probe_irq_off(irqs);
if (irq == 0) {
printk("fb2k: Impossible de détecter une IRQ.\n");
printk("fb2k: Échec de l'nstallation.\n");
} else if (irq == -1) {
printk("fb2k: plusieurs IRQ ont été détectées.\n");
printk("fb2k: L'installation a échoué.\n");
} else {
fb2k_dev->irq = irq;
printk("fb2k: utilisation de l'IRQ IRQ %d.\n", irq);
probe_irq_off() retourne le numéro d'IRQ pour laquelle une interruption non gérée s'est produite depuis le dermier appel à probe_irq_on(). Si aucune intterruption ne s'est produite sur les IRQ indiquées, 0 est renvoyé ; sinon -1 est renvoyé.
arch/*/kernel/irq.c
Cette page est confuse.