Linux kernel 当存在来自\u用户的复制\u时,get\u用户的应用程序

Linux kernel 当存在来自\u用户的复制\u时,get\u用户的应用程序,linux-kernel,operating-system,kernel,Linux Kernel,Operating System,Kernel,在Linux内核编程中,我看到get_user和copy_from_user从用户空间执行读取,前面的一个读取固定的1、2或4字节,而后面的一个从用户空间读取任意数量的字节。get_用户需要什么?从_用户复制_是否在get_用户之后,因此为了向后兼容而保留get_用户?get_user是否有特定的应用程序,还是现在已经过时?对put_user和copy_to_user的查询相同。您可以考虑 copy_from_user(dest, src, size); 作为某种 memcpy(dest, s

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

您可以考虑

copy_from_user(dest, src, size);
作为某种

memcpy(dest, src, size);
大约

get_user(x, ptr);
作为某种简单的赋值:

x = *ptr;
与简单赋值一样,
get\u user
是一种比
memcpy()
函数调用更干净、更短、更快的方式(对于不理解的代码),
get\u user
是一种比
copy\u from\u user
更干净、更短、更快的方式

最为人所知的情况是,当数据的大小恒定且较小时(因此
get\u user
适用),是设备的
ioctl
实现。通过
grep
-ing
get\u user
的内核源代码,或者使用在线内核代码搜索服务,您可以找到许多
get\u user
用法