有copy_from_user时get_user的应用 [英] application of get_user when there is copy_from_user

查看:268
本文介绍了有copy_from_user时get_user的应用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在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的查询相同.

In Linux kernel programming, I see get_user and copy_from_user perform read from user space, earlier one reads fixed 1, 2 or 4 bytes while latter reads arbitrary number of bytes from user space. What was the need of get_user? Did copy_from_user come after get_user and hence get_user was kept for backward compatibility? Are there specific applications of get_user or is it obsolete now? Same queries for put_user and copy_to_user.

推荐答案

您可以考虑

copy_from_user(dest, src, size);

某种形式

memcpy(dest, src, size);

以及

get_user(x, ptr);

作为某种简单的分配:

x = *ptr;

简单赋值一样,它比memcpy()函数调用更简洁(对于未知代码而言),更短,更快. >.

Like a simple assignment is a cleaner(for code undestanding), shorter and faster way than a memcpy() function call, get_user is a cleaner, shorter and faster way than a copy_from_user.

最常见的情况是数据的大小恒定且较小(因此get_user适用),是设备的ioctl实现.您可以通过grep-get_user的内核源代码,或使用在线内核代码搜索服务(例如

The mostly known case, when the size of the data is constant and small(so get_user is applicable), is an ioctl implementation for devices. You can find many get_user usages by grep-ing kernel sources for get_user, or using online kernel code search service like Linux Cross Reference.

这篇关于有copy_from_user时get_user的应用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆