Chinaunix

标题: 内核空间执行copy_to_user调用不成功 [打印本页]

作者: 进无止进    时间: 2016-11-23 23:50
标题: 内核空间执行copy_to_user调用不成功
项目中需要从内核态取一个全局变量赋值给用户态一个变量,方法是在内核态一个文件里定义一个函数(其实也不确定该文件是否位于内核态,只是看到有export_symbol()),参数是指针类型,以便将用户态的变量传到内核态,回送给用户态变量。但是测试发现,调用copy_to_user获取的变量始终为0,直接在定义的函数赋值回传给用户态的值也为0;而尝试直接用memcpy则回传给用户态的值就正常。请问这是什么原因呢

作者: mr_sev    时间: 2016-11-24 16:34
copy_to_user是将数据拷贝到ES对应段描述符的进程数据段中(x86)。
系统调用软中断进入到内核态  此时内核态的ES就是进程的DS的描述符,所以可以互相复制数据,memcpy
通常是相通段的数据拷贝。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2