Vis*_*ahu 3 operating-system kernel linux-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 的相同查询。
你可以考虑
copy_from_user(dest, src, size);
Run Code Online (Sandbox Code Playgroud)
作为某种
memcpy(dest, src, size);
Run Code Online (Sandbox Code Playgroud)
和关于
get_user(x, ptr);
Run Code Online (Sandbox Code Playgroud)
作为某种简单的分配:
x = *ptr;
Run Code Online (Sandbox Code Playgroud)
就像一个简单的赋值是一个更干净的(用于代码理解),比memcpy()函数调用更短和更快的方式,比一个更简洁、更get_user短和更快的方式copy_from_user。
最广为人知的情况是,当数据的大小恒定且很小(因此get_user适用)时,是ioctl设备的实现。您可以get_user通过grep-ing 内核源get_user代码或使用诸如Linux Cross Reference 之类的在线内核代码搜索服务来找到许多用法。
| 归档时间: |
|
| 查看次数: |
3986 次 |
| 最近记录: |