在Linux内核中,struct gendisk
代表通用块设备。 它是用于管理和表示块设备
的基本数据结构,例如硬盘驱动器、固态驱动器和其他存储设备。
struct gendisk 包含各种字段和指针,提供与块设备相关的信息和操作。 struct gendisk 结构的一些重要字段和成员包括:
struct request_queue *queue:指向与块设备关联的请求队列
的指针。 请求队列管理设备的 I/O 请求。
fmode_t exclusive_holder:指定块设备的独占持有者。 它用于防止对设备的并发访问。
struct block_device_operations *fops:指向包含块设备操作(例如读、写、打开和释放)的结构的指针。
struct block_device *private_data:指向与块设备关联的私有数据。
struct device *dev:指向表示块设备的设备结构。
struct backing_dev_info *backing_dev_info:指向备份设备信息。 它包含有关设备的特性和功能的信息。
int Major:与块设备关联的主设备号。
int first_minor:与块设备关联的第一个次要编号。
int Minors:为块设备保留的次要编号的数量。
int flags:指示块设备的各种属性和功能的标志。
struct gendisk 通常由块设备驱动程序在初始化块设备时注册。 它作为一个抽象层,为块设备提供通用接口和操作,允许内核以一致的方式与它们交互。
通过 struct gendisk,内核可以管理 I/O 操作、处理请求以及在块设备上执行各种其他操作。 不同的块设备驱动程序使用 struct gendisk 及其关联的结构和函数为各自的设备实现特定的功能和行为。