Linux - 在内核代码中映射用户空间内存

标签 linux memory-management linux-kernel memory-mapping mmu

我正在编写一段代码,需要在 SOC 关闭之前存储位于特定物理地址的 10k 内存。

我的问题是这个物理地址不是内核空间的一部分,所以我必须创建一个临时内存映射,这样我才能访问这个内存空间。

我尝试使用 io-remap 但它(显然)在非内核空间上不起作用。

是否有任何 API 可以执行此操作? 我应该使用 kmap 吗?

提前致谢

最佳答案

听起来像是内存映射外设。为了紧密绑定(bind)到您的内核,它会添加到 iotable_init() 的 initdata 中。例如 arch/arm/mach-vexpress/ct-ca9x4.c ct_ca9x4_io_desc[]。这创建了虚拟到物理的映射。然后内核代码可以使用带有虚拟地址的 writel 在那里写入。

关于Linux - 在内核代码中映射用户空间内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13586301/

相关文章:

linux - 列出从用户空间到内核空间的 ioctl 调用

c - 链接非常简单的 MQTT 客户端(Azure IOT Hub SDK)时出现问题

linux - 如何从 Ansible 事实中获取已卸载的设备

java - 垃圾收集器不会立即收集完成的线程

java - Java 中字符串是如何创建和存储的?

c - 为作为结构一部分的字符指针分配内存

linux-kernel - syscall_32.tbl linux 文件中的 "name"参数是什么意思?

linux - mv 命令变得疯狂

python - pysvn.ClientError : WC locked with sqlite attempt to write a readonly database during checkout to a same directory in the second time

在编译时或运行时检查 linux 版本