可分区块设备驱动开发指南
1. gendisk 结构体字段解析
在块设备驱动开发中,gendisk结构体起着关键作用,以下是其部分重要字段的详细解释:
| 字段名 | 描述 |
| ---- | ---- |
|int max_p| 最大分区数。在示例中,max_p为 16,通常为1 << minor_shift。 |
|struct hd_struct *part| 设备的解码分区表。驱动使用该字段确定通过每个次设备号可访问的磁盘扇区范围。驱动负责该数组的分配和释放,多数驱动将其实现为max_nr << minor_shift个结构体的静态数组,且在分区表解码前需初始化为零。 |
|int *sizes| 整数数组,与全局blk_size数组信息相同,通常为同一数组。驱动负责其分配和释放。设备分区检查会将该指针复制到blk_size,处理可分区设备的驱动无需再分配blk_size数组。 |
|int nr_real| 实际存在的设备(单元)数量。 |
|void *real_devices| 驱动可用于保存额外所需信息的私有区域。 |
|struct gendisk *next|