Hypervisor and Memory Management

Core Functions

init()

Initializes the hypervisor for all processor cores.

Returns: vmxroot_error_t

Example:

ScyHV::vmxroot_error_t result = Styx::init();
if (result == STY_SUCCESS) {
    std::cout << "Hypervisor initialized successfully" << std::endl;
}

initPTB()

Initializes the Page Table Base.

Returns: bool

Example:

if (Styx::initPTB()) {
    std::cout << "Page Table Base initialized successfully" << std::endl;
}

my_dtb()

Retrieves the current Directory Table Base.

Returns: guest_phys_t

Example:

Memory Operations

translate(guest_virt_t virt_addr)

Translates a guest virtual address to a guest physical address.

Parameters:

  • virt_addr: Guest virtual address

Returns: guest_phys_t

Example:

read_phys(guest_phys_t phys_addr, guest_virt_t buffer, u64 size)

Reads from physical memory.

Parameters:

  • phys_addr: Physical address to read from

  • buffer: Buffer to store read data

  • size: Number of bytes to read

Returns: vmxroot_error_t

Example:

write_phys(guest_phys_t phys_addr, guest_virt_t buffer, u64 size)

Writes to physical memory.

Parameters:

  • phys_addr: Physical address to write to

  • buffer: Buffer containing data to write

  • size: Number of bytes to write

Returns: vmxroot_error_t

Example:

read_km(void* dst, void* src, size_t size)

Reads from kernel memory.

Parameters:

  • dst: Destination buffer

  • src: Source address in kernel memory

  • size: Number of bytes to read

Example:

write_km(void* dst, void* src, size_t size)

Writes to kernel memory.

Parameters:

  • dst: Destination address in kernel memory

  • src: Source buffer

  • size: Number of bytes to write

Example:

copy_virt(guest_phys_t dirbase_src, guest_virt_t virt_src, guest_phys_t dirbase_dest, guest_virt_t virt_dest, u64 size)

Copies memory between virtual addresses.

Parameters:

  • dirbase_src: Source directory base

  • virt_src: Source virtual address

  • dirbase_dest: Destination directory base

  • virt_dest: Destination virtual address

  • size: Number of bytes to copy

Returns: vmxroot_error_t

Example:

Last updated