diff -urNX dontdiff linux-2.5.24/drivers/block/floppy.c linux-2.5.24-imm/drivers/block/floppy.c
--- linux-2.5.24/drivers/block/floppy.c Wed Jun 19 06:15:46 2002
+++ linux-2.5.24-imm/drivers/block/floppy.c Fri Jun 21 12:41:52 2002
@@ -150,7 +150,6 @@
#include <linux/fs.h>
#include <linux/kernel.h>
#include <linux/timer.h>
-#include <linux/tqueue.h>
#define FDPATCHES
#include <linux/fdreg.h>
@@ -997,13 +996,12 @@
{
}
-static struct tq_struct floppy_tq;
+static DECLARE_TASKLET(floppy_tasklet, NULL, 0);
-static void schedule_bh( void (*handler)(void*) )
+static void schedule_bh(void (*handler)(void))
{
- floppy_tq.routine = (void *)(void *) handler;
- queue_task(&floppy_tq, &tq_immediate);
- mark_bh(IMMEDIATE_BH);
+ floppy_tasklet.func = (void *) handler;
+ tasklet_schedule(&floppy_tasklet);
}
static struct timer_list fd_timer;
@@ -1011,7 +1009,7 @@
static void cancel_activity(void)
{
do_floppy = NULL;
- floppy_tq.routine = (void *)(void *) empty;
+ floppy_tasklet.func = (void *) empty;
del_timer(&fd_timer);
}
@@ -1789,7 +1787,7 @@
} while ((ST0 & 0x83) != UNIT(current_drive) && inr == 2 && max_sensei);
}
if (handler) {
- schedule_bh( (void *)(void *) handler);
+ schedule_bh(handler);
} else
FDCS->reset = 1;
is_alive("normal interrupt end");
@@ -1880,8 +1878,8 @@
printk("fdc_busy=%lu\n", fdc_busy);
if (do_floppy)
printk("do_floppy=%p\n", do_floppy);
- if (floppy_tq.sync)
- printk("floppy_tq.routine=%p\n", floppy_tq.routine);
+ if (test_bit(TASKLET_STATE_SCHED, &floppy_tasklet.state))
+ printk("floppy_tasklet.func=%p\n", floppy_tasklet.func);
if (timer_pending(&fd_timer))
printk("fd_timer.function=%p\n", fd_timer.function);
if (timer_pending(&fd_timeout)){
@@ -2049,7 +2047,7 @@
{
int ret;
- schedule_bh((void *)(void *)handler);
+ schedule_bh(handler);
if (command_status < 2 && NO_SIGNAL) {
DECLARE_WAITQUEUE(wait, current);
@@ -2968,7 +2966,7 @@
if (TESTF(FD_NEED_TWADDLE))
twaddle();
- schedule_bh( (void *)(void *) floppy_start);
+ schedule_bh(floppy_start);
#ifdef DEBUGT
debugt("queue fd request");
#endif
@@ -2986,7 +2984,7 @@
static void process_fd_request(void)
{
cont = &rw_cont;
- schedule_bh( (void *)(void *) redo_fd_request);
+ schedule_bh(redo_fd_request);
}
static void do_fd_request(request_queue_t * q)
@@ -4341,7 +4339,7 @@
if (have_no_fdc)
{
DPRINT("no floppy controllers found\n");
- run_task_queue(&tq_immediate);
+ tasklet_kill(&floppy_tasklet);
if (usage_count)
floppy_release_irq_and_dma();
blk_cleanup_queue(BLK_DEFAULT_QUEUE(MAJOR_NR));
@@ -4495,8 +4493,8 @@
printk("floppy timer still active:%s\n", timeout_message);
if (timer_pending(&fd_timer))
printk("auxiliary floppy timer still active\n");
- if (floppy_tq.sync)
- printk("task queue still active\n");
+ if (test_bit(TASKLET_STATE_SCHED, &floppy_tasklet.state))
+ printk("floppy tasklet still active\n");
#endif
old_fdc = fdc;
for (fdc = 0; fdc < N_FDC; fdc++)