Skip to content

sentinel-stack/sentinel-vmi/src/memory.c

Name
struct vmi_memslot *find_memslot(struct vmi_session * s, uint64_t gpa, uint64_t * offset)
intis_transient_errno(int err)
intread_remote_process(struct vmi_session * s, uint64_t remote_addr, void * buf, size_t size)
intwrite_remote_process(struct vmi_session * s, uint64_t remote_addr, const void * buf, size_t size)
intread_via_memslots(struct vmi_session * s, uint64_t gpa, void * buf, size_t size)
intwrite_via_memslots(struct vmi_session * s, uint64_t gpa, const void * buf, size_t size)
intread_via_devmem(uint64_t gpa, void * buf, size_t size)
intvmi_read_physical(struct vmi_session * s, uint64_t gpa, void * buf, size_t size)
intvmi_write_physical(struct vmi_session * s, uint64_t gpa, const void * buf, size_t size)
intvmi_gva_to_gpa(struct vmi_session * s, uint64_t cr3, uint64_t gva, uint64_t * gpa)
intvmi_read_virtual(struct vmi_session * s, uint64_t cr3, uint64_t gva, void * buf, size_t size)
Name
PT_ENTRY_SIZE
PT_ENTRIES
PT_PRESENT
PT_WRITABLE
PT_PAGESIZE
PT_ADDR_MASK
VMI_IO_RETRY_MAX
PML4_INDEX(va)
PDPT_INDEX(va)
PD_INDEX(va)
PT_INDEX(va)
PAGE_OFFSET(va)
static struct vmi_memslot * find_memslot(
struct vmi_session * s,
uint64_t gpa,
uint64_t * offset
)
static int is_transient_errno(
int err
)
static int read_remote_process(
struct vmi_session * s,
uint64_t remote_addr,
void * buf,
size_t size
)
static int write_remote_process(
struct vmi_session * s,
uint64_t remote_addr,
const void * buf,
size_t size
)
static int read_via_memslots(
struct vmi_session * s,
uint64_t gpa,
void * buf,
size_t size
)
static int write_via_memslots(
struct vmi_session * s,
uint64_t gpa,
const void * buf,
size_t size
)
static int read_via_devmem(
uint64_t gpa,
void * buf,
size_t size
)
int vmi_read_physical(
struct vmi_session * s,
uint64_t gpa,
void * buf,
size_t size
)
int vmi_write_physical(
struct vmi_session * s,
uint64_t gpa,
const void * buf,
size_t size
)
int vmi_gva_to_gpa(
struct vmi_session * s,
uint64_t cr3,
uint64_t gva,
uint64_t * gpa
)
int vmi_read_virtual(
struct vmi_session * s,
uint64_t cr3,
uint64_t gva,
void * buf,
size_t size
)
#define PT_ENTRY_SIZE 8
#define PT_ENTRIES 512
#define PT_PRESENT (1ULL << 0)
#define PT_WRITABLE (1ULL << 1)
#define PT_PAGESIZE (1ULL << 7)
#define PT_ADDR_MASK 0x000FFFFFFFFFF000ULL
#define VMI_IO_RETRY_MAX 3
#define PML4_INDEX(
va
)
(((va) >> 39) & 0x1FF)
#define PDPT_INDEX(
va
)
(((va) >> 30) & 0x1FF)
#define PD_INDEX(
va
)
(((va) >> 21) & 0x1FF)
#define PT_INDEX(
va
)
(((va) >> 12) & 0x1FF)
#define PAGE_OFFSET(
va
)
((va) & 0xFFF)

Updated on 2026-05-26 at 13:25:29 +0000