Struct linux_loader::loader::elf::Elf
source · pub struct Elf;
Available on x86 or x86-64 only.
Expand description
Raw ELF (a.k.a. vmlinux) kernel image support.
Trait Implementations§
source§impl KernelLoader for Elf
Available on crate feature elf
only.
impl KernelLoader for Elf
Available on crate feature
elf
only.source§fn load<F, M: GuestMemory>(
guest_mem: &M,
kernel_offset: Option<GuestAddress>,
kernel_image: &mut F,
highmem_start_address: Option<GuestAddress>
) -> Result<KernelLoaderResult>
fn load<F, M: GuestMemory>( guest_mem: &M, kernel_offset: Option<GuestAddress>, kernel_image: &mut F, highmem_start_address: Option<GuestAddress> ) -> Result<KernelLoaderResult>
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§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more