VMM Mapping Macros
include/mem/vmm_api_internal.h View source View on GitHubMacros
Section titled “Macros”vmm_request_with_defaults
Section titled “vmm_request_with_defaults”#define vmm_request_with_defaults(...) source Every API is (positional operands…, .designated = overrides…)
Expansion
#define vmm_request_with_defaults(...) \
cc_wno_override_init_expr( \
struct vmm_request, \
((struct vmm_request) {.page_flags = PAGE_NO_FLAGS, \
.vmm_flags = VMM_FLAG_NONE, \
.page_size = VMM_MAP_PAGE_SIZE_4KB, \
.tlb_mode = TLB_MODE_SYNC, \
##__VA_ARGS__})) vmm_map_page
Section titled “vmm_map_page”#define vmm_map_page(v, p, ...) source vmm_map_page(virt, phys[, .page_flags, .vmm_flags, .page_size, .tlb_mode])Expansion
#define vmm_map_page(v, p, ...) \
vmm_map_page_full((v), (p), vmm_request_with_defaults(__VA_ARGS__)) vmm_map_page_user
Section titled “vmm_map_page_user”#define vmm_map_page_user(pml4, v, p, ...) source Expansion
#define vmm_map_page_user(pml4, v, p, ...) \
vmm_map_page_user_full((pml4), (v), (p), \
vmm_request_with_defaults(__VA_ARGS__)) vmm_unmap_page
Section titled “vmm_unmap_page”#define vmm_unmap_page(v, ...) source Expansion
#define vmm_unmap_page(v, ...) \
vmm_unmap_page_full((v), vmm_request_with_defaults(__VA_ARGS__)) vmm_get_phys
Section titled “vmm_get_phys”#define vmm_get_phys(v, ...) source Expansion
#define vmm_get_phys(v, ...) \
vmm_get_phys_full((v), vmm_request_with_defaults(__VA_ARGS__)) vmm_get_leaf_pte
Section titled “vmm_get_leaf_pte”#define vmm_get_leaf_pte(v, ...) source Expansion
#define vmm_get_leaf_pte(v, ...) \
vmm_get_leaf_pte_full((v), vmm_request_with_defaults(__VA_ARGS__)) vmm_map
Section titled “vmm_map”#define vmm_map(paddr, vaddr, len, ...) source Multi-page helpers: .page_flags are OR’d onto PRESENT | WRITE
Expansion
#define vmm_map(paddr, vaddr, len, ...) \
vmm_map_full((paddr), (vaddr), (len), \
vmm_request_with_defaults(__VA_ARGS__)) vmm_unmap
Section titled “vmm_unmap”#define vmm_unmap(addr, len, ...) source Expansion
#define vmm_unmap(addr, len, ...) \
vmm_unmap_full((addr), (len), vmm_request_with_defaults(__VA_ARGS__)) vmm_map_bump
Section titled “vmm_map_bump”#define vmm_map_bump(addr, len, ...) source Expansion
#define vmm_map_bump(addr, len, ...) \
vmm_map_bump_full((addr), (len), vmm_request_with_defaults(__VA_ARGS__)) vmm_unmap_all_user_pages
Section titled “vmm_unmap_all_user_pages”#define vmm_unmap_all_user_pages(pml4, ...) source Expansion
#define vmm_unmap_all_user_pages(pml4, ...) \
vmm_unmap_all_user_pages_full((pml4), \
vmm_request_with_defaults(__VA_ARGS__)) vmm_map_aliased
Section titled “vmm_map_aliased”#define vmm_map_aliased(v, len, p, ...) source Expansion
#define vmm_map_aliased(v, len, p, ...) \
vmm_map_aliased_full((v), (len), (p), \
vmm_request_with_defaults(__VA_ARGS__)) vmm_unshare_path
Section titled “vmm_unshare_path”#define vmm_unshare_path(v, ...) source leaf size to unshare down to is .page_size
Expansion
#define vmm_unshare_path(v, ...) \
vmm_unshare_path_full((v), vmm_request_with_defaults(__VA_ARGS__)) vmm_mark_demand_page
Section titled “vmm_mark_demand_page”#define vmm_mark_demand_page(v, dflags, ...) source Demand pages take demand_page_flags positionally
Expansion
#define vmm_mark_demand_page(v, dflags, ...) \
vmm_mark_demand_page_full((v), (dflags), \
vmm_request_with_defaults(__VA_ARGS__)) vmm_mark_demand_page_user
Section titled “vmm_mark_demand_page_user”#define vmm_mark_demand_page_user(pml4, v, dflags, ...) source Expansion
#define vmm_mark_demand_page_user(pml4, v, dflags, ...) \
vmm_mark_demand_page_user_full((pml4), (v), (dflags), \
vmm_request_with_defaults(__VA_ARGS__)) vmm_map_demand_page
Section titled “vmm_map_demand_page”#define vmm_map_demand_page(v, p, dflags, ...) source Expansion
#define vmm_map_demand_page(v, p, dflags, ...) \
vmm_map_demand_page_full((v), (p), (dflags), \
vmm_request_with_defaults(__VA_ARGS__))