当有copy_from_user时应用get_user

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当有copy_from_user时应用get_user相关的知识,希望对你有一定的参考价值。

在Linux内核编程中,我看到get_user和copy_from_user执行从用户空间读取,前一个读取固定的1,2或4个字节,而后者从用户空间读取任意数量的字节。 get_user的需求是什么? copy_from_user是否在get_user之后,因此保留了get_user以实现向后兼容性?是否有get_user的特定应用程序或现在已过时?对put_user和copy_to_user的查询相同。

答案

你可以考虑一下

copy_from_user(dest, src, size);

某种程度的

memcpy(dest, src, size);

而且

get_user(x, ptr);

作为某种简单的任务:

x = *ptr;

就像一个简单的任务是一个更清洁(代码未定),比memcpy()函数调用更短和更快的方式,get_user是一个更清洁,更短和更快的方式比copy_from_user

大多数已知的情况,当数据的大小恒定且很小(因此get_user适用)时,是设备的ioctl实现。您可以通过get_user-grep的内核源代码,或使用get_user等在线内核代码搜索服务找到许多Linux Cross Reference用法。

以上是关于当有copy_from_user时应用get_user的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Linux 内核访问用户空间内存?

内核空间和应用空间的数据拷贝(copy_to_user & copy_from_user)

Linux 内核如何在 copy_from_user 中临时禁用 x86 SMAP?

copy_from_user 是不是修改用户指针?

copy_from_user的疑问

007_Linux驱动之_copy_from_user函数