当存在 copy_from_user 时应用 get_user

application of get_user when there is copy_from_user

在Linux内核编程中,我看到get_usercopy_from_user执行读取用户 space,前一个读取固定的 1、2 或 4 个字节,而后者从用户 space 读取任意数量的字节。 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 实现。您可以通过 grep-ing get_user 的内核源代码或使用 Linux Cross Reference.

等在线内核代码搜索服务找到许多 get_user 用法