pub struct Elf;
Expand description
Raw ELF (a.k.a. vmlinux) kernel image support.
Trait Implementations
sourceimpl KernelLoader for Elf
impl KernelLoader for Elf
sourcefn load<F, M: GuestMemory>(
guest_mem: &M,
kernel_offset: Option<GuestAddress>,
kernel_image: &mut F,
highmem_start_address: Option<GuestAddress>
) -> Result<KernelLoaderResult>where
F: Read + Seek,
fn load<F, M: GuestMemory>(
guest_mem: &M,
kernel_offset: Option<GuestAddress>,
kernel_image: &mut F,
highmem_start_address: Option<GuestAddress>
) -> Result<KernelLoaderResult>where
F: Read + Seek,
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
impl RefUnwindSafe for Elf
impl Send for Elf
impl Sync for Elf
impl Unpin for Elf
impl UnwindSafe for Elf
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more