1 #ifndef _LINUX_BLKDEV_H
2 #define _LINUX_BLKDEV_H
3
4 #include <linux/major.h>
5 #include <linux/sched.h>
6 #include <linux/genhd.h>
7 #include <linux/tqueue.h>
8
9
10
11
12
13
14
15 struct request {
16 volatile int rq_status;
17 #define RQ_INACTIVE (-1)
18 #define RQ_ACTIVE 1
19 #define RQ_SCSI_BUSY 0xffff
20 #define RQ_SCSI_DONE 0xfffe
21 #define RQ_SCSI_DISCONNECTING 0xffe0
22
23 kdev_t rq_dev;
24 int cmd;
25 int errors;
26 unsigned long sector;
27 unsigned long nr_sectors;
28 unsigned long current_nr_sectors;
29 char * buffer;
30 struct semaphore * sem;
31 struct buffer_head * bh;
32 struct buffer_head * bhtail;
33 struct request * next;
34 };
35
36 struct blk_dev_struct {
37 void (*request_fn)(void);
38 struct request * current_request;
39 struct request plug;
40 struct tq_struct plug_tq;
41 };
42
43 struct sec_size {
44 unsigned block_size;
45 unsigned block_size_bits;
46 };
47
48 extern struct sec_size * blk_sec[MAX_BLKDEV];
49 extern struct blk_dev_struct blk_dev[MAX_BLKDEV];
50 extern struct wait_queue * wait_for_request;
51 extern void resetup_one_dev(struct gendisk *dev, int drive);
52
53
54 extern void add_request(struct blk_dev_struct * dev, struct request * req);
55 extern struct request *get_md_request (int max_req, kdev_t dev);
56
57 extern int * blk_size[MAX_BLKDEV];
58
59 extern int * blksize_size[MAX_BLKDEV];
60
61 extern int * hardsect_size[MAX_BLKDEV];
62
63 #endif