【发布时间】:2014-02-06 05:41:13
【问题描述】:
我的理解是内核页面大小是 4K。我想分配 16K 连续内存作为驱动程序的缓冲区。我使用了 kmalloc(),它返回了一个指针(我假设分配成功)。
这是否意味着 16K 是连续的?
我从 kmalloc() 获得的地址是虚拟地址吗?如果我需要将该地址传递给硬件寄存器,我应该使用虚拟地址还是物理地址?
【问题讨论】:
标签: linux-kernel
我的理解是内核页面大小是 4K。我想分配 16K 连续内存作为驱动程序的缓冲区。我使用了 kmalloc(),它返回了一个指针(我假设分配成功)。
这是否意味着 16K 是连续的?
我从 kmalloc() 获得的地址是虚拟地址吗?如果我需要将该地址传递给硬件寄存器,我应该使用虚拟地址还是物理地址?
【问题讨论】:
标签: linux-kernel
是 - 用 kmalloc 分配的内存是物理连续的,地址是虚拟地址。尝试使用 virt_to_phys() 宏获取物理地址。
【讨论】: