zion -  probe_irq_on

Nom

probe_irq_on, probe_irq_off - recherche d'IRQ

Résumé

#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 :

  1. unsigned long irqs;  
  2. int irq;  
  3. irqs = probe_irq_on();  
  4. outb(FB2K_GIVE_ME_AN_INTERRUPT_OR_GIVE_ME_DEATH,      FB2K_CONTROL_PORT);    /* L'interruption peut prendre du temps pour se produire */   
  5. udelay(1000);  
  6. irq = probe_irq_off(irqs);  
  7. if (irq == 0) {   
  8.   printk("fb2k: Impossible de détecter une IRQ.en");    
  9.   printk("fb2k: Échec de l'nstallation.en");   
  10. }  
  11. else if (irq == -1) {   
  12.   printk("fb2k: plusieurs IRQ ont été détectées.en");  
  13.   printk("fb2k: L'installation a échoué.en"); 
  14. }  
  15. else {    
  16.   fb2k_dev->irq = irq;   
  17.   printk("fb2k: utilisation de l'IRQ IRQ %d.en", irq);  
  18. }


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

Bugs

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.
Poster un commentaire
Utilisateur
Mot de passe
 
Informaticien.be - © 2002-2024 AkretioSPRL  - Generated via Kelare
The Akretio Network: Akretio - Freedelity - KelCommerce - Votre publicité sur informaticien.be ?