块设备驱动 - 我的总结

3230阅读 0评论2013-12-25 sun5411
分类:LINUX

块设备定义:

    具有一定结构的随机存取设备,对这种设备的读写是按块进行的,他使用缓冲区来存放临时数据,待条件成熟后,从缓存一次性写入设备或从设备中一次性读出放入到缓冲区。
   * 对性能要求高

驱动工作流程:
* 注册块设备驱动程序
  int register_blkdev(unsigned int major, const char *name);
* 注销块设备驱动
  int unregister_blkdev(unsigned int major, const char *name);

*块设备的操作
 int (*open)(struct inode *inode,struct file *filp);
 int (*release)(struct inode *inode,struct file *filp);
 int(*ioctl)(struct inode *inode,struct file *filp,unsigned int cmd, unsigned long arg);
 int(*media_changed)(struct gendisk *gd);

*gendisk 结构



* gendisk的操作
  struct gendisk *alloc_disk(int minors); //minors是该磁盘使用的次设备号
  void del_gendisk(struct gendisk *gd); //卸载磁盘
  void add_disk(struct gendisk *gd); //一旦调用了该函数,磁盘设备将被“激活”,并随时会调用它提供的方法

* sbull设备的初始化
  sbull_major = register_blkdev(sbull_major,"sbull");

* scull_dev结构


* 请求处理
  块设备驱动程序的核心是请求函数
  内核的块设备子系统在编写的时候非常注意性能的问题,除了从锁控制的设备上获得信息以外,块设备子系统为驱动程序完成了所有可能的工作。

* request函数
  void request(request_queue_t *queue);
  内核需要驱动程序处理读取,写入以及其他队设备的操作时,就会调用该函数。
  对大多数真是设备而言,它没有完成任何请求,它必须穷对请求的相应,并保证所有的请求最终被驱动程序所处理。


上一篇:块设备驱动笔记
下一篇: python with用法