分享

块设备驱动 block_device_operations结构体 主要成员函数分析

 langhuayipian 2011-09-28

block_device_operations结构体

1.打开和释放

int (*open)(struct inode *inode ,struct file *filp);

int (*release)(struct inode *inode ,struct file *filp);

当设备打开和关闭时将调用它们。

2.IO控制

int (*ioctl)(struct inode *inode,struct file *filp uusignwd int cmd,unsigned long arg)

上述函数是ioctrl()系统调用的实现,块设备包含大量的标准亲球,这些标准请求有linux块设备层处理,因此大部分块设备驱动的 ioctrl()函数相当短。

3.介质改变

int (*check_media_change) (kdev_t);

被内核调用来检查是否驱动器中的介质已经改变,如果是,则返回一个非0值,否则返回0.这个函数进时用于支持可移动介质的驱动器。通常需要在驱动中 增加一个表示介质状态时否改变的标志变量,非可移动设备的驱动不需要实现这个方法。

4.使介质有效

int (*revalidate) (kdev_t);

该函数被调用来响应一个介质改变,它给驱动一个机会来进行必要的工作使得新介质准备好。

5.获得驱动信息

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

该函数根据驱动器的几何信息填充一个hd_geometry结构体,hd_geometry结构体包含磁头,扇区,柱面等信息。

6.模块指针

struct module *owner;

通常初始化成THIS_MODULE

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多