linux - ioremap 是否需要 future 的页面错误

标签 linux linux-kernel kernel linux-device-driver

Ioremap 是在内核模式下完成的。 ioremap 是否在页表中创建条目 ioremap的调用还是访问地址的时候?

最佳答案

对于ioremap,页表是立即更新的。由于该函数旨在将物理“I/O”地址映射到内核虚拟地址空间,因此设置页表条目以导致页面错误是没有意义的。本质上,页面错误支持将物理内存的一页动态替换为另一页。但根据定义,I/O 空间是不可替代的。

例如,ioremap 的一个常见用途是允许内核模块访问附加卡或其他外围设备上的寄存器空间。为了对卡片进行操作,内核代码必须获得一个虚拟地址,该地址指的是卡片寄存器区域对应的物理总线地址。 ioremap 导致分配虚拟空间,并建立从该虚拟范围到卡空间的映射。 “交换”底层物理页面是没有意义的:该页面不是真正的内存页面,它具有无法被任何其他物理内存复制的特殊功能。

关于linux - ioremap 是否需要 future 的页面错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23477297/

相关文章:

linux - request_irq- irq 标志设置为 0 ;这是有效的吗?

linux - 写入任何地方的用户空间程序

operating-system - 内核/用户模式之间的转换是由硬件还是软件完成的?

c - 微过滤器驱动程序在后期操作中附加到用户缓冲区

ubuntu - 如何检查 Linux 内核上的默认 kvm mmu?

java - Tomcat运行在linux服务器上。从此服务器发出请求时无法获得响应,但在发出远程请求时可以

c++ - Centos 7 带有自定义构建的 GLFW binary/usr/bin/ld :/usr/local/lib/libglfw3. a(init.c.o): `.text' 部分中无法识别的重定位 (0x2a)

linux - 设备的内存映射 IO 地址是否映射到进程的内核空间?

linux-kernel - 如何用C语言访问Linux上的物理地址?

linux - 对添加到内核的系统调用的 undefined reference