0.设计数据结构,定义自己的设备的数据结构:
struct my_dev { spinlock_t lock; struct gendisk *disk; //上面两个是必要的,再加入一些其他自己需要的字段
} yohoro_blk;
|
1.注册主设备号:register_blkdev(MAJOR, "yohoro_blk");
2.初始化自定义的描述符yohoro_blk中的字段。
首先初始化自旋锁:spin_lock_init(&yohoro_blk.lock);
然后分配一个磁盘描述符:yohoro_blk.disk = allock_disk(8);
并初始化gendisk描述符中的字段:
yohoro_blk.disk->private_data = &yohoro_blk; yohoro_blk.disk->major = MAJOR; yohoro_blk.disk->minors = 16; yohoro_blk.disk->fops = &yohoro_blk_ops;
|
3.分配和初始化请求队列,存放等待处理的请求。
yohoro_blk.disk->rq = blk_init_queue(request_fn, &yohoro_blk.lock);
4.设置中断处理程序。
5.注册磁盘。
add_disk(yohoro_blk.disk);
阅读(834) | 评论(0) | 转发(0) |