Signed-off-by: Jordan Justen <jordan.l.jus...@intel.com>
---
 OvmfPkg/Include/Library/LoadLinuxLib.h |  208 ++++++++++++++++++++++++++++++++
 OvmfPkg/OvmfPkg.dec                    |    4 +
 2 files changed, 212 insertions(+)
 create mode 100644 OvmfPkg/Include/Library/LoadLinuxLib.h

diff --git a/OvmfPkg/Include/Library/LoadLinuxLib.h 
b/OvmfPkg/Include/Library/LoadLinuxLib.h
new file mode 100644
index 0000000..d73ee9f
--- /dev/null
+++ b/OvmfPkg/Include/Library/LoadLinuxLib.h
@@ -0,0 +1,208 @@
+/** @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_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,out] 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] KernelSetup - The kernel setup image
+  @param[in] Initrd - The kernel initial root disk
+  @param[in] CommandLine - The kernel command line
+
+  @retval    EFI_NOT_FOUND - The Linux kernel was not found
+  @retval    EFI_UNSUPPORTED - The Linux kernel version is not supported
+
+**/
+EFI_STATUS
+EFIAPI
+LoadLinux (
+  IN VOID      *Kernel,
+  IN VOID      *KernelSetup
+  );
+
+
+/**
+  Loads and boots UEFI Linux.
+
+  Note: If successful, then this routine will not return
+
+  @param[in] BzImage - The main kernel image
+  @param[in] BzImageSize - The main kernel image size
+  @param[in] Initrd - The initial root disk image
+  @param[in] InitrdSize - The initial root disk image size
+  @param[in] CommandLine - The kernel command line
+
+  @retval    EFI_NOT_FOUND - The Linux kernel was not found
+  @retval    EFI_UNSUPPORTED - The Linux kernel version is not supported
+
+**/
+EFI_STATUS
+EFIAPI
+LoadLinuxBzImage (
+  IN VOID      *BzImage,
+  IN UINTN     BzImageSize
+  );
+
+
+/**
+  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]     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]     Pages - The number of pages.
+
+  @retval    NULL - Unable to allocate pages
+  @retval    !NULL - The address of the pages allocated
+
+**/
+VOID*
+EFIAPI
+LoadLinuxAllocateInitrdPages (
+  IN UINTN                  Pages
+  );
+
+
+/**
+  Sets the kernel command line parameter within the setup image.
+
+  @param[in]     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_UNSUPPORTED - The Linux kernel is not supported
+
+**/
+EFI_STATUS
+EFIAPI
+LoadLinuxSetCommandLine (
+  IN VOID        *KernelSetup,
+  IN CHAR8       *CommandLine
+  );
+
+
+/**
+  Sets the kernel command line parameter within the setup image.
+
+  @param[in]     KernelSetup - The kernel setup image
+  @param[in]     Initrd - The initial root disk image
+
+  @retval    EFI_SUCCESS - The Linux kernel setup is valid and supported
+  @retval    EFI_UNSUPPORTED - The Linux kernel is not supported
+
+**/
+EFI_STATUS
+EFIAPI
+LoadLinuxSetInitrd (
+  IN VOID        *KernelSetup,
+  IN VOID        *Initrd,
+  IN UINTN       InitrdSize
+  );
+
+
+#endif
+
diff --git a/OvmfPkg/OvmfPkg.dec b/OvmfPkg/OvmfPkg.dec
index 73db6af..d874f0c 100644
--- a/OvmfPkg/OvmfPkg.dec
+++ b/OvmfPkg/OvmfPkg.dec
@@ -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
-- 
1.7.9.5


------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_sfd2d_oct
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to