在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 的相同查询。
最佳答案
你可以考虑
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
的用法-ing 内核源代码 get_user
,或使用在线内核代码搜索服务,如 Linux Cross Reference .
关于linux-kernel - 有 copy_from_user 时 get_user 的应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33182877/