加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – copy_from_user()的返回值

发布时间:2020-12-13 18:50:45 所属栏目:Linux 来源:网络整理
导读:这是返回值的描述. unsigned long copy_from_user (void *to,const void __user *from,unsigned long count) 返回值是仍要复制的内存量. 它到底意味着什么?如果返回值为5,是否复制了(count-5)个字节?仅复制(count-5)个字节的原因是什么?是因为to的大小小
这是返回值的描述.
unsigned long copy_from_user
    (void *to,const void __user *from,unsigned long count)

返回值是仍要复制的内存量.

它到底意味着什么?如果返回值为5,是否复制了(count-5)个字节?仅复制(count-5)个字节的原因是什么?是因为to的大小小于(系统应该崩溃,然后,右)?

解决方法

copy_from_user函数可能由于各种原因(通常由于地址无效)而失败,只复制部分请求的数据,甚至没有复制.

返回0表示成功的函数有一个约定(不是普遍遵循).在copy_from_user的情况下,将结果定义为未复制的字节数允许它使用相当简单的规则遵循此约定.

直观地说,返回实际复制的字节数可能更有意义,但它定义的方式允许使用它的代码以类似于成功返回0的其他函数的方式测试错误. (在许多情况下,无法复制多少字节并不重要;任何非零结果都只是一个错误.)

如果它返回一个小于count的非零值,表示部分拷贝,则可能意味着用户空间内存缓冲区在用户进程的地址空间内启动,但超出了它的末尾.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读