patch-2.1.96 linux/drivers/scsi/ultrastor.c
Next file: linux/drivers/scsi/wd7000.c
Previous file: linux/drivers/scsi/tmscsim.c
Back to the patch index
Back to the overall index
- Lines: 50
- Date:
Sat Apr 11 11:13:25 1998
- Orig file:
v2.1.95/linux/drivers/scsi/ultrastor.c
- Orig date:
Tue Aug 12 20:26:26 1997
diff -u --recursive --new-file v2.1.95/linux/drivers/scsi/ultrastor.c linux/drivers/scsi/ultrastor.c
@@ -137,6 +137,7 @@
#include <asm/io.h>
#include <asm/bitops.h>
#include <asm/system.h>
+#include <asm/spinlock.h>
#include <asm/dma.h>
#define ULTRASTOR_PRIVATE /* Get the private stuff from ultrastor.h */
@@ -294,6 +295,7 @@
#endif
static void ultrastor_interrupt(int, void *, struct pt_regs *);
+static void do_ultrastor_interrupt(int, void *, struct pt_regs *);
static inline void build_sg_list(struct mscp *, Scsi_Cmnd *SCpnt);
@@ -507,7 +509,7 @@
config.mscp_free = ~0;
#endif
- if (request_irq(config.interrupt, ultrastor_interrupt, 0, "Ultrastor", NULL)) {
+ if (request_irq(config.interrupt, do_ultrastor_interrupt, 0, "Ultrastor", NULL)) {
printk("Unable to allocate IRQ%u for UltraStor controller.\n",
config.interrupt);
return FALSE;
@@ -577,7 +579,7 @@
printk("U24F: invalid IRQ\n");
return FALSE;
}
- if (request_irq(config.interrupt, ultrastor_interrupt, 0, "Ultrastor", NULL))
+ if (request_irq(config.interrupt, do_ultrastor_interrupt, 0, "Ultrastor", NULL))
{
printk("Unable to allocate IRQ%u for UltraStor controller.\n",
config.interrupt);
@@ -1155,6 +1157,15 @@
#if (ULTRASTOR_DEBUG & UD_INTERRUPT)
printk("USx4F: interrupt: returning\n");
#endif
+}
+
+static void do_ultrastor_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+{
+ unsigned long flags;
+
+ spin_lock_irqsave(&io_request_lock, flags);
+ ultrastor_interrupt(irq, dev_id, regs);
+ spin_unlock_irqrestore(&io_request_lock, flags);
}
#ifdef MODULE
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov