int v3_walk_guest_pt_32(struct guest_info * info, v3_reg_t guest_cr3,
- int (*callback)(int level, addr_t page_ptr, addr_t page_pa, void * private_data),
+ void (*callback)(page_type_t type, addr_t page_ptr, addr_t page_pa, void * private_data),
void * private_data) {
addr_t guest_pde_pa = CR3_TO_PDE32_PA(guest_cr3);
pde32_t * guest_pde = NULL;
int v3_walk_guest_pt_32pae(struct guest_info * info, v3_reg_t guest_cr3,
- int (*callback)(int level, addr_t page_ptr, addr_t page_pa, void * private_data),
+ void (*callback)(page_type_t type, addr_t page_ptr, addr_t page_pa, void * private_data),
void * private_data) {
addr_t guest_pdpe_pa = CR3_TO_PDPE32PAE_PA(guest_cr3);
pdpe32pae_t * guest_pdpe = NULL;
int v3_walk_guest_pt_64(struct guest_info * info, v3_reg_t guest_cr3,
- int (*callback)(int level, addr_t page_ptr, addr_t page_pa, void * private_data),
+ void (*callback)(page_type_t type, addr_t page_ptr, addr_t page_pa, void * private_data),
void * private_data) {
addr_t guest_pml_pa = CR3_TO_PML4E64_PA(guest_cr3);
pml4e64_t * guest_pml = NULL;
}
int v3_walk_host_pt_32(v3_reg_t host_cr3,
- int (*callback)(int level, addr_t page_ptr, addr_t page_pa, void * private_data),
+ void (*callback)(page_type_t type, addr_t page_ptr, addr_t page_pa, void * private_data),
void * private_data) {
pde32_t * host_pde = (pde32_t *)CR3_TO_PDE32_VA(host_cr3);
addr_t pde_pa = CR3_TO_PDE32_PA(host_cr3);
}
return 0;
}
+
+
+
+static const uchar_t PAGE_4KB_STR[] = "4KB_PAGE";
+static const uchar_t PAGE_2MB_STR[] = "2MB_PAGE";
+static const uchar_t PAGE_4MB_STR[] = "4MB_PAGE";
+static const uchar_t PAGE_1GB_STR[] = "1GB_PAGE";
+static const uchar_t PAGE_PT32_STR[] = "32 Bit PT";
+static const uchar_t PAGE_PD32_STR[] = "32 Bit PD";
+static const uchar_t PAGE_PDP32PAE_STR[] = "32 Bit PAE PDP";
+static const uchar_t PAGE_PD32PAE_STR[] = "32 Bit PAE PD";
+static const uchar_t PAGE_PT32PAE_STR[] = "32 Bit PAE PT";
+static const uchar_t PAGE_PML464_STR[] = "64 Bit PML4";
+static const uchar_t PAGE_PDP64_STR[] = "64 Bit PDP";
+static const uchar_t PAGE_PD64_STR[] = "64 Bit PD";
+static const uchar_t PAGE_PT64_STR[] = "64 Bit PT";
+
+
+const uchar_t * v3_page_type_to_str(page_type_t type) {
+ switch (type) {
+ case PAGE_4KB:
+ return PAGE_4KB_STR;
+ case PAGE_2MB:
+ return PAGE_2MB_STR;
+ case PAGE_4MB:
+ return PAGE_4MB_STR;
+ case PAGE_1GB:
+ return PAGE_1GB_STR;
+ case PAGE_PT32:
+ return PAGE_PT32_STR;
+ case PAGE_PD32:
+ return PAGE_PD32_STR;
+ case PAGE_PDP32PAE:
+ return PAGE_PDP32PAE_STR;
+ case PAGE_PD32PAE:
+ return PAGE_PD32PAE_STR;
+ case PAGE_PT32PAE:
+ return PAGE_PT32PAE_STR;
+ case PAGE_PML464:
+ return PAGE_PML464_STR;
+ case PAGE_PDP64:
+ return PAGE_PDP64_STR;
+ case PAGE_PD64:
+ return PAGE_PD64_STR;
+ case PAGE_PT64:
+ return PAGE_PT64_STR;
+ default:
+ return NULL;
+ }
+}