MySQL, Oracle, Linux, 软件架构及大数据技术知识分享平台

网站首页 > linux / 正文

Linux中的块设备驱动

2024-11-26 15:14 huorong linux 5 ℃ 0 评论

l 块设备主要针对存储设备,块设备的驱动主要就是存储设备的驱动;

l 块设备以块为单位进行读写访问,它是linux虚拟文件系统传输的基本单位,

l 块设备可以随机访问,块设备使用缓存区存放数据,等到一定条件后一次性写入块设备,这样做可以提高块设备的使用寿命。

l 块设备驱动框架

Block_device结构体表示块设备,在这个结构体中最重要的是bd_disk成员变量,该变量为gendisk结构体指针类型,

l 块设备的注册

块设备注册函数register_blkdev,

Int register_blkdev(unsigned int major,const char *name);

Major:主设备号

Name:块设备名字

返回:如果major的值在1到255之间表示自定义主设备号,那么返回0表示注册成功,如果返回负数表示注册失败。

l 注销设备

当块设备不需要使用了,需要注销掉

Void unregister_blkdev(unsigned int major,const char *name)

Major:要注销的块设备主设备号

Name:要注销的块设备名字

l 块设备I/O请求

请求队列request_queue,内核对块设备的读写都发送到请求队列request_queue中,request又包含了bio,bio保存了读写相关数据,比如从块设备哪个地址开始读取,读取的长度,等信息,

Request_queue *blk_init_queue(request_fn_proc *rfn,spinlock_t *lock)

Rfn:请求处理函数指针;

lock:自旋锁指针,

Tags:linux设备驱动开发

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言