linux-kernel - 在重新映射的地址范围内分配内存
问题描述
我正在编写一个字符驱动程序,它的作用是桥接黑白邮箱框架并为用户空间应用程序公开 fops。用户应用程序使用此 char 驱动程序向远程处理器执行数据传输。但是,要求是远程处理器希望数据在固定的内存范围内。范围提供给probe() fn 中的char drv。如果有单个用户应用程序,我可以对提供的 addr 范围执行memremap()并使用它,但在我目前的情况下,我有多个应用程序试图将数据缓冲区发送到远程核心。因此,我需要在特定内存范围内分配内核缓冲区,然后对收到的每个数据缓冲区执行copy_from_user(),然后将物理地址传递给远程核心(arm m0+)
Linux内核中是否有任何API可以进行这种分配?
对此的任何指示都将非常感激和有帮助。提前感谢您的任何建议/问题。
ps:remote core提供的内存地址范围是2GB以下范围内的RAM地址(0x8000_0000 - 0xFFFF_FFFF)
解决方案
推荐阅读
- python-2.7 - 如何让 Python 的 os.system() 运行 Windows 10 tftp 客户端功能?
- node.js - 发射时是否需要套接字 id?
- html - Bootstrap 4 - 切换导航栏在所有内容后面打开
- kotlin - 有什么方法可以发送一个可为空的函数
作为 Kotlin 中的参数? - laravel - Laravel 图像干预无法从给定的 url 初始化
- vulkan - 是否允许绑定从不同描述符池分配的描述符集?
- amazon-web-services - 保持两个版本的 AWS Lambda 运行
- r - 为什么我的 lm 模型不显示线性关系,但在 geom_smooth 中显示?
- android - 带有 2 个 productFlavors 的 AndroidAnnotation
- scala - 在docker中部署时如何读取scala项目中的资源