标签:
1,gendisk结构体
在linux内核中,使用gendisk结构体来表示一个实际的磁盘设备的抽象,结构体定义如下所示:
1.分配gendisk
使用下面函数来分配gendisk
struct gendisk *alloc_disk(int minors);
minors参数是这个磁盘使用的次设备号的数量
2.增加gendisk
gendisk结构体被分配后,系统还不能使用这个磁盘,需要用如下函数来注册设备,使用这个函数之前要保证驱动程序初始化工作完成并响应磁盘请求之后
void add_disk(struct gendisk *disk);
3.释放gendisk
当不需要一个磁盘时,用如下函数来释放gendisk;
void del_gendisk(struct gendisk *gp);
4.gendisk的引用计算
通过下面两个函数可以用来操作gendisk的引用计算和释放这个引用
struct kobject *get_disk(struct gendisk *disk);
void put_disk(struct gendisk *disk);
如果一个磁盘分成了几个分区,那么其分区表保存在hd_struct结构的数组中,该数组的地址存在gendisk的part字段中
2,block_device结构体
每个块设备都是由struct block_device结构体表示的,struct block_device来表示一个逻辑块设备对象。
描述块设备的数据结构有两个,一个是struct block_device,用来描述一个块设备或者块设备的一个分区,是逻辑抽象,侧重和文件系统交互;另一个是struct gendisk,用来描述实际块设备的特性,侧重和块设备驱动程序的交互。对于一个包含多个分区的块设备,struct block_device结构有多个,而struct gendisk结构永远只有一个。
3,struct hd_struct结构体
该结构体用来表示一个分区信息,该结构体中的start_sect nr_sects和partno分别表示当前分区的起始扇区,分区的大小即扇区的数量,以及分区的编号
标签:
原文地址:http://www.cnblogs.com/zhiliao112/p/4237217.html