        -
.          (
),      , ,  ,  -
         .

    request_irq ()  .  
   ,       -
   .       
 -EBUSY,    ,      
  (    ,        
SA_SHIRQ).

  ,   request_irq ()  
   (sleep) , ,     -
 ,    ,     .
   ,   request_irq () 
   ,      . 
   ,    ,  
request_irq ()  - .   ,    -
        /proc/irq. 
proc mkdir ()        
procfs.     proc_create ()    -
   procfs,      
kmalloc ()   .      11, " -
",  kmalloc ()     .   !

         
   .

if (request_irq(irqn, my_interrupt, SA_SHIRQ, "my device", dev)) {

printk(KERN_ERR "my_device: cannot register IRQ %d\n", irqn);

return -;

}

    irqn        -
,  my_interrupt      , -
       ,   
"my_device", dev   dev_id.     
,   ,     .
     ,   -
  .       -
     .   
       -
,        ,
   .

  

      

void free irq(unsigned int irq, void *dev id)

114  6