mirror of https://github.com/acidanthera/audk.git
OvmfPkg: Add LoadLinuxLib library interface
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com> git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13921 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
80feb819d3
commit
f6c6c02028
|
@ -0,0 +1,191 @@
|
|||
/** @file
|
||||
Load/boot UEFI Linux.
|
||||
|
||||
Copyright (c) 2011 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __LOAD_LINUX_LIB__
|
||||
#define __LOAD_LINUX_LIB__
|
||||
|
||||
|
||||
/**
|
||||
Verifies that the kernel setup image is valid and supported.
|
||||
The kernel setup image should be checked before using other library
|
||||
routines which take the kernel setup as an input.
|
||||
|
||||
@param[in] KernelSetup - The kernel setup image
|
||||
@param[in] KernelSetupSize - The kernel setup size
|
||||
|
||||
@retval EFI_SUCCESS - The Linux kernel setup is valid and supported
|
||||
@retval EFI_INVALID_PARAMETER - KernelSetup was NULL
|
||||
@retval EFI_UNSUPPORTED - The Linux kernel is not supported
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
LoadLinuxCheckKernelSetup (
|
||||
IN VOID *KernelSetup,
|
||||
IN UINTN KernelSetupSize
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Gets the initial runtime size of the Linux kernel image by examining
|
||||
the kernel setup image.
|
||||
|
||||
@param[in] KernelSetup - The kernel setup image
|
||||
@param[in] KernelSize - The kernel size on disk.
|
||||
|
||||
@retval 0 An error occured
|
||||
@retval !0 The initial size required by the kernel to
|
||||
begin execution.
|
||||
|
||||
**/
|
||||
UINTN
|
||||
EFIAPI
|
||||
LoadLinuxGetKernelSize (
|
||||
IN VOID *KernelSetup,
|
||||
IN UINTN KernelSize
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Loads and boots UEFI Linux.
|
||||
|
||||
Note: If successful, then this routine will not return
|
||||
|
||||
@param[in] Kernel - The main kernel image
|
||||
@param[in,out] KernelSetup - The kernel setup image
|
||||
|
||||
@retval EFI_NOT_FOUND - The Linux kernel was not found
|
||||
@retval EFI_INVALID_PARAMETER - Kernel or KernelSetup was NULL
|
||||
@retval EFI_UNSUPPORTED - The Linux kernel version is not supported
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
LoadLinux (
|
||||
IN VOID *Kernel,
|
||||
IN OUT VOID *KernelSetup
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Allocates pages for the kernel setup image.
|
||||
|
||||
@param[in] Pages - The number of pages
|
||||
|
||||
@retval NULL - Unable to allocate pages
|
||||
@retval !NULL - The address of the pages allocated
|
||||
|
||||
**/
|
||||
VOID*
|
||||
EFIAPI
|
||||
LoadLinuxAllocateKernelSetupPages (
|
||||
IN UINTN Pages
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Allocates pages for the kernel.
|
||||
|
||||
@param[in] KernelSetup - The kernel setup image
|
||||
@param[in] Pages - The number of pages. (It is recommended to use the
|
||||
size returned from LoadLinuxGetKernelSize.)
|
||||
|
||||
@retval NULL - Unable to allocate pages
|
||||
@retval !NULL - The address of the pages allocated
|
||||
|
||||
**/
|
||||
VOID*
|
||||
EFIAPI
|
||||
LoadLinuxAllocateKernelPages (
|
||||
IN VOID *KernelSetup,
|
||||
IN UINTN Pages
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Allocates pages for the kernel command line.
|
||||
|
||||
@param[in] Pages - The number of pages.
|
||||
|
||||
@retval NULL - Unable to allocate pages
|
||||
@retval !NULL - The address of the pages allocated
|
||||
|
||||
**/
|
||||
VOID*
|
||||
EFIAPI
|
||||
LoadLinuxAllocateCommandLinePages (
|
||||
IN UINTN Pages
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Allocates pages for the initrd image.
|
||||
|
||||
@param[in,out] KernelSetup - The kernel setup image
|
||||
@param[in] Pages - The number of pages.
|
||||
|
||||
@retval NULL - Unable to allocate pages
|
||||
@retval !NULL - The address of the pages allocated
|
||||
|
||||
**/
|
||||
VOID*
|
||||
EFIAPI
|
||||
LoadLinuxAllocateInitrdPages (
|
||||
IN VOID *KernelSetup,
|
||||
IN UINTN Pages
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Sets the kernel command line parameter within the setup image.
|
||||
|
||||
@param[in,out] KernelSetup - The kernel setup image
|
||||
@param[in] CommandLine - The kernel command line
|
||||
|
||||
@retval EFI_SUCCESS - The Linux kernel setup is valid and supported
|
||||
@retval EFI_INVALID_PARAMETER - KernelSetup was NULL
|
||||
@retval EFI_UNSUPPORTED - The Linux kernel is not supported
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
LoadLinuxSetCommandLine (
|
||||
IN OUT VOID *KernelSetup,
|
||||
IN CHAR8 *CommandLine
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Sets the kernel initial ram disk pointer within the setup image.
|
||||
|
||||
@param[in,out] KernelSetup - The kernel setup image
|
||||
@param[in] Initrd - Pointer to the initial ram disk
|
||||
@param[in] InitrdSize - The initial ram disk image size
|
||||
|
||||
@retval EFI_SUCCESS - The Linux kernel setup is valid and supported
|
||||
@retval EFI_INVALID_PARAMETER - KernelSetup was NULL
|
||||
@retval EFI_UNSUPPORTED - The Linux kernel is not supported
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
LoadLinuxSetInitrd (
|
||||
IN OUT VOID *KernelSetup,
|
||||
IN VOID *Initrd,
|
||||
IN UINTN InitrdSize
|
||||
);
|
||||
|
||||
|
||||
#endif
|
||||
|
|
@ -23,6 +23,10 @@
|
|||
Include
|
||||
|
||||
[LibraryClasses]
|
||||
## @libraryclass Loads and boots a Linux kernel image
|
||||
#
|
||||
LoadLinuxLib|Include/Library/LoadLinuxLib.h
|
||||
|
||||
## @libraryclass Save and restore variables using a file
|
||||
#
|
||||
NvVarsFileLib|Include/Library/NvVarsFileLib.h
|
||||
|
|
Loading…
Reference in New Issue