Linux |
CentOS 4.8 |
|
![]() |
probe_irq_off(9) |
![]() |
|
probe_irq_on, probe_irq_off − recherche d’IRQ |
|
#include <linux/interrupt.h> |
|
unsigned long probe_irq_on(void) |
|
int probe_irq_off(unsigned long irqs); |
|
Usage |
|
probe_irq_on() active la recherche d’IRQ. Les interruptions sans gestionnaires (c’est-à -dire que le pointeur sur le gestionnaire est NULL) sont activées. La routine générique de gestion des interruptions désactive les interruptions qui se produisent. probe_irq_on() ajoute un vecteur à toutes les IRQ dont le numéro est passé en paramètre. Cette fonction attend 100 ms pour masquer une interruption qui se produirait puis retourne le vecteur. 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. |
|
Exemple |
|
Comme cette explication est confuse, voici un exemple pour le pilote du FUBAR 2000 pour détecter une IRQ : |
|
unsigned long irqs; irqs = probe_irq_on(); outb(FB2K_GIVE_ME_AN_INTERRUPT_OR_GIVE_ME_DEATH,
FB2K_CONTROL_PORT); 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_on() retourne la liste des interruptions non gérées (sauf celle qui reçoivent des interruptions inattendues). Cette valeur doit être passée comme paramètre du prochain appel à probe_irq_off(). 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é. |
|
Linux 1.2+. (sauf sur les machines à base de m68k). |
|
request_irq(9) arch/*/kernel/irq.c |
|
Neil Moore <amethyst@maxwell.ml.org> |
|
Thierry Vignaud <tvignaud@mandrakesoft.com>, 1999 |
|
Comme mentionné précédemment, ces fonctions ne sont pas disponibles sur les systèmes à base de microprocesseurs Motonrola (m68k : atari, amiga, mac, ...). Cette page est confuse. |
![]() |
probe_irq_off(9) | ![]() |