免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1838 | 回复: 1
打印 上一主题 下一主题

[Linux] 内核空间执行copy_to_user调用不成功 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-11-23 23:50 |只看该作者 |倒序浏览
项目中需要从内核态取一个全局变量赋值给用户态一个变量,方法是在内核态一个文件里定义一个函数(其实也不确定该文件是否位于内核态,只是看到有export_symbol()),参数是指针类型,以便将用户态的变量传到内核态,回送给用户态变量。但是测试发现,调用copy_to_user获取的变量始终为0,直接在定义的函数赋值回传给用户态的值也为0;而尝试直接用memcpy则回传给用户态的值就正常。请问这是什么原因呢

论坛徽章:
3
处女座
日期:2015-03-18 14:35:45羊年新春福章
日期:2015-03-18 14:48:23午马
日期:2015-03-18 14:51:09
2 [报告]
发表于 2016-11-24 16:34 |只看该作者
copy_to_user是将数据拷贝到ES对应段描述符的进程数据段中(x86)。
系统调用软中断进入到内核态  此时内核态的ES就是进程的DS的描述符,所以可以互相复制数据,memcpy
通常是相通段的数据拷贝。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP