在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的查询相同。
答案 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
次使用。