The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

probe_irq_on (9)
  • >> probe_irq_on (9) ( Linux man: Ядро )
  •  

    NAME

    probe_irq_on, probe_irq_off - safe probing for IRQs
     
    

    SYNOPSIS

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

    DESCRIPTION

     

    Usage

    probe_irq_on()

    turns on IRQ detection. It operates by enabling all interrupts which have no handlers, while keeping the handlers for those interrupts NULL. The kernel's generic interrupt handling routine will disable these IRQs when an interrupt is received on them. probe_irq_on() adds each of these IRQ numbers to a vector which it will return. It waits approximately 100ms for any spurious interrupts that may occur, and masks these from its vector; it then returns this vector to its caller.

    probe_irq_off() tests an internal list of enabled IRQs against its irqs parameter, which should be the value returned by the last probe_irq_on(). This function basically detects which IRQs have been switched off, and thus which ones have received interrupts.  

    Example

    This explanation may seem a bit confusing, so here is an example of code the mythical FUBAR 2000 driver could use to probe for IRQs:

    unsigned long irqs;
    int irq;

    irqs = probe_irq_on();

    outb(FB2K_GIVE_ME_AN_INTERRUPT_OR_GIVE_ME_DEATH,
         FB2K_CONTROL_PORT);

      /* the interrupt could take a while to occur */
    udelay(1000);

    irq = probe_irq_off(irqs);

    if (irq == 0) {
           printk("fb2k: could not detect IRQ.\n");

           printk("fb2k: Installation failed.\n");

    } else if (irq == -1) {
           printk("fb2k: multiple IRQs detected.\n");

           printk("fb2k: Installation failed.\n");

    } else {
           fb2k_dev->irq = irq;

           printk("fb2k: using probed IRQ %d.\n", irq);

    }

     

    RETURN VALUE

    probe_irq_on() returns a bitmap of all unhandled IRQs (except those which are receiving spurious interrupts). This value should only be used as a parameter to the next call to probe_irq_off().

    probe_irq_off() returns the IRQ number of whichever unhandled interrupt has occurred since the last probe_irq_on(). If no interrupts have occurred on any of the marked IRQs, 0 is returned; if interrupts have occurred on more than one of these IRQs, -1 is returned.  

    AVAILABILITY

    Linux 1.2+. These functions are not available on m68k-based machines.  

    SEE ALSO

    request_irq(9)

    arch/*/kernel/irq.c  

    AUTHOR

    Neil Moore <amethyst@maxwell.ml.org>  

    BUGS

    As mentioned above, these functions are not available on m68k-based machines.

    This manpage is way too confusing.


     

    Index

    NAME
    SYNOPSIS
    DESCRIPTION
    Usage
    Example
    RETURN VALUE
    AVAILABILITY
    SEE ALSO
    AUTHOR
    BUGS


    Поиск по тексту MAN-ов: 




    Спонсоры:
    Inferno Solutions
    Ideco
    A-Real
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2021 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру