块设备驱动资料.ppt

分配磁盘: struct gendisk 是一个动态分配的结构,它需要内核操作来初始化。驱动不能自己分配这个结构,必须调用: structgendisk *alloc_disk(int minors); minors 参数是这个磁盘使用的次编号数目,一般也就是磁盘分区的数量。 释放磁盘 当不再需要一个磁盘时,它应当被释放,使用如下函数释放 gendisk void del_gendisk(struct gendisk *gd); 注册磁盘 gendisk 结构体被分配之后,系统还不能使用这磁盘,需要调用如下函数来注册这个磁盘设备: void add_disk(structgendisk *gd); 对 add_disk()的调用必须在驱动程序的初始化工作完成并能响应磁盘 的请求之后。 设置 gendisk 容量 void set_capacity(structgendisk *disk, sector_t size); 块设备中最小的可寻址元是扇区, 扇区大小一般是 2 的整数倍, 最常见的大小是 512字节。扇区的大小是设备的物理属性,扇区是所有块设备的基本单元。 bio 结构体 当一个块被调入内存, 即,在读入后或等待写出时, 它要存储在一个缓冲区中。 每个缓冲区与一个块对应,相当于磁盘块在内存中的表示。缓冲区的信息由 bio 结构体表示, 该结构体代表了正在现场

文档评论(0)

1亿VIP精品文档

相关文档