mirror of https://github.com/acidanthera/audk.git
192 lines
4.8 KiB
C
192 lines
4.8 KiB
C
|
/** @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
|
||
|
|