【问题标题】:application of get_user when there is copy_from_user有 copy_from_user 时的 get_user 应用
【发布时间】:2016-01-15 22:31:21
【问题描述】:
在 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 的查询相同。
【问题讨论】:
标签:
linux-kernel
operating-system
kernel
【解决方案1】:
你可以考虑
copy_from_user(dest, src, size);
某种意义上的
memcpy(dest, src, size);
关于
get_user(x, ptr);
作为某种简单的分配:
x = *ptr;
就像 简单的赋值 比 memcpy() 函数调用更简洁(用于代码理解)、更短和更快的方式,get_user 比@987654328 更简洁、更短和更快的方式@。
最广为人知的情况是,当数据大小恒定且很小(因此get_user 适用)时,设备的ioctl 实现。您可以通过grep 找到许多get_user 的用法 - 查找get_user 的内核源代码,或使用Linux Cross Reference 等在线内核代码搜索服务。