2.block_device_operations结构体

在块设备驱动中,有一个类似于字符设备驱动中file_operations结构体的block_device_operations结构体,他是对块设备操作的集合。
1.block_device_operations结构体
2.打开和释放

int (*open)(struct block_device *,fmode_t);
void (*release)(struct gendisk *,fmode_t);

3.I/O控制

int (*ioctl)(struct block_device *,fomede_t,unsigned,unsigned long);
int (*compat_ioctl)(struct block_device *,fomde_t,unsigned,unsigned long);

上述函数是ioctl()系统调用的实现,块设备包含大量的标准请求,这些请求由Linux通用块设备层处理,因此大部分块设备驱动的ioctl()函数相当短,当一个64位系统内的32位进程调用ioctl()的时候,调用的是compat_ioctl()
4.介质改变

int (*media_changed)(struct gendisk *gd);

被内核调用以检查驱动器中的介质是否已经改变,该函数已经被checkout_events()替代。老的linux在用户空间里轮询可移动磁盘介质是否存在,而新的内核则在内核空间里轮询。
check_events()函数检查有没有挂起的事件,如果有DISK_event_media_changeDISK_EVENT_EJECT_REQUEST事件,就返回。
5.使介质有效

int (revalidate_disk)(struct gendisk *gd);

revalidate_disk()函数被调用用响应一个介质改变,他给驱动一个机会来进行必要的工作以使新介质准备好。
6.获得驱动器信息

int (*getgeo)(struct block_device*,struct hd_geometry *);

该函数根据驱动器的几何信息填充一个hd_geometry结构体,hd_geometry结构体包含磁头、扇区、柱面等信息,其定义在include/linux/hdreg.h头文件中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

<( ̄︶ ̄)Okay.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值