patch-2.4.0-test3 linux/drivers/cdrom/gscd.c
Next file: linux/drivers/cdrom/gscd.h
Previous file: linux/drivers/cdrom/cm206.c
Back to the patch index
Back to the overall index
- Lines: 73
- Date:
Wed Jul 5 13:15:19 2000
- Orig file:
v2.4.0-test2/linux/drivers/cdrom/gscd.c
- Orig date:
Fri Jun 23 21:55:08 2000
diff -u --recursive --new-file v2.4.0-test2/linux/drivers/cdrom/gscd.c linux/drivers/cdrom/gscd.c
@@ -95,7 +95,7 @@
/* Schnittstellen zum Kern/FS */
static void do_gscd_request (request_queue_t *);
-static void __do_gscd_request (void);
+static void __do_gscd_request (unsigned long dummy);
static int gscd_ioctl (struct inode *, struct file *, unsigned int, unsigned long);
static int gscd_open (struct inode *, struct file *);
static int gscd_release (struct inode *, struct file *);
@@ -160,6 +160,7 @@
static int AudioEnd_m;
static int AudioEnd_f;
+static struct timer_list gscd_timer;
static struct block_device_operations gscd_fops = {
open: gscd_open,
@@ -271,23 +272,24 @@
static void do_gscd_request (request_queue_t * q)
{
- __do_gscd_request();
+ __do_gscd_request(0);
}
-static void __do_gscd_request (void)
+static void __do_gscd_request (unsigned long dummy)
{
unsigned int block,dev;
unsigned int nsect;
repeat:
- if (QUEUE_EMPTY || CURRENT->rq_status == RQ_INACTIVE) return;
+ if (QUEUE_EMPTY || CURRENT->rq_status == RQ_INACTIVE)
+ goto out;
INIT_REQUEST;
dev = MINOR(CURRENT->rq_dev);
block = CURRENT->sector;
nsect = CURRENT->nr_sectors;
if (QUEUE_EMPTY || CURRENT -> sector == -1)
- return;
+ goto out;
if (CURRENT -> cmd != READ)
{
@@ -318,6 +320,8 @@
#endif
gscd_read_cmd ();
+out:
+ return;
}
@@ -992,13 +996,16 @@
void __exit exit_gscd(void)
{
- devfs_unregister(devfs_find_handle(NULL, "gscd", 0, 0, 0, DEVFS_SPECIAL_BLK,
+ del_timer_async(&gscd_timer);
+
+ devfs_unregister(devfs_find_handle(NULL, "gscd", 0, 0, DEVFS_SPECIAL_BLK,
0));
if ((devfs_unregister_blkdev(MAJOR_NR, "gscd" ) == -EINVAL))
{
printk("What's that: can't unregister GoldStar-module\n" );
return;
}
+ blk_cleanup_queue(BLK_DEFAULT_QUEUE(MAJOR_NR));
release_region (gscd_port,4);
printk(KERN_INFO "GoldStar-module released.\n" );
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)