vmm_pte_impl
struct vmm_pte_impl;
bool vmm_gpt_init(const struct vmm_pte_impl *);
typedef struct vmm_pte_impl vmm_pte_impl_t;
const uint64_t accessed_bit = vmm_pte_impl->vpi_bit_accessed;
const uint64_t dirty_bit = vmm_pte_impl->vpi_bit_dirty;
const uint64_t dirty_bit = vmm_pte_impl->vpi_bit_dirty;
return ((*ptep & vmm_pte_impl->vpi_bit_accessed) != 0);
return ((*ptep & vmm_pte_impl->vpi_bit_dirty) != 0);
return (vmm_pte_impl->vpi_get_pmtp(root_pfn, track_dirty));
return (vmm_pte_impl->vpi_hw_ad_supported());
const struct vmm_pte_impl vmm_pte_uninit_impl = {
static const struct vmm_pte_impl *vmm_pte_impl = &vmm_pte_uninit_impl;
vmm_gpt_patch_indirection(const struct vmm_pte_impl *old_impl,
const struct vmm_pte_impl *new_impl)
vmm_gpt_init(const struct vmm_pte_impl *target_impl)
VERIFY3P(vmm_pte_impl, ==, &vmm_pte_uninit_impl);
if (vmm_gpt_patch_indirection(vmm_pte_impl, target_impl)) {
vmm_pte_impl = target_impl;
VERIFY(vmm_gpt_patch_indirection(vmm_pte_impl, &vmm_pte_uninit_impl));
vmm_pte_impl = &vmm_pte_uninit_impl;
const struct vmm_pte_impl ept_pte_impl = {
const struct vmm_pte_impl rvi_pte_impl = {
extern struct vmm_pte_impl ept_pte_impl;
extern struct vmm_pte_impl rvi_pte_impl;