我正在客户操作系统中编写一个内核模块,它将在使用 KVM 的虚拟机上运行。在这里,我想在特定的物理地址处分配一个内存页。kmalloc() 给了我内存,但在操作系统选择的物理地址上。
背景:我正在 qemu 中编写一种设备仿真技术,当来宾与设备通信时它不会退出(例如,它在 I/O 映射设备和端口映射设备中退出)。基本思想如下:客户设备驱动程序将写入特定的(客户)物理内存地址。qemu 进程中的一个线程将不断地轮询它以检查新数据(通过一些状态位等)。并且会采取相应的行动而不会导致退出。由于没有(现有的)方法可以让客户告诉主机设备驱动程序正在使用什么地址,我希望为其分配一个预先指定的内存页面。