首页 > 解决方案 > 在重新映射的地址范围内分配内存

问题描述

我正在编写一个字符驱动程序,它的作用是桥接黑白邮箱框架并为用户空间应用程序公开 fops。用户应用程序使用此 char 驱动程序向远程处理器执行数据传输。但是,要求是远程处理器希望数据在固定的内存范围内。范围提供给probe() fn 中的char drv。如果有单个用户应用程序,我可以对提供的 addr 范围执行memremap()并使用它,但在我目前的情况下,我有多个应用程序试图将数据缓冲区发送到远程核心。因此,我需要在特定内存范围内分配内核缓冲区,然后对收到的每个数据缓冲区执行copy_from_user(),然后将物理地址传递给远程核心(arm m0+)

Linux内核中是否有任何API可以进行这种分配?

对此的任何指示都将非常感激和有帮助。提前感谢您的任何建议/问题。

ps:remote core提供的内存地址范围是2GB以下范围内的RAM地址(0x8000_0000 - 0xFFFF_FFFF)

标签: linux-kernelembedded-linux

解决方案


推荐阅读