TianoCore EDK2 master
Loading...
Searching...
No Matches
GenericQemuLoadImageLib.c File Reference

Go to the source code of this file.

Data Structures

struct  KERNEL_FILE_DEVPATH
 
struct  KERNEL_VENMEDIA_FILE_DEVPATH
 
struct  SINGLE_VENMEDIA_NODE_DEVPATH
 

Functions

STATIC EFI_STATUS GetQemuKernelLoaderBlobSize (IN EFI_FILE_HANDLE Root, IN CHAR16 *FileName, OUT UINTN *Size)
 
STATIC EFI_STATUS ReadWholeQemuKernelLoaderBlob (IN EFI_FILE_HANDLE Root, IN CHAR16 *FileName, IN UINTN Size, OUT VOID *Buffer)
 
EFI_STATUS EFIAPI QemuLoadKernelImage (OUT EFI_HANDLE *ImageHandle)
 
EFI_STATUS EFIAPI QemuStartKernelImage (IN OUT EFI_HANDLE *ImageHandle)
 
EFI_STATUS EFIAPI QemuUnloadKernelImage (IN EFI_HANDLE ImageHandle)
 

Variables

STATIC CONST KERNEL_VENMEDIA_FILE_DEVPATH mKernelDevicePath
 
STATIC CONST SINGLE_VENMEDIA_NODE_DEVPATH mQemuKernelLoaderFsDevicePath
 

Detailed Description

Generic implementation of QemuLoadImageLib library class interface.

Copyright (c) 2020, ARM Ltd. All rights reserved.

SPDX-License-Identifier: BSD-2-Clause-Patent

Definition in file GenericQemuLoadImageLib.c.

Function Documentation

◆ GetQemuKernelLoaderBlobSize()

STATIC EFI_STATUS GetQemuKernelLoaderBlobSize ( IN EFI_FILE_HANDLE  Root,
IN CHAR16 *  FileName,
OUT UINTN Size 
)

Definition at line 75 of file GenericQemuLoadImageLib.c.

◆ QemuLoadKernelImage()

EFI_STATUS EFIAPI QemuLoadKernelImage ( OUT EFI_HANDLE ImageHandle)

Download the kernel, the initial ramdisk, and the kernel command line from QEMU's fw_cfg. The kernel will be instructed via its command line to load the initrd from the same Simple FileSystem where the kernel was loaded from.

Parameters
[out]ImageHandleThe image handle that was allocated for loading the image
Return values
EFI_SUCCESSThe image was loaded successfully.
EFI_NOT_FOUNDKernel image was not found.
EFI_OUT_OF_RESOURCESMemory allocation failed.
EFI_PROTOCOL_ERRORUnterminated kernel command line.
EFI_ACCESS_DENIEDThe underlying LoadImage boot service call returned EFI_SECURITY_VIOLATION, and the image was unloaded again.
Returns
Error codes from any of the underlying functions.

Definition at line 163 of file GenericQemuLoadImageLib.c.

◆ QemuStartKernelImage()

EFI_STATUS EFIAPI QemuStartKernelImage ( IN OUT EFI_HANDLE ImageHandle)

Transfer control to a kernel image loaded with QemuLoadKernelImage ()

Parameters
[in,out]ImageHandleHandle of image to be started. May assume a different value on return if the image was reloaded.
Return values
EFI_INVALID_PARAMETERImageHandle is either an invalid image handle or the image has already been initialized with StartImage
EFI_SECURITY_VIOLATIONThe current platform policy specifies that the image should not be started.
Returns
Error codes returned by the started image

Definition at line 373 of file GenericQemuLoadImageLib.c.

◆ QemuUnloadKernelImage()

EFI_STATUS EFIAPI QemuUnloadKernelImage ( IN EFI_HANDLE  ImageHandle)

Unloads an image loaded with QemuLoadKernelImage ().

Parameters
ImageHandleHandle that identifies the image to be unloaded.
Return values
EFI_SUCCESSThe image has been unloaded.
EFI_UNSUPPORTEDThe image has been started, and does not support unload.
EFI_INVALID_PARAMETERImageHandle is not a valid image handle.
Returns
Exit code from the image's unload function.

Definition at line 399 of file GenericQemuLoadImageLib.c.

◆ ReadWholeQemuKernelLoaderBlob()

STATIC EFI_STATUS ReadWholeQemuKernelLoaderBlob ( IN EFI_FILE_HANDLE  Root,
IN CHAR16 *  FileName,
IN UINTN  Size,
OUT VOID *  Buffer 
)

Definition at line 109 of file GenericQemuLoadImageLib.c.

Variable Documentation

◆ mKernelDevicePath

Initial value:
= {
{
{
MEDIA_DEVICE_PATH, MEDIA_VENDOR_DP,
{ sizeof (VENDOR_DEVICE_PATH) }
},
QEMU_KERNEL_LOADER_FS_MEDIA_GUID
}, {
{
MEDIA_DEVICE_PATH, MEDIA_FILEPATH_DP,
{ sizeof (KERNEL_FILE_DEVPATH) }
},
L"kernel",
}, {
END_DEVICE_PATH_TYPE, END_ENTIRE_DEVICE_PATH_SUBTYPE,
}
}
#define MEDIA_FILEPATH_DP
Definition: DevicePath.h:1098
#define MEDIA_VENDOR_DP
Media vendor device path subtype.
Definition: DevicePath.h:1093

Definition at line 41 of file GenericQemuLoadImageLib.c.

◆ mQemuKernelLoaderFsDevicePath

STATIC CONST SINGLE_VENMEDIA_NODE_DEVPATH mQemuKernelLoaderFsDevicePath
Initial value:
= {
{
{
MEDIA_DEVICE_PATH, MEDIA_VENDOR_DP,
{ sizeof (VENDOR_DEVICE_PATH) }
},
QEMU_KERNEL_LOADER_FS_MEDIA_GUID
}, {
END_DEVICE_PATH_TYPE, END_ENTIRE_DEVICE_PATH_SUBTYPE,
}
}

Definition at line 60 of file GenericQemuLoadImageLib.c.