1 驱动程序
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/init.h>
#include <linux/sched.h>
#include <linux/kernel.h> /* printk() */
#include <linux/slab.h> /* kmalloc() */
#include <linux/fs.h> /* everything... */
#include <linux/errno.h> /* error codes */
#include <linux/timer.h>
#include <linux/types.h> /* size_t */
#include <linux/fcntl.h> /* O_ACCMODE */
#include <linux/hdreg.h> /* HDIO_GETGEO */
#include <linux/kdev_t.h>
#include <linux/vmalloc.h>
#include <linux/genhd.h>
#include <linux/blkdev.h>
#include <linux/buffer_head.h> /* invalidate_bdev */
#include <linux/bio.h>
//块设备文件主设备号 72
#define BLOCK_DEVICEMAJOR COMPAQ_SMART2_MAJOR
// 块设备名字
#define BLOCK_DISKNAME "queue_block"
//块设备容量
#define BLOCK_DEV_BYTES (1*1024*1024) // 1M
//请求队列指针
static struct request_queue *block_request_queue;
// gendisk结构体指针变量
static struct gendisk *block_dev_disk;
//模拟磁盘空间
unsigned char block_dev_data[BLOCK_DEV_BYTES];
//该函数不能由驱动自己调用 由系统调用 系统认为是时候调用的时候调用
static void block_dev_