PROBE_IRQ_ON

Section: Fonctions du Noyau de Linux (9)
Updated: 1997/08/14 07:53:32
Index Retour au Menu Principal


 

NOM

probe_irq_on, probe_irq_off - recherche d'IRQ

 

SYNOPSIS

#include <linux/interrupt.h>
unsigned long probe_irq_on(void)
int probe_irq_off(unsigned long irqs);

 

DESCRIPTION

 

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;
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);


 

VALEUR RENVOYÉE

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é.

 

DISPONIBILITÉ

Linux 1.2+. (sauf sur les machines à base de m68k).

 

VOIR AUSSI

request_irq(9)

arch/*/kernel/irq.c

 

AUTEUR

Neil Moore <amethyst@maxwell.ml.org>

 

TRADUCTEUR

Thierry Vignaud <tvignaud@mandrakesoft.com>, 1999  

BOGUES

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.



 

Index

NOM
SYNOPSIS
DESCRIPTION
Usage
Exemple
VALEUR RENVOYÉE
DISPONIBILITÉ
VOIR AUSSI
AUTEUR
TRADUCTEUR
BOGUES


Time: 09:54:52 GMT, December 26, 2004