struct file中f_mode和f_flags区别

mode_t f_mode:文件模式(FMODE_WRITE,FMODE_READ),用在创建文件时使用

它通过FMODE_READ和FMODE_WRITE位来标识文件是否可读或可写,因为内核在调用驱动程序的read和write前已经检查了訪问权限。所以不必为这两个方法检查权限。在没有获得相应訪问权限而打开文件的情况下,对文件的读写操作将被内核拒绝,驱动程序无需为此而作额外的推断。

unsigned int f_flags:文件标志,用在文件本身已存在,指定打开该文件的方式

如O_RDONLY/O_NONBLOCK/O_SYNC。为了检查用户请求是否是非堵塞式的操作。驱动程序须要检查O_NONBLOCK标志,而其它标志非常少用到。

注意,检查读/写权限应该查看f_mode而不是f_flags。

全部这些标志都定义在< linux/fcntl.h >

文件读/写模式 mode、标志 f_flags 都是设备驱动关心的内容,而私有数据指针private_data 在设备驱动中被广泛应用,大多被指向设备驱动自定义用于描述设备的结构体。

检测用户打开文件的读写方式

驱动程序中经常会使用如下类似的代码来检测用户打开文件的读写方式


if (file->f_mode & FMODE_WRITE) //用户要求可写   
{   
}   
if (file->f_mode & FMODE_READ) //用户要求可读   
{   
}   

下面的代码可用于判断以阻塞还是非阻塞方式打开设备文件。


if (file->f_flags & O_NONBLOCK)    //非阻塞   
     pr_debug("open: non-blocking\n");   
else                                    //阻塞   
     pr_debug("open: blocking\n");   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值