/* * Interrupt handler (main routine of the driver) */ static irqreturn_t inia100_intr(int irqno, void *devid, struct pt_regs *regs) { struct Scsi_Host *host = (struct Scsi_Host *)devid; ORC_HCS *pHcb = (ORC_HCS *)host->hostdata; unsigned long flags; spin_lock_irqsave(host->host_lock, flags); orc_interrupt(pHcb); spin_unlock_irqrestore(host->host_lock, flags); return IRQ_HANDLED; }
static void subIntr(ORC_HCS * pHCB, int irqno) { #if LINUX_VERSION_CODE >= CVT_LINUX_VERSION(2,1,95) unsigned long flags; spin_lock_irqsave(&io_request_lock, flags); #endif if (pHCB->HCS_Intr != irqno) { #if LINUX_VERSION_CODE >= CVT_LINUX_VERSION(2,1,95) spin_unlock_irqrestore(&io_request_lock, flags); #endif return; } orc_interrupt(pHCB); #if LINUX_VERSION_CODE >= CVT_LINUX_VERSION(2,1,95) spin_unlock_irqrestore(&io_request_lock, flags); #endif }