OpenEdv-开源电子网

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

copy_from_user函数的使用问题

[复制链接]

12

主题

48

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2019-7-16
在线时间
58 小时
发表于 2023-4-10 16:26:24 | 显示全部楼层 |阅读模式
20金钱
为什么例程中这样传递参数不用copy_from_user函数就可以做到应用向驱动传递参数呢 驱动程序.png
应用程序.png

最佳答案

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

App应用程序中使用ioctl 定义变量:int arg; 两种方式: 1.ioctl(fp, cmd, arg) 的时候会将arg的值送入内核(值传递),内核可直接使用。 2.ioctl(fp, cmd, &arg)的时候送入内核的值是用户地址(地址传递),所以内核在使用的时候需要用copy_from_user将数据拷贝后使用. 内核中: 定义变量:int value; 拷贝变量:copy_from_user(&value, (int *)arg, sizeof(int)); 然后使用value也就是arg的 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

33

主题

1622

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6539
金钱
6539
注册时间
2015-8-25
在线时间
1024 小时
发表于 2023-4-10 16:26:25 | 显示全部楼层
App应用程序中使用ioctl
定义变量:int arg;
两种方式:
1.ioctl(fp, cmd, arg) 的时候会将arg的值送入内核(值传递),内核可直接使用。
2.ioctl(fp, cmd, &arg)的时候送入内核的值是用户地址(地址传递),所以内核在使用的时候需要用copy_from_user将数据拷贝后使用.
       内核中:
       定义变量:int value;
       拷贝变量:copy_from_user(&value, (int *)arg, sizeof(int));
       然后使用value也就是arg的值。
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复

使用道具 举报

12

主题

48

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2019-7-16
在线时间
58 小时
 楼主| 发表于 2023-4-14 21:50:29 | 显示全部楼层
szczyb1314 发表于 2023-4-10 16:26
App应用程序中使用ioctl
定义变量:int arg;
两种方式:

感谢
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-23 04:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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