有关字符设备的数据结构

1、file_operations结构

include/linux/fs.h

struct file_operations{

我认为的常用部分:

struct module * owner;

loff_t (*llseek) (struct file*, loff_t, int);

ssize_t (*read) (struct file*, char *, size_t, loff_t *);

ssize_t (*write) (struct file*, const char *, size_t, loff_t *);

int (*ioctl) (struct inode*, struct file*, unsigned int, unsigned long);

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

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

...

}


2、file结构

include/linux/fs.h

struct file{

我认为常用部分

mode_t f_mode;

unsigned int f_flags;

loff_tf ops;

struct file_operations *f_op;

void *private_data;

}


说明:

f_mode 该成员表示文件的读写权e限,由FMODE_READ和FMODE_WRITE标识。驱动程序的ioctl()方法需要查看这个域来检查读/写权限。由于内核在调用驱动程序的read()和write()方法前已经检查了权限,因此read()方法和write()方法无需检查读/写权限。

f_ops 该成员表示文件的当前读/写位置。驱动程序可以直接读写该字段。

f_flags 该成员是文件标志。标志O_NONBLOCK表示是否是请求非阻塞型操作,可由驱动程序检查。其他标志很少使用。

f_inode 该成员是设备文件所对应的i节点。驱动程序除了可以通过该字段获取从设备号外,一般很少使用。

f_op 该成员表示与文件关联的操作。

private_data 驱动程序可以将这个字段用于任意目的或者简单忽略这个字段。驱动程序可用这个字段指向已经分配的数据,但一定要在内核释放file结构前的release()方法中清除它。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值