当有copy_from_user时应用get_user

时间:2015-10-17 04:53:07

标签: linux-kernel operating-system kernel

在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的查询相同。

1 个答案:

答案 0 :(得分:3)

你可以考虑

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的{​​{1}}内核源代码,或使用Linux Cross Reference等在线内核代码搜索服务找到许多get_user次使用。