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
|
Include
|
||||||
|
|
||||||
[LibraryClasses]
|
[LibraryClasses]
|
||||||
|
## @libraryclass Loads and boots a Linux kernel image
|
||||||
|
#
|
||||||
|
LoadLinuxLib|Include/Library/LoadLinuxLib.h
|
||||||
|
|
||||||
## @libraryclass Save and restore variables using a file
|
## @libraryclass Save and restore variables using a file
|
||||||
#
|
#
|
||||||
NvVarsFileLib|Include/Library/NvVarsFileLib.h
|
NvVarsFileLib|Include/Library/NvVarsFileLib.h
|
||||||
|
|
Loading…
Reference in New Issue