copy_to_user的疑问

发布于 2022-09-20 01:06:57 字数 285 浏览 22 评论 7

copy_to_user和copy_from_user这对函数可以用在ioctl接口中么?

最近改进一个驱动程序,用户态获得用户的输入,保存到字符数组S[1000]中,然后将S中的元素通过ioctl一个个的传递到内核态,然后处理。

我的想法是把数组S的地址传到内核态,然后用copy_from_user一下子将数据全部转移到内核态处理

问题是:我在用户态和内核态都打印了S的地址,是一致的,可是用户态和内核态的的地址中的值却不一样的。不知道为什么会是这个样子,哪个前辈给指点下问题出在哪里啊?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

停顿的约定 2022-09-20 05:54:17

回复 7# dreamice

还是不行啊,使用copy_from_user并没有把用户态地址里面的值拷贝过来

女中豪杰 2022-09-20 05:49:15

回复 6# 527639827

    这样是可以的

嘿看小鸭子会跑 2022-09-20 05:47:44

回复 5# dreamice

那用copy_from_user能拷贝过来不?

我传递用户态数组S的地址到内核态,然后用copy_from_user将S地址里面的值拷贝到内核态申请的地址里面,这样行不?

ˇ宁静的妩媚 2022-09-20 05:19:39

回复 1# 527639827

    值肯定是不一样的,不然怎么会有内核空间和应用空间之分呢

行雁书 2022-09-20 05:14:09

回复 3# yananfu

    回去试试,呵呵

冷清清 2022-09-20 05:10:11

你在copu_from_user(k_buff, u_buff, size)后k_buff的值应该和用户空间定义的一样。
这个是不会有问题的

千鲤 2022-09-20 02:51:59

回复 1# 527639827

    这样子应该不行,内核空间和用空间是独立分开的,必须要copy,除非用内存映射的方式,把用户空间内存映射到内核空间,或者是把内核空间映射到用户空间,
  这样才能实现内存共享.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文