我试图了解 ARM64 中 Zircon 的(Fuchsia OS 内核)如何分配页面,所以我找到了 mmu.cpp https://fuchsia.googlesource.com/fuchsia/+/4277d3203daa0fc5e4dd1625cf96891dd9882f44/zircon/kernel/arch/arm64/mmu .cc#328
但它只是这样做:
if (likely(!test_page_alloc_func_)) {
status = pmm_alloc_page(0, &page, paddrp);
}
pmm_alloc_page
来自这里:https ://fuchsia.googlesource.com/fuchsia/+/4277d3203daa0fc5e4dd1625cf96891dd9882f44/zircon/kernel/vm/pmm.cc#61
此处定义的 pmm 节点:https ://fuchsia.googlesource.com/fuchsia/+/4277d3203daa0fc5e4dd1625cf96891dd9882f44/zircon/kernel/vm/pmm_node.h说:
// per numa node collection of pmm arenas and worker threads
class PmmNode {
我在谷歌上找不到 PMM 区域,也没有在 Fuchsia 文档上找到。有人可以向我澄清这些概念吗?
我想了解如何在 Zircon 内核上的 ARM64 中处理 MMU