pub struct Elf;
Expand description

Raw ELF (a.k.a. vmlinux) kernel image support.

Trait Implementations

Loads a kernel from a vmlinux elf image into guest memory.

By default, the kernel is loaded into guest memory at offset phdr.p_paddr specified by the elf image. When used, kernel_offset specifies a fixed offset from phdr.p_paddr at which to load the kernel. If kernel_offset is requested, the pvh_entry_addr field of the result will not be populated.

Arguments
  • guest_mem: GuestMemory to load the kernel in.
  • kernel_offset: Offset to be added to default kernel load address in guest memory.
  • kernel_image - Input vmlinux image.
  • highmem_start_address: Address where high memory starts.
Examples
let mem_size: usize = 0x1000000;
let himem_start = GuestAddress(0x0);
let kernel_addr = GuestAddress(0x200000);
let gm = GuestMemoryMmap::from_ranges(&[(GuestAddress(0x0), mem_size)]).unwrap();
let mut kernel_image = vec![];
kernel_image.extend_from_slice(include_bytes!("test_elf.bin"));
elf::Elf::load(
    &gm,
    Some(kernel_addr),
    &mut Cursor::new(&kernel_image),
    Some(himem_start),
)
.unwrap();

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.