Chinaunix首页 | 论坛 | 博客
  • 博客访问: 54112
  • 博文数量: 22
  • 博客积分: 975
  • 博客等级: 准尉
  • 技术积分: 222
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-02 21:41
文章分类
文章存档

2011年(8)

2010年(8)

2009年(6)

我的朋友

分类: LINUX

2010-11-25 22:30:34

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);

 

 


 

阅读(787) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~