LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 879|回复: 2

kernel thread中对ioctl中的用户态内存进行读写

[复制链接]
发表于 2006-2-16 13:01:04 | 显示全部楼层 |阅读模式
在usb driver的ioctl段代码中,用户应用程序传来一段用户态内存首地址。
usb传来的数据写入用户态内存中。
原来的方法直接在ioctl中copy_to_user,此方法可行。

出于提升写速度的考虑,需要在driver中开辟一个kernel thread,把用户
态内存首地址传给线程,让线程来copy_to_user的动作。

但是发现:此用户态内存地址在线程中指向的并不是原来ioctl中指向的内容。
怀疑是在kernel thread中的上下文环境于ioctl中不同导致。

那么我应该如何在kernel thread中得到和ioctl中的用户态内存地址呢?

急需高手解答~~~
发表于 2006-2-16 13:14:06 | 显示全部楼层
kernel thread can't directly access user mode address space.
try use get_user_pages to get page descriptors first.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-16 14:27:25 | 显示全部楼层
谢谢先~
查了内核代码,发现get_user_pages似乎是把user addr映射成pages的方式,看的不是很懂。
请问楼上是否有此方法的经验,最好能告知此方法的操作实例,此问题困扰小弟多日,多谢多谢~~~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表