当存在 copy_from_user 时应用 get_user
application of get_user when there is copy_from_user
在Linux内核编程中,我看到get_user和copy_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
用法
在Linux内核编程中,我看到get_user和copy_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
用法