linux字符设备驱动框架理解

字符设备框架主要有四个主要数据结构

1. struct cdev

2. struct file_operations

3. struct inode

4. struct file


进程通过文件表(file table)的fd访问inode,在open之前cdev的file_operations赋值给filep->file_operations。设备open时驱动可以通过

inode找到cdev,我们将cdev保存到filep->private_data中,自此以后字符设备驱动的read、write和release就不用通过inode找到cdev了。

一、数据结构 cdev

struct cdev

{

dev_t dev;

struct file_operations f_ops;

....

}

关于设备号的分配方式

第一种 静态方式 register_chrdev_region

第二种 动态方式 alloc_chrdev_region

cdev的操作函数

cdev_init、cdev_add和cdev_del

二、数据结构 file_operation

struct file_operations

{

open

read

write

release

...

}

三、数据结构inode

struct inode

{

dev_t i_rdev;//设备号

struct cdev  *i_cdev;/*目的是实现一套file_operations驱动多个字符设备*/

...

}

四、数据结构file

struct file

{

void *private_data;

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值