如何在内核中分配16K连续内存并获取物理地址?

时间:2014-02-06 05:41:14

标签: linux-kernel

我的理解是内核页面大小为4K。我想为我的驱动程序分配16K连续内存作为我的缓冲区。我使用kmalloc()并返回一个指针(我假设分配成功)。

这是否意味着16K是连续的?

我从kmalloc()获得的地址是虚拟地址吗?如果我需要将该地址传递给HW寄存器,我是使用虚拟地址还是物理地址?

1 个答案:

答案 0 :(得分:2)

是 - 使用kmalloc分配的内存是物理连续的,地址是虚拟地址。尝试使用virt_to_phys()宏来获取物理地址。