有copy_from_user时get_user的应用 [英] application of get_user when there is copy_from_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的查询相同.
In Linux kernel programming, I see get_user and copy_from_user perform read from user space, earlier one reads fixed 1, 2 or 4 bytes while latter reads arbitrary number of bytes from user space. What was the need of get_user? Did copy_from_user come after get_user and hence get_user was kept for backward compatibility? Are there specific applications of get_user or is it obsolete now? Same queries for put_user and copy_to_user.
推荐答案
您可以考虑
copy_from_user(dest, src, size);
某种形式
memcpy(dest, src, size);
以及
get_user(x, ptr);
作为某种简单的分配:
x = *ptr;
像简单赋值一样,它比memcpy()
函数调用更简洁(对于未知代码而言),更短,更快. >.
Like a simple assignment is a cleaner(for code undestanding), shorter and faster way than a memcpy()
function call, get_user
is a cleaner, shorter and faster way than a copy_from_user
.
最常见的情况是数据的大小恒定且较小(因此get_user
适用),是设备的ioctl
实现.您可以通过grep
-get_user
的内核源代码,或使用在线内核代码搜索服务(例如
The mostly known case, when the size of the data is constant and small(so get_user
is applicable), is an ioctl
implementation for devices. You can find many get_user
usages by grep
-ing kernel sources for get_user
, or using online kernel code search service like Linux Cross Reference.
这篇关于有copy_from_user时get_user的应用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!