当前位置:  技术问答>linux和unix

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

    来源: 互联网  发布时间:2016-12-26

    本文导语:  在网上看到的资料全都是将内核空间内存映射到用户空间使用的,但是我需要的应用是 需要用户空间使用的内存映射到内核空间使用, 哪位用这样使用的例子没有? | 应当采用内核空间映射到...

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

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

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

|
应当采用内核空间映射到用户空间的策略.
采用用户空间到内核空间的映射, 需要将用户空间锁定, 不允许换出, 这个方法的代价超出前者. 不是应当考虑的方法. 如果真需要, 应当参考mlock相关.

|


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

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

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

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

|
参见视频采集驱动V4L,无论是内核空间内存映射到用户空间,还是用户空间内存映射到内核空间,基本原理一模一样。因为内核空间只是用户空间的一段,内存终究只是物理地址。所以这里仅仅涉及到两个问题:
1)根据虚地址,获取内存物理地址;
2)将内存重新映射到一段虚地址上。

|



有mmap这么一个system call  ,可以自己在文操作上实现,应该可以把指定的物理页共享给用户吧。 V4L 好像就是这么用的,可以去看一下到底怎么做的,

|
不知道你为什么有这样的想法,用户空间和内核空间它们的区别主要在于权限上的问题,而实际操作的仍然是物理地址空间,你所说的碎片问题它们都可能遇到。
其次你并不需要仿佛申请内存啊,可以申请一系列存储区域反复使用啊

    
 
 

您可能感兴趣的文章:

  • UIO(linux Userspace I/O子系统)用户空间设备驱动I/O技术介绍
  • 请教用户空间编写设备驱动
  • 讨论:内核,驱动,用户空间大批量数据交换的最佳方式
  • 请问如何传用户空间数组到驱动程序?
  • 有人做过内核空间和用户空间的内存映射吗 内核空间和用户空间交换数据用内存映射的方法,结果做的驱动可以工作,但经常会引起死机
  • linux驱动里如何分配大于2M的内存空间
  • 请问驱动程序里怎么得到用户空间地址对应的物理地址?
  • 刚开始学写驱动,请大家帮我看一下,ioremap上后怎么降数据拷贝到用户空间??
  • 有没有做过linux nor flash驱动,128MB的nor flash就要映射128MB的虚拟空间么?nand flash就可以映射4k。。
  • I/O端口寄存器地址在驱动中到底要被映射几次???
  • linux下设置映射网络驱动
  • USB驱动 OHCI寄存器 ioremap地址映射
  • linux映射windows网络驱动器
  • C# 调用API函数弹出映射网络驱动器对话框问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 内核升级后,如何在新的内核中加载显卡驱动?
  • 弱智问题:搞内核能不能不学驱动编程啊?网络协议栈必须要谙熟驱动吗?
  • 【求助】基于2.6.29内核编译的驱动程序能否应用于2.6.32内核的系统?
  • linux 2.6.15 中被编译为模块的驱动test.ko,应该放在什么路径下才能使得在需要该驱动时,由内核自动加载?谢谢
  • 数据库 iis7站长之家
  • 新增一个驱动后,内核不启动
  • 驱动编译环境的内核版本到底是不是必须和使用环境的内核版本一致?
  • 如何获得芯片的内核驱动
  • 我下载了一个驱动,在2.4内核编译后用insmod加载说内核版本不一样?
  • 内核模块和设备驱动的区别?
  • 内核如何知道板子上的硬件要用哪个驱动?
  • rndis驱动编译成内核模块
  • 想搞嵌入式驱动的开发,请大虾给个简单例程(通过SPI读写外扩存储芯片),以及开发步骤及应注意的地方,怎么加入内核和使用该驱动?谢谢
  • linux内核与驱动面试
  • 如何将驱动程序嵌入到内核中?
  • linux内核编程,具体指什么,是不是就是驱动开发 ?
  • 有一定基础后,请问应该先看Linux内核还是驱动呢?
  • 将驱动模块编译进内核是否有用??
  • 谁有2.4内核可用的网卡驱动及应用程序?
  • 求助:makefile,驱动与linux内核的关系?
  • php中内置的mysql数据库连接驱动mysqlnd简介及mysqlnd的配置安装方式
  • 字符设备驱动,混杂设备驱动,总线、设备、驱动模型、平台驱动
  • 好不容易下到sis900网卡for unix的驱动,但装上驱动后系统驱动时: SiS900 adapter initialization failure!
  • 我的网卡在redhat7.3下不能自动驱动,但我有for linux的驱动程序,请问如何才能驱动我的网卡,我是菜菜,请详细说明,谢谢!
  • Linux环境下,“PC机的驱动”与“嵌入式驱动”有什么区别?
  • linux:怎么在驱动中调用IIC驱动?
  • linux驱动 单片机驱动
  • linux下一个驱动怎么调用另一个驱动
  • u boot中怎样写flash驱动以及串口驱动
  • Linux环境下,如何一个驱动中调用另外一个驱动
  • 一个驱动文件,生成多个驱动模块??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3