root/include/linux/blkdev.h

/* [previous][next][first][last][top][bottom][index][help] */

INCLUDED FROM


   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  * Ok, this is an expanded form so that we can use the same
  11  * request for paging requests when that is implemented. In
  12  * paging, 'bh' is NULL, and the semaphore is used to wait
  13  * for read/write completion.
  14  */
  15 struct request {
  16         volatile int rq_status; /* should split this into a few status bits */
  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;                /* READ or WRITE */
  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 extern void unplug_device(void * data);
  53 
  54 /* md needs this function to remap requests */
  55 extern int md_map (int minor, kdev_t *rdev, unsigned long *rsector, unsigned long size);
  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

/* [previous][next][first][last][top][bottom][index][help] */