【发布时间】:2016-04-24 07:28:02
【问题描述】:
我知道有人问过这个问题,但我仍然无法提取任何有用的答案。如果有人能提供不太复杂的答案,我将不胜感激,因为我的 linux 背景不是那么深。 我需要在用户空间中使用物理上连续的帧的原因是我正在使用硬件设备并且我正在用户空间中模拟该设备的驱动程序,而我应该使用一层薄薄的驱动程序。 我得到的最简单的建议之一是使用 get_free_pages 在驱动程序的内核层中分配,然后以某种方式使用 mmap 使该内存在用户空间中可用。您能否详细说明并解释此建议?或者当然提出任何其他(简单)解决方案?
谢谢
【问题讨论】:
-
有很多例子可以实现
mmap。 究竟是什么你没有理解它? -
使用kzalloc/kmalloc分配连续的物理内存(或者ioremap映射io),使用mmap映射给用户。在此处查看简单示例:blog.discoversdk.com/…
-
@SamProtsenko:您提到的问题仅在用户空间中运行,但给出的问题明确说明了可以编写的内核驱动程序。
-
@Tsyvarev 啊,正确。只阅读标题的陷阱 :) 以我的投票结束。
标签: linux memory-management linux-kernel