+ -
当前位置:首页 → 问答吧 → 驱动中如何将用户空间内存映射到内核空间使用?

驱动中如何将用户空间内存映射到内核空间使用?

时间:2011-08-01

来源:互联网

在网上看到的资料全都是将内核空间内存映射到用户空间使用的,但是我需要的应用是

需要用户空间使用的内存映射到内核空间使用,

哪位用这样使用的例子没有?

作者: tiantangxingkong   发布时间: 2011-08-01

我想知道用户空间怎么有权限去访问内核空间?如果可以访问,那还是用户空间么?呵呵

作者: zigzag_xiang   发布时间: 2011-08-01

不晓得你的具体需求是什么样的,应用程序调用设备文件,可以使用设备驱动提供的内核空间的内存映射。设想一个驱动在不知道上层应用程序什么状况的时候,贸然使用用户态空间的内存镜像,这不合逻辑吧

作者: yiyaaixuexi   发布时间: 2011-08-01

引用 2 楼 yiyaaixuexi 的回复:
不晓得你的具体需求是什么样的,应用程序调用设备文件,可以使用设备驱动提供的内核空间的内存映射。设想一个驱动在不知道上层应用程序什么状况的时候,贸然使用用户态空间的内存镜像,这不合逻辑吧

我的具体需求就是需要在做摄像头的驱动,驱动中需要两帧或多于两帧的图像缓冲区来接收图像数据,如果在内核中来申请内存就可能涉及到反复的申请造成内存碎片最终申请不到内存,所以我想用用户空间申请的内存来映射到驱动中来做图像缓冲区.

作者: tiantangxingkong   发布时间: 2011-08-02

引用 3 楼 tiantangxingkong 的回复:

引用 2 楼 yiyaaixuexi 的回复:
不晓得你的具体需求是什么样的,应用程序调用设备文件,可以使用设备驱动提供的内核空间的内存映射。设想一个驱动在不知道上层应用程序什么状况的时候,贸然使用用户态空间的内存镜像,这不合逻辑吧

我的具体需求就是需要在做摄像头的驱动,驱动中需要两帧或多于两帧的图像缓冲区来接收图像数据,如果在内核中来申请内存就可能涉及到反复的申请造成内存碎片最终申请不……


你完全不用考虑这个吧,难道你内核空间会有碎片,用户空间就不会? 内核内核分配器比你认为的高级的多吧。 要是坚持这么认为的,你可以自己预先申请几块空间循环利用啊。 我怀疑你是不是其他原因导致的问题。

作者: lvyinghong   发布时间: 2011-08-02

很奇怪的说法,内核空间和用户空间的内存是绝对分开,不可能映射的。

如果想交换数据,楼主可以查一下这个函数copy_from_user,copy_to_user,利用字符设备,加上这两个函数,能实现两个空间的交互的。

至于你说的利用用户空间的内存来做缓存来提高效率,你考虑过在两个空间来回拷贝的时间成本没?

作者: jiahehao   发布时间: 2011-08-02