示例#1
0
/*
 * 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;
}
示例#2
0
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
}