在Guest上使用kmalloc的连续物理内存



我正在来宾操作系统中实现一个设备驱动程序。为此,我需要分配一个缓冲区空间,该空间必须是连续的物理内存。在客户操作系统中使用kmalloc分配缓冲区是否保证了连续的物理地址?如果没有,我如何才能做到这一点?

kmalloc()将保证连续的物理内存,并且应该用于小对象,如函数文档中所述:

* kmalloc is the normal method of allocating memory
* for objects smaller than page size in the kernel.

对于较大的物理连续分配,应该使用alloc_pages()

但是,由于您在来宾操作系统中,将要分配的物理内存是来宾看到的,而不是系统管理程序("真实"的(看到的。分配的内存实际上是否连续取决于系统管理程序如何向来宾操作系统公开内存。

最新更新