OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5678|回复: 5

字符设备驱动读写过程的问题!!!

[复制链接]

57

主题

90

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
279
金钱
279
注册时间
2019-11-13
在线时间
40 小时
发表于 2020-3-27 23:25:09 | 显示全部楼层 |阅读模式
1金钱
应用程序中执行 read 函数,会经过系统调用,从而调用执行驱动程序中的 chrdevbase_read 函数,这里我有个疑问,应用程序中的 read 函数只有3个参数,调用执行的 chrdevbase_read 有4个参数,它们之间是怎么传递参数的?
1.png 2.png

最佳答案

查看完整内容[请看2#楼]

从应用程序到驱动会经过io层处理,不是直接调用关系。具体多出来的那个参数表示文件当前读写位置。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
351
金钱
351
注册时间
2016-4-20
在线时间
162 小时
发表于 2020-3-27 23:25:10 来自手机 | 显示全部楼层
从应用程序到驱动会经过io层处理,不是直接调用关系。具体多出来的那个参数表示文件当前读写位置。
回复

使用道具 举报

2

主题

712

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2178
金钱
2178
注册时间
2018-8-27
在线时间
258 小时
发表于 2020-3-28 09:50:25 | 显示全部楼层
由read到chrdevbase_read中间经过了很多层级,可不是直接调用的,你先别去深究这个,等你以后学扎实了之后你再去细品其中的缘由!
森罗万象
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2020-3-28 09:54:03 | 显示全部楼层
应用中的readbuf对应驱动中的buf,50就是驱动中的count。没规定应用程序中函数的参数个数啥的一定要和驱动里面的一致
回复

使用道具 举报

57

主题

90

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
279
金钱
279
注册时间
2019-11-13
在线时间
40 小时
 楼主| 发表于 2020-3-28 10:11:13 | 显示全部楼层
hannuaa 发表于 2020-3-28 08:00
从应用程序到驱动会经过io层处理,不是直接调用关系。具体多出来的那个参数表示文件当前读写位置。

这里的read 函数到 chrdevbase_read 的前3个参数是对应起来的吧!只是最后多出来一个参数!!!
回复

使用道具 举报

57

主题

90

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
279
金钱
279
注册时间
2019-11-13
在线时间
40 小时
 楼主| 发表于 2020-3-28 10:14:45 | 显示全部楼层
hannuaa 发表于 2020-3-28 08:00
从应用程序到驱动会经过io层处理,不是直接调用关系。具体多出来的那个参数表示文件当前读写位置。

好像第一个参数也没对应,应用程序中的 fd 只是文件描述符,是 int 类型的!!!与 chrdevbase 中的 struct file *filp 无法对应!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 09:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表