The success's road
LINUX块设备驱动开发
LINUX块设备驱动开发
远见品质 知识点
知识点
v块设备驱动程序简介
v块设备驱动程序简介
v块设备特点及驱动程序工作原理
v块设备特点及驱动程序工作原理
v块设备驱动程序的请求队列机制
v块设备驱动程序的分层实现
远见品质 块设备驱动程序简介
v块设备驱动程序提供了面向数据
的设备的访问
v块设备一般以随机的方式传输数据
,并且数据总是具有固定大小的
v典型的 设备是磁盘驱动器类设备
远见品质 块设备驱动程序的特点
块设备驱动程序的特点
v块设备接口相对复杂,不如字符设
备明晰易用
v块设备驱动程序对整个系统的性能
影响较大,速度和效率是设计块设
备驱动程要重点考虑的问题
v系统中使用缓冲区与访问请求的优
化管理 (合并与重新排序)来提
系统性能
远见品质 块设备与字符设备的区别
块设备与字符设备的区别
属性\类别 块设备 字符设备
访问单位/次 有固定大小 无固定大小
随机访问 支持 不支持
(lseek )
用户直接访 不可 可以
问
驱动程序 复杂 相对简单
远见品质 block_device_operations结构体
v 在块设备驱动中,有1个类似于字符设备驱动中
file_operations结构体的block_device_operations结构体,它
是对 设备操作的集合
v struct block_device_operations
{
int(*open)(struct inode *, struct file*); //打开
int(*release)(struct inode *, struct file*); //释放
int(*ioctl)(struct inode *, struct file *, unsigned, unsigned
long); //ioctl
int(*media_changed)(struct gendisk*); //介质被改变?
int(*revalidate_disk)(struct gendisk*); //使介质有效
int(*getgeo)(struct block_device *, struc