以下是一个最简单的块设备驱动,写完可以对编写块设备驱动的框架有初步了解。
环境:
Linux 2.6.29
源码:
simp_blkdev.c:
#include<linux/init.h>
#include<linux/module.h>
#include<linux/genhd.h>
#include<linux/fs.h>
#include<linux/blkdev.h>
#define SIMP_BLKDEV_DISKNAME "simp_blkdev"
#define SIMP_BLKDEV_DEVICEMAJOR COMPAQ_SMART2_MAJOR
#define SIMP_BLKDEV_BYTES (8*1024*1024)
static DEFINE_SPINLOCK(rq_lock);
unsigned char simp_blkdev_data[SIMP_BLKDEV_BYTES];
static struct gendisk *simp_blkdev_disk;
static struct request_queue *simp_blkdev_queue;//device's request queue
struct block_device_operations simp_blkdev_fops = {
.owner = THIS_MODULE,
};
//handle request that pass to this device
static void simp_blkdev_do_request(struct request_queue *q){
struct request *req;
while( (req = elv_next_request(q)) != NULL){
if( ( (req->sector + req-&g