From 6c128c65b5ec0e5b8b5a0ccb165f3afd29e485f8 Mon Sep 17 00:00:00 2001 From: Guo Mang Date: Wed, 2 Aug 2017 09:54:47 +0800 Subject: Remove core packages since we can get them from edk2 repository Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Guo Mang --- MdeModulePkg/Include/Library/AuthVariableLib.h | 261 --- MdeModulePkg/Include/Library/CapsuleLib.h | 50 - .../Include/Library/CpuExceptionHandlerLib.h | 96 - .../Include/Library/CustomizedDisplayLib.h | 356 ---- MdeModulePkg/Include/Library/DebugAgentLib.h | 103 - MdeModulePkg/Include/Library/DpcLib.h | 59 - MdeModulePkg/Include/Library/HiiLib.h | 1096 ---------- MdeModulePkg/Include/Library/HttpLib.h | 323 --- MdeModulePkg/Include/Library/IpIoLib.h | 586 ------ MdeModulePkg/Include/Library/LockBoxLib.h | 133 -- MdeModulePkg/Include/Library/NetLib.h | 2132 -------------------- .../Include/Library/OemHookStatusCodeLib.h | 79 - .../Include/Library/PlatformBootManagerLib.h | 62 - MdeModulePkg/Include/Library/PlatformHookLib.h | 38 - .../Include/Library/PlatformVarCleanupLib.h | 61 - MdeModulePkg/Include/Library/RecoveryLib.h | 35 - MdeModulePkg/Include/Library/ResetSystemLib.h | 68 - MdeModulePkg/Include/Library/S3Lib.h | 34 - .../Include/Library/SecurityManagementLib.h | 276 --- .../Include/Library/SmmCorePlatformHookLib.h | 50 - MdeModulePkg/Include/Library/SortLib.h | 113 -- MdeModulePkg/Include/Library/TcpIoLib.h | 253 --- MdeModulePkg/Include/Library/TpmMeasurementLib.h | 44 - MdeModulePkg/Include/Library/UdpIoLib.h | 355 ---- MdeModulePkg/Include/Library/UefiBootManagerLib.h | 711 ------- MdeModulePkg/Include/Library/UefiHiiServicesLib.h | 52 - MdeModulePkg/Include/Library/VarCheckLib.h | 180 -- 27 files changed, 7606 deletions(-) delete mode 100644 MdeModulePkg/Include/Library/AuthVariableLib.h delete mode 100644 MdeModulePkg/Include/Library/CapsuleLib.h delete mode 100644 MdeModulePkg/Include/Library/CpuExceptionHandlerLib.h delete mode 100644 MdeModulePkg/Include/Library/CustomizedDisplayLib.h delete mode 100644 MdeModulePkg/Include/Library/DebugAgentLib.h delete mode 100644 MdeModulePkg/Include/Library/DpcLib.h delete mode 100644 MdeModulePkg/Include/Library/HiiLib.h delete mode 100644 MdeModulePkg/Include/Library/HttpLib.h delete mode 100644 MdeModulePkg/Include/Library/IpIoLib.h delete mode 100644 MdeModulePkg/Include/Library/LockBoxLib.h delete mode 100644 MdeModulePkg/Include/Library/NetLib.h delete mode 100644 MdeModulePkg/Include/Library/OemHookStatusCodeLib.h delete mode 100644 MdeModulePkg/Include/Library/PlatformBootManagerLib.h delete mode 100644 MdeModulePkg/Include/Library/PlatformHookLib.h delete mode 100644 MdeModulePkg/Include/Library/PlatformVarCleanupLib.h delete mode 100644 MdeModulePkg/Include/Library/RecoveryLib.h delete mode 100644 MdeModulePkg/Include/Library/ResetSystemLib.h delete mode 100644 MdeModulePkg/Include/Library/S3Lib.h delete mode 100644 MdeModulePkg/Include/Library/SecurityManagementLib.h delete mode 100644 MdeModulePkg/Include/Library/SmmCorePlatformHookLib.h delete mode 100644 MdeModulePkg/Include/Library/SortLib.h delete mode 100644 MdeModulePkg/Include/Library/TcpIoLib.h delete mode 100644 MdeModulePkg/Include/Library/TpmMeasurementLib.h delete mode 100644 MdeModulePkg/Include/Library/UdpIoLib.h delete mode 100644 MdeModulePkg/Include/Library/UefiBootManagerLib.h delete mode 100644 MdeModulePkg/Include/Library/UefiHiiServicesLib.h delete mode 100644 MdeModulePkg/Include/Library/VarCheckLib.h (limited to 'MdeModulePkg/Include/Library') diff --git a/MdeModulePkg/Include/Library/AuthVariableLib.h b/MdeModulePkg/Include/Library/AuthVariableLib.h deleted file mode 100644 index 0731b8d748..0000000000 --- a/MdeModulePkg/Include/Library/AuthVariableLib.h +++ /dev/null @@ -1,261 +0,0 @@ -/** @file - Provides services to initialize and process authenticated variables. - -Copyright (c) 2015, Intel Corporation. All rights reserved.
-This program and the accompanying materials are licensed and made available under -the terms and conditions of the BSD License that 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 _AUTH_VARIABLE_LIB_H_ -#define _AUTH_VARIABLE_LIB_H_ - -#include - -/// -/// Size of AuthInfo prior to the data payload. -/// -#define AUTHINFO_SIZE ((OFFSET_OF (EFI_VARIABLE_AUTHENTICATION, AuthInfo)) + \ - (OFFSET_OF (WIN_CERTIFICATE_UEFI_GUID, CertData)) + \ - sizeof (EFI_CERT_BLOCK_RSA_2048_SHA256)) - -#define AUTHINFO2_SIZE(VarAuth2) ((OFFSET_OF (EFI_VARIABLE_AUTHENTICATION_2, AuthInfo)) + \ - (UINTN) ((EFI_VARIABLE_AUTHENTICATION_2 *) (VarAuth2))->AuthInfo.Hdr.dwLength) - -#define OFFSET_OF_AUTHINFO2_CERT_DATA ((OFFSET_OF (EFI_VARIABLE_AUTHENTICATION_2, AuthInfo)) + \ - (OFFSET_OF (WIN_CERTIFICATE_UEFI_GUID, CertData))) - -typedef struct { - CHAR16 *VariableName; - EFI_GUID *VendorGuid; - UINT32 Attributes; - UINTN DataSize; - VOID *Data; - UINT32 PubKeyIndex; - UINT64 MonotonicCount; - EFI_TIME *TimeStamp; -} AUTH_VARIABLE_INFO; - -/** - Finds variable in storage blocks of volatile and non-volatile storage areas. - - This code finds variable in storage blocks of volatile and non-volatile storage areas. - If VariableName is an empty string, then we just return the first - qualified variable without comparing VariableName and VendorGuid. - - @param[in] VariableName Name of the variable to be found. - @param[in] VendorGuid Variable vendor GUID to be found. - @param[out] AuthVariableInfo Pointer to AUTH_VARIABLE_INFO structure for - output of the variable found. - - @retval EFI_INVALID_PARAMETER If VariableName is not an empty string, - while VendorGuid is NULL. - @retval EFI_SUCCESS Variable successfully found. - @retval EFI_NOT_FOUND Variable not found - -**/ -typedef -EFI_STATUS -(EFIAPI *AUTH_VAR_LIB_FIND_VARIABLE) ( - IN CHAR16 *VariableName, - IN EFI_GUID *VendorGuid, - OUT AUTH_VARIABLE_INFO *AuthVariableInfo - ); - -/** - Finds next variable in storage blocks of volatile and non-volatile storage areas. - - This code finds next variable in storage blocks of volatile and non-volatile storage areas. - If VariableName is an empty string, then we just return the first - qualified variable without comparing VariableName and VendorGuid. - - @param[in] VariableName Name of the variable to be found. - @param[in] VendorGuid Variable vendor GUID to be found. - @param[out] AuthVariableInfo Pointer to AUTH_VARIABLE_INFO structure for - output of the next variable. - - @retval EFI_INVALID_PARAMETER If VariableName is not an empty string, - while VendorGuid is NULL. - @retval EFI_SUCCESS Variable successfully found. - @retval EFI_NOT_FOUND Variable not found - -**/ -typedef -EFI_STATUS -(EFIAPI *AUTH_VAR_LIB_FIND_NEXT_VARIABLE) ( - IN CHAR16 *VariableName, - IN EFI_GUID *VendorGuid, - OUT AUTH_VARIABLE_INFO *AuthVariableInfo - ); - -/** - Update the variable region with Variable information. - - @param[in] AuthVariableInfo Pointer AUTH_VARIABLE_INFO structure for - input of the variable. - - @retval EFI_SUCCESS The update operation is success. - @retval EFI_INVALID_PARAMETER Invalid parameter. - @retval EFI_WRITE_PROTECTED Variable is write-protected. - @retval EFI_OUT_OF_RESOURCES There is not enough resource. - -**/ -typedef -EFI_STATUS -(EFIAPI *AUTH_VAR_LIB_UPDATE_VARIABLE) ( - IN AUTH_VARIABLE_INFO *AuthVariableInfo - ); - -/** - Get scratch buffer. - - @param[in, out] ScratchBufferSize Scratch buffer size. If input size is greater than - the maximum supported buffer size, this value contains - the maximum supported buffer size as output. - @param[out] ScratchBuffer Pointer to scratch buffer address. - - @retval EFI_SUCCESS Get scratch buffer successfully. - @retval EFI_UNSUPPORTED If input size is greater than the maximum supported buffer size. - -**/ -typedef -EFI_STATUS -(EFIAPI *AUTH_VAR_LIB_GET_SCRATCH_BUFFER) ( - IN OUT UINTN *ScratchBufferSize, - OUT VOID **ScratchBuffer - ); - -/** - This function is to check if the remaining variable space is enough to set - all Variables from argument list successfully. The purpose of the check - is to keep the consistency of the Variables to be in variable storage. - - Note: Variables are assumed to be in same storage. - The set sequence of Variables will be same with the sequence of VariableEntry from argument list, - so follow the argument sequence to check the Variables. - - @param[in] Attributes Variable attributes for Variable entries. - @param ... The variable argument list with type VARIABLE_ENTRY_CONSISTENCY *. - A NULL terminates the list. The VariableSize of - VARIABLE_ENTRY_CONSISTENCY is the variable data size as input. - It will be changed to variable total size as output. - - @retval TRUE Have enough variable space to set the Variables successfully. - @retval FALSE No enough variable space to set the Variables successfully. - -**/ -typedef -BOOLEAN -(EFIAPI *AUTH_VAR_LIB_CHECK_REMAINING_SPACE) ( - IN UINT32 Attributes, - ... - ); - -/** - Return TRUE if at OS runtime. - - @retval TRUE If at OS runtime. - @retval FALSE If at boot time. - -**/ -typedef -BOOLEAN -(EFIAPI *AUTH_VAR_LIB_AT_RUNTIME) ( - VOID - ); - -#define AUTH_VAR_LIB_CONTEXT_IN_STRUCT_VERSION 0x01 - -typedef struct { - UINTN StructVersion; - UINTN StructSize; - // - // Reflect the overhead associated with the saving - // of a single EFI authenticated variable with the exception - // of the overhead associated with the length - // of the string name of the EFI variable. - // - UINTN MaxAuthVariableSize; - AUTH_VAR_LIB_FIND_VARIABLE FindVariable; - AUTH_VAR_LIB_FIND_NEXT_VARIABLE FindNextVariable; - AUTH_VAR_LIB_UPDATE_VARIABLE UpdateVariable; - AUTH_VAR_LIB_GET_SCRATCH_BUFFER GetScratchBuffer; - AUTH_VAR_LIB_CHECK_REMAINING_SPACE CheckRemainingSpaceForConsistency; - AUTH_VAR_LIB_AT_RUNTIME AtRuntime; -} AUTH_VAR_LIB_CONTEXT_IN; - -#define AUTH_VAR_LIB_CONTEXT_OUT_STRUCT_VERSION 0x01 - -typedef struct { - UINTN StructVersion; - UINTN StructSize; - // - // Caller needs to set variable property for the variables. - // - VARIABLE_ENTRY_PROPERTY *AuthVarEntry; - UINTN AuthVarEntryCount; - // - // Caller needs to ConvertPointer() for the pointers. - // - VOID ***AddressPointer; - UINTN AddressPointerCount; -} AUTH_VAR_LIB_CONTEXT_OUT; - -/** - Initialization for authenticated varibale services. - If this initialization returns error status, other APIs will not work - and expect to be not called then. - - @param[in] AuthVarLibContextIn Pointer to input auth variable lib context. - @param[out] AuthVarLibContextOut Pointer to output auth variable lib context. - - @retval EFI_SUCCESS Function successfully executed. - @retval EFI_INVALID_PARAMETER If AuthVarLibContextIn == NULL or AuthVarLibContextOut == NULL. - @retval EFI_OUT_OF_RESOURCES Fail to allocate enough resource. - @retval EFI_UNSUPPORTED Unsupported to process authenticated variable. - -**/ -EFI_STATUS -EFIAPI -AuthVariableLibInitialize ( - IN AUTH_VAR_LIB_CONTEXT_IN *AuthVarLibContextIn, - OUT AUTH_VAR_LIB_CONTEXT_OUT *AuthVarLibContextOut - ); - -/** - Process variable with EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS/EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS set. - - @param[in] VariableName Name of the variable. - @param[in] VendorGuid Variable vendor GUID. - @param[in] Data Data pointer. - @param[in] DataSize Size of Data. - @param[in] Attributes Attribute value of the variable. - - @retval EFI_SUCCESS The firmware has successfully stored the variable and its data as - defined by the Attributes. - @retval EFI_INVALID_PARAMETER Invalid parameter. - @retval EFI_WRITE_PROTECTED Variable is write-protected. - @retval EFI_OUT_OF_RESOURCES There is not enough resource. - @retval EFI_SECURITY_VIOLATION The variable is with EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS - or EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACESS - set, but the AuthInfo does NOT pass the validation - check carried out by the firmware. - @retval EFI_UNSUPPORTED Unsupported to process authenticated variable. - -**/ -EFI_STATUS -EFIAPI -AuthVariableLibProcessVariable ( - IN CHAR16 *VariableName, - IN EFI_GUID *VendorGuid, - IN VOID *Data, - IN UINTN DataSize, - IN UINT32 Attributes - ); - -#endif diff --git a/MdeModulePkg/Include/Library/CapsuleLib.h b/MdeModulePkg/Include/Library/CapsuleLib.h deleted file mode 100644 index 487cb0f311..0000000000 --- a/MdeModulePkg/Include/Library/CapsuleLib.h +++ /dev/null @@ -1,50 +0,0 @@ -/** @file - - This library class defines a set of interfaces for how to process capsule image updates. - -Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.
-This program and the accompanying materials are licensed and made available under -the terms and conditions of the BSD License that 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 __CAPSULE_LIB_H__ -#define __CAPSULE_LIB_H__ - -/** - The firmware checks whether the capsule image is supported - by the CapsuleGuid in CapsuleHeader or if there is other specific information in - the capsule image. - - @param CapsuleHeader Pointer to the UEFI capsule image to be checked. - - @retval EFI_SUCESS Input capsule is supported by firmware. - @retval EFI_UNSUPPORTED Input capsule is not supported by the firmware. -**/ -EFI_STATUS -EFIAPI -SupportCapsuleImage ( - IN EFI_CAPSULE_HEADER *CapsuleHeader - ); - -/** - The firmware-specific implementation processes the capsule image - if it recognized the format of this capsule image. - - @param CapsuleHeader Pointer to the UEFI capsule image to be processed. - - @retval EFI_SUCESS Capsule Image processed successfully. - @retval EFI_UNSUPPORTED Capsule image is not supported by the firmware. -**/ -EFI_STATUS -EFIAPI -ProcessCapsuleImage ( - IN EFI_CAPSULE_HEADER *CapsuleHeader - ); - -#endif diff --git a/MdeModulePkg/Include/Library/CpuExceptionHandlerLib.h b/MdeModulePkg/Include/Library/CpuExceptionHandlerLib.h deleted file mode 100644 index b3016eee5d..0000000000 --- a/MdeModulePkg/Include/Library/CpuExceptionHandlerLib.h +++ /dev/null @@ -1,96 +0,0 @@ -/** @file - CPU Exception library provides the default CPU interrupt/exception handler. - It also provides capability to register user interrupt/exception handler. - - Copyright (c) 2012 - 2013, Intel Corporation. All rights reserved.
- 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 __CPU_EXCEPTION_HANDLER_LIB_H__ -#define __CPU_EXCEPTION_HANDLER_LIB_H__ - -#include -#include - -/** - Initializes all CPU exceptions entries and provides the default exception handlers. - - Caller should try to get an array of interrupt and/or exception vectors that are in use and need to - persist by EFI_VECTOR_HANDOFF_INFO defined in PI 1.3 specification. - If caller cannot get reserved vector list or it does not exists, set VectorInfo to NULL. - If VectorInfo is not NULL, the exception vectors will be initialized per vector attribute accordingly. - - @param[in] VectorInfo Pointer to reserved vector list. - - @retval EFI_SUCCESS CPU Exception Entries have been successfully initialized - with default exception handlers. - @retval EFI_INVALID_PARAMETER VectorInfo includes the invalid content if VectorInfo is not NULL. - @retval EFI_UNSUPPORTED This function is not supported. - -**/ -EFI_STATUS -EFIAPI -InitializeCpuExceptionHandlers ( - IN EFI_VECTOR_HANDOFF_INFO *VectorInfo OPTIONAL - ); - -/** - Initializes all CPU interrupt/exceptions entries and provides the default interrupt/exception handlers. - - Caller should try to get an array of interrupt and/or exception vectors that are in use and need to - persist by EFI_VECTOR_HANDOFF_INFO defined in PI 1.3 specification. - If caller cannot get reserved vector list or it does not exists, set VectorInfo to NULL. - If VectorInfo is not NULL, the exception vectors will be initialized per vector attribute accordingly. - - @param[in] VectorInfo Pointer to reserved vector list. - - @retval EFI_SUCCESS All CPU interrupt/exception entries have been successfully initialized - with default interrupt/exception handlers. - @retval EFI_INVALID_PARAMETER VectorInfo includes the invalid content if VectorInfo is not NULL. - @retval EFI_UNSUPPORTED This function is not supported. - -**/ -EFI_STATUS -EFIAPI -InitializeCpuInterruptHandlers ( - IN EFI_VECTOR_HANDOFF_INFO *VectorInfo OPTIONAL - ); - -/** - Registers a function to be called from the processor interrupt handler. - - This function registers and enables the handler specified by InterruptHandler for a processor - interrupt or exception type specified by InterruptType. If InterruptHandler is NULL, then the - handler for the processor interrupt or exception type specified by InterruptType is uninstalled. - The installed handler is called once for each processor interrupt or exception. - NOTE: This function should be invoked after InitializeCpuExceptionHandlers() or - InitializeCpuInterruptHandlers() invoked, otherwise EFI_UNSUPPORTED returned. - - @param[in] InterruptType Defines which interrupt or exception to hook. - @param[in] InterruptHandler A pointer to a function of type EFI_CPU_INTERRUPT_HANDLER that is called - when a processor interrupt occurs. If this parameter is NULL, then the handler - will be uninstalled. - - @retval EFI_SUCCESS The handler for the processor interrupt was successfully installed or uninstalled. - @retval EFI_ALREADY_STARTED InterruptHandler is not NULL, and a handler for InterruptType was - previously installed. - @retval EFI_INVALID_PARAMETER InterruptHandler is NULL, and a handler for InterruptType was not - previously installed. - @retval EFI_UNSUPPORTED The interrupt specified by InterruptType is not supported, - or this function is not supported. -**/ -EFI_STATUS -EFIAPI -RegisterCpuInterruptHandler ( - IN EFI_EXCEPTION_TYPE InterruptType, - IN EFI_CPU_INTERRUPT_HANDLER InterruptHandler - ); - -#endif diff --git a/MdeModulePkg/Include/Library/CustomizedDisplayLib.h b/MdeModulePkg/Include/Library/CustomizedDisplayLib.h deleted file mode 100644 index 31e1091e88..0000000000 --- a/MdeModulePkg/Include/Library/CustomizedDisplayLib.h +++ /dev/null @@ -1,356 +0,0 @@ -/** @file - This library class defines a set of interfaces to customize Display module - -Copyright (c) 2013, Intel Corporation. All rights reserved.
-This program and the accompanying materials are licensed and made available under -the terms and conditions of the BSD License that 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 __CUSTOMIZED_DISPLAY_LIB_H__ -#define __CUSTOMIZED_DISPLAY_LIB_H__ - -#include - -/** -+------------------------------------------------------------------------------+ -| Setup Page | -+------------------------------------------------------------------------------+ - -Statement -Statement -Statement - - - - - -+------------------------------------------------------------------------------+ -| F9=Reset to Defaults F10=Save | -| ^"=Move Highlight Toggles Checkbox Esc=Exit | -+------------------------------------------------------------------------------+ - StatusBar -**/ - -/** - This funtion defines Page Frame and Backgroud. - - Based on the above layout, it will be responsible for HeaderHeight, FooterHeight, - StatusBarHeight and Backgroud. And, it will reserve Screen for Statement. - - @param[in] FormData Form Data to be shown in Page. - @param[out] ScreenForStatement Screen to be used for Statement. (Prompt, Value and Help) - - @return Status -**/ -EFI_STATUS -EFIAPI -DisplayPageFrame ( - IN FORM_DISPLAY_ENGINE_FORM *FormData, - OUT EFI_SCREEN_DESCRIPTOR *ScreenForStatement - ); - -/** - Clear Screen to the initial state. -**/ -VOID -EFIAPI -ClearDisplayPage ( - VOID - ); - -/** - This function updates customized key panel's help information. - The library will prepare those Strings for the basic key, ESC, Enter, Up/Down/Left/Right, +/-. - and arrange them in Footer panel. - - @param[in] FormData Form Data to be shown in Page. FormData has the highlighted statement. - @param[in] Statement The statement current selected. - @param[in] Selected Whether or not a tag be selected. TRUE means Enter has hit this question. -**/ -VOID -EFIAPI -RefreshKeyHelp ( - IN FORM_DISPLAY_ENGINE_FORM *FormData, - IN FORM_DISPLAY_ENGINE_STATEMENT *Statement, - IN BOOLEAN Selected - ); - -/** - Update status bar. - - This function updates the status bar on the bottom of menu screen. It just shows StatusBar. - Original logic in this function should be splitted out. - - @param[in] MessageType The type of message to be shown. InputError or Configuration Changed. - @param[in] State Show or Clear Message. -**/ -VOID -EFIAPI -UpdateStatusBar ( - IN UINTN MessageType, - IN BOOLEAN State - ); - -/** - Create popup window. - - This function draws OEM/Vendor specific pop up windows. - - @param[out] Key User Input Key - @param ... String to be shown in Popup. The variable argument list is terminated by a NULL. - -**/ -VOID -EFIAPI -CreateDialog ( - OUT EFI_INPUT_KEY *Key, OPTIONAL - ... - ); - -/** - Confirm how to handle the changed data. - - @return Action BROWSER_ACTION_SUBMIT, BROWSER_ACTION_DISCARD or other values. -**/ -UINTN -EFIAPI -ConfirmDataChange ( - VOID - ); - -/** - OEM specifies whether Setup exits Page by ESC key. - - This function customized the behavior that whether Setup exits Page so that - system able to boot when configuration is not changed. - - @retval TRUE Exits FrontPage - @retval FALSE Don't exit FrontPage. -**/ -BOOLEAN -EFIAPI -FormExitPolicy ( - VOID - ); - -/** - Set Timeout value for a ceratain Form to get user response. - - This function allows to set timeout value on a ceratain form if necessary. - If timeout is not zero, the form will exit if user has no response in timeout. - - @param[in] FormData Form Data to be shown in Page - - @return 0 No timeout for this form. - @return > 0 Timeout value in 100 ns units. -**/ -UINT64 -EFIAPI -FormExitTimeout ( - IN FORM_DISPLAY_ENGINE_FORM *FormData - ); - -// -// Print Functions -// -/** - Prints a unicode string to the default console, at - the supplied cursor position, using L"%s" format. - - @param Column The cursor position to print the string at. When it is -1, use current Position. - @param Row The cursor position to print the string at. When it is -1, use current Position. - @param String String pointer. - - @return Length of string printed to the console - -**/ -UINTN -EFIAPI -PrintStringAt ( - IN UINTN Column, - IN UINTN Row, - IN CHAR16 *String - ); - - -/** - Prints a unicode string with the specified width to the default console, at - the supplied cursor position, using L"%s" format. - - @param Column The cursor position to print the string at. When it is -1, use current Position. - @param Row The cursor position to print the string at. When it is -1, use current Position. - @param String String pointer. - @param Width Width for String to be printed. If the print length of String < Width, - Space char (L' ') will be used to append String. - - @return Length of string printed to the console - -**/ -UINTN -EFIAPI -PrintStringAtWithWidth ( - IN UINTN Column, - IN UINTN Row, - IN CHAR16 *String, - IN UINTN Width - ); - -/** - Prints a chracter to the default console, at - the supplied cursor position, using L"%c" format. - - @param Column The cursor position to print the string at. When it is -1, use current Position. - @param Row The cursor position to print the string at. When it is -1, use current Position. - @param Character Character to print. - - @return Length of string printed to the console. - -**/ -UINTN -EFIAPI -PrintCharAt ( - IN UINTN Column, - IN UINTN Row, - CHAR16 Character - ); - -/** - Clear retangle with specified text attribute. - - @param LeftColumn Left column of retangle. - @param RightColumn Right column of retangle. - @param TopRow Start row of retangle. - @param BottomRow End row of retangle. - @param TextAttribute The character foreground and background. - -**/ -VOID -EFIAPI -ClearLines ( - IN UINTN LeftColumn, - IN UINTN RightColumn, - IN UINTN TopRow, - IN UINTN BottomRow, - IN UINTN TextAttribute - ); - -// -// Color Setting Functions -// -/** - Get OEM/Vendor specific popup attribute colors. - - @retval Byte code color setting for popup color. -**/ -UINT8 -EFIAPI -GetPopupColor ( - VOID - ); - -/** - Get OEM/Vendor specific popup attribute colors. - - @retval Byte code color setting for popup inverse color. -**/ -UINT8 -EFIAPI -GetPopupInverseColor ( - VOID - ); - -/** - Get OEM/Vendor specific PickList color attribute. - - @retval Byte code color setting for pick list color. -**/ -UINT8 -EFIAPI -GetPickListColor ( - VOID - ); - -/** - Get OEM/Vendor specific arrow color attribute. - - @retval Byte code color setting for arrow color. -**/ -UINT8 -EFIAPI -GetArrowColor ( - VOID - ); - -/** - Get OEM/Vendor specific info text color attribute. - - @retval Byte code color setting for info text color. -**/ -UINT8 -EFIAPI -GetInfoTextColor ( - VOID - ); - -/** - Get OEM/Vendor specific help text color attribute. - - @retval Byte code color setting for help text color. -**/ -UINT8 -EFIAPI -GetHelpTextColor ( - VOID - ); - -/** - Get OEM/Vendor specific grayed out text color attribute. - - @retval Byte code color setting for grayed out text color. -**/ -UINT8 -EFIAPI -GetGrayedTextColor ( - VOID - ); - -/** - Get OEM/Vendor specific highlighted text color attribute. - - @retval Byte code color setting for highlight text color. -**/ -UINT8 -EFIAPI -GetHighlightTextColor ( - VOID - ); - -/** - Get OEM/Vendor specific field text color attribute. - - @retval Byte code color setting for field text color. -**/ -UINT8 -EFIAPI -GetFieldTextColor ( - VOID - ); - -/** - Get OEM/Vendor specific subtitle text color attribute. - - @retval Byte code color setting for subtitle text color. -**/ -UINT8 -EFIAPI -GetSubTitleTextColor ( - VOID - ); - -#endif diff --git a/MdeModulePkg/Include/Library/DebugAgentLib.h b/MdeModulePkg/Include/Library/DebugAgentLib.h deleted file mode 100644 index 01b06a73fb..0000000000 --- a/MdeModulePkg/Include/Library/DebugAgentLib.h +++ /dev/null @@ -1,103 +0,0 @@ -/** @file - Debug Agent Library provide source-level debug capability. - -Copyright (c) 2010 - 2012, Intel Corporation. All rights reserved.
-This program and the accompanying materials are licensed and made available under -the terms and conditions of the BSD License that 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 __DEBUG_AGENT_LIB_H__ -#define __DEBUG_AGENT_LIB_H__ - -#define DEBUG_AGENT_INIT_PREMEM_SEC 1 -#define DEBUG_AGENT_INIT_POSTMEM_SEC 2 -#define DEBUG_AGENT_INIT_DXE_CORE 3 -#define DEBUG_AGENT_INIT_SMM 4 -#define DEBUG_AGENT_INIT_ENTER_SMI 5 -#define DEBUG_AGENT_INIT_EXIT_SMI 6 -#define DEBUG_AGENT_INIT_S3 7 -#define DEBUG_AGENT_INIT_DXE_AP 8 -#define DEBUG_AGENT_INIT_PEI 9 -#define DEBUG_AGENT_INIT_DXE_LOAD 10 -#define DEBUG_AGENT_INIT_DXE_UNLOAD 11 -#define DEBUG_AGENT_INIT_THUNK_PEI_IA32TOX64 12 - -// -// Context for DEBUG_AGENT_INIT_POSTMEM_SEC -// -typedef struct { - UINTN HeapMigrateOffset; - UINTN StackMigrateOffset; -} DEBUG_AGENT_CONTEXT_POSTMEM_SEC; - -/** - Caller provided function to be invoked at the end of InitializeDebugAgent(). - - Refer to the descrption for InitializeDebugAgent() for more details. - - @param[in] Context The first input parameter of InitializeDebugAgent(). - -**/ -typedef -VOID -(EFIAPI * DEBUG_AGENT_CONTINUE)( - IN VOID *Context - ); - - -/** - Initialize debug agent. - - This function is used to set up debug environment to support source level debugging. - If certain Debug Agent Library instance has to save some private data in the stack, - this function must work on the mode that doesn't return to the caller, then - the caller needs to wrap up all rest of logic after InitializeDebugAgent() into one - function and pass it into InitializeDebugAgent(). InitializeDebugAgent() is - responsible to invoke the passing-in function at the end of InitializeDebugAgent(). - - If the parameter Function is not NULL, Debug Agent Libary instance will invoke it by - passing in the Context to be its parameter. - - If Function() is NULL, Debug Agent Library instance will return after setup debug - environment. - - @param[in] InitFlag Init flag is used to decide the initialize process. - @param[in] Context Context needed according to InitFlag; it was optional. - @param[in] Function Continue function called by debug agent library; it was - optional. - -**/ -VOID -EFIAPI -InitializeDebugAgent ( - IN UINT32 InitFlag, - IN VOID *Context, OPTIONAL - IN DEBUG_AGENT_CONTINUE Function OPTIONAL - ); - -/** - Enable/Disable the interrupt of debug timer and return the interrupt state - prior to the operation. - - If EnableStatus is TRUE, enable the interrupt of debug timer. - If EnableStatus is FALSE, disable the interrupt of debug timer. - - @param[in] EnableStatus Enable/Disable. - - @retval TRUE Debug timer interrupt were enabled on entry to this call. - @retval FALSE Debug timer interrupt were disabled on entry to this call. - -**/ -BOOLEAN -EFIAPI -SaveAndSetDebugTimerInterrupt ( - IN BOOLEAN EnableStatus - ); - -#endif diff --git a/MdeModulePkg/Include/Library/DpcLib.h b/MdeModulePkg/Include/Library/DpcLib.h deleted file mode 100644 index c392e3e3d7..0000000000 --- a/MdeModulePkg/Include/Library/DpcLib.h +++ /dev/null @@ -1,59 +0,0 @@ -/** @file - DpcLib.h. - -Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.
-This program and the accompanying materials are licensed and made available under -the terms and conditions of the BSD License that 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 _DPC_LIB_H_ -#define _DPC_LIB_H_ - -#include - -/** - Add a Deferred Procedure Call to the end of the DPC queue. - - @param[in] DpcTpl The EFI_TPL that the DPC should invoke. - @param[in] DpcProcedure The pointer to the DPC's function. - @param[in] DpcContext The pointer to the DPC's context. Passed to DpcProcedure - when DpcProcedure is invoked. - - @retval EFI_SUCCESS The DPC was queued. - @retval EFI_INVALID_PARAMETER DpcTpl is not a valid EFI_TPL. - @retval EFI_INVALID_PARAMETER DpcProcedure is NULL. - @retval EFI_OUT_OF_RESOURCES There are not enough resources available to - add the DPC to the queue. - -**/ -EFI_STATUS -EFIAPI -QueueDpc ( - IN EFI_TPL DpcTpl, - IN EFI_DPC_PROCEDURE DpcProcedure, - IN VOID *DpcContext OPTIONAL - ); - -/** - Dispatch the queue of DPCs. All DPCs that have been queued with a DpcTpl - value greater than or equal to the current TPL are invoked in the order that - they were queued. DPCs with higher DpcTpl values are invoked before DPCs with - lower DpcTpl values. - - @retval EFI_SUCCESS One or more DPCs were invoked. - @retval EFI_NOT_FOUND No DPCs were invoked. - -**/ -EFI_STATUS -EFIAPI -DispatchDpc ( - VOID - ); - -#endif diff --git a/MdeModulePkg/Include/Library/HiiLib.h b/MdeModulePkg/Include/Library/HiiLib.h deleted file mode 100644 index 0e323df221..0000000000 --- a/MdeModulePkg/Include/Library/HiiLib.h +++ /dev/null @@ -1,1096 +0,0 @@ -/** @file - Public include file for the HII Library - -Copyright (c) 2007 - 2013, Intel Corporation. All rights reserved.
-This program and the accompanying materials are licensed and made available under -the terms and conditions of the BSD License that 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 __HII_LIB_H__ -#define __HII_LIB_H__ - -//////////////////////////////////////////////////////// -//////////////////////////////////////////////////////// -// HiiLib Functions -//////////////////////////////////////////////////////// -//////////////////////////////////////////////////////// - -/** - Registers a list of packages in the HII Database and returns the HII Handle - associated with that registration. If an HII Handle has already been registered - with the same PackageListGuid and DeviceHandle, then NULL is returned. If there - are not enough resources to perform the registration, then NULL is returned. - If an empty list of packages is passed in, then NULL is returned. If the size of - the list of package is 0, then NULL is returned. - - The variable arguments are pointers that point to package headers defined - by UEFI VFR compiler and StringGather tool. - - #pragma pack (push, 1) - typedef struct { - UINT32 BinaryLength; - EFI_HII_PACKAGE_HEADER PackageHeader; - } EDKII_AUTOGEN_PACKAGES_HEADER; - #pragma pack (pop) - - @param[in] PackageListGuid The GUID of the package list. - @param[in] DeviceHandle If not NULL, the Device Handle on which - an instance of DEVICE_PATH_PROTOCOL is installed. - This Device Handle uniquely defines the device that - the added packages are associated with. - @param[in] ... The variable argument list that contains pointers - to packages terminated by a NULL. - - @retval NULL An HII Handle has already been registered in the HII Database with - the same PackageListGuid and DeviceHandle. - @retval NULL The HII Handle could not be created. - @retval NULL An empty list of packages was passed in. - @retval NULL All packages are empty. - @retval Other The HII Handle associated with the newly registered package list. - -**/ -EFI_HII_HANDLE -EFIAPI -HiiAddPackages ( - IN CONST EFI_GUID *PackageListGuid, - IN EFI_HANDLE DeviceHandle OPTIONAL, - ... - ) -; - -/** - Removes a package list from the HII database. - - If HiiHandle is NULL, then ASSERT(). - If HiiHandle is not a valid EFI_HII_HANDLE in the HII database, then ASSERT(). - - @param[in] HiiHandle The handle that was previously registered in the HII database - -**/ -VOID -EFIAPI -HiiRemovePackages ( - IN EFI_HII_HANDLE HiiHandle - ) -; - -/** - This function creates a new string in String Package or updates an existing - string in a String Package. If StringId is 0, then a new string is added to - a String Package. If StringId is not zero, then a string in String Package is - updated. If SupportedLanguages is NULL, then the string is added or updated - for all the languages that the String Package supports. If SupportedLanguages - is not NULL, then the string is added or updated for the set of languages - specified by SupportedLanguages. - - If HiiHandle is NULL, then ASSERT(). - If String is NULL, then ASSERT(). - - @param[in] HiiHandle A handle that was previously registered in the - HII Database. - @param[in] StringId If zero, then a new string is created in the - String Package associated with HiiHandle. If - non-zero, then the string specified by StringId - is updated in the String Package associated - with HiiHandle. - @param[in] String A pointer to the Null-terminated Unicode string - to add or update in the String Package associated - with HiiHandle. - @param[in] SupportedLanguages A pointer to a Null-terminated ASCII string of - language codes. If this parameter is NULL, then - String is added or updated in the String Package - associated with HiiHandle for all the languages - that the String Package supports. If this - parameter is not NULL, then String is added - or updated in the String Package associated with - HiiHandle for the set of languages specified by - SupportedLanguages. The format of - SupportedLanguages must follow the language - format assumed in the HII Database. - - @retval 0 The string could not be added or updated in the String Package. - @retval Other The EFI_STRING_ID of the newly added or updated string. - -**/ -EFI_STRING_ID -EFIAPI -HiiSetString ( - IN EFI_HII_HANDLE HiiHandle, - IN EFI_STRING_ID StringId, OPTIONAL - IN CONST EFI_STRING String, - IN CONST CHAR8 *SupportedLanguages OPTIONAL - ) -; - -/** - Retrieves a string from a string package in a specific language. If the language - is not specified, then a string from a string package in the current platform - language is retrieved. If the string cannot be retrieved using the specified - language or the current platform language, then the string is retrieved from - the string package in the first language the string package supports. The - returned string is allocated using AllocatePool(). The caller is responsible - for freeing the allocated buffer using FreePool(). - - If HiiHandle is NULL, then ASSERT(). - If StringId is 0, then ASSERT(). - - @param[in] HiiHandle A handle that was previously registered in the HII Database. - @param[in] StringId The identifier of the string to retrieved from the string - package associated with HiiHandle. - @param[in] Language The language of the string to retrieve. If this parameter - is NULL, then the current platform language is used. The - format of Language must follow the language format assumed in - the HII Database. - - @retval NULL The string specified by StringId is not present in the string package. - @retval Other The string was returned. - -**/ -EFI_STRING -EFIAPI -HiiGetString ( - IN EFI_HII_HANDLE HiiHandle, - IN EFI_STRING_ID StringId, - IN CONST CHAR8 *Language OPTIONAL - ) -; - -/** - Retrieves a string from a string package named by GUID, in the specified language. - If the language is not specified, then a string from a string package in the - current platform language is retrieved. If the string cannot be retrieved - using the specified language or the current platform language, then the string - is retrieved from the string package in the first language the string package - supports. The returned string is allocated using AllocatePool(). The caller - is responsible for freeing the allocated buffer using FreePool(). - - If PackageListGuid is NULL, then ASSERT(). - If StringId is 0, then ASSERT(). - - @param[in] PackageListGuid The GUID of a package list that was previously - registered in the HII Database. - @param[in] StringId The identifier of the string to retrieved from the - string package associated with PackageListGuid. - @param[in] Language The language of the string to retrieve. If this - parameter is NULL, then the current platform - language is used. The format of Language must - follow the language format assumed in the HII Database. - - @retval NULL The package list specified by PackageListGuid is not present in the - HII Database. - @retval NULL The string specified by StringId is not present in the string package. - @retval Other The string was returned. - -**/ -EFI_STRING -EFIAPI -HiiGetPackageString ( - IN CONST EFI_GUID *PackageListGuid, - IN EFI_STRING_ID StringId, - IN CONST CHAR8 *Language OPTIONAL - ) -; - -/** - Retrieves the array of all the HII Handles or the HII handles of a specific - package list GUID in the HII Database. - This array is terminated with a NULL HII Handle. - This function allocates the returned array using AllocatePool(). - The caller is responsible for freeing the array with FreePool(). - - @param[in] PackageListGuid An optional parameter that is used to request - HII Handles associated with a specific - Package List GUID. If this parameter is NULL, - then all the HII Handles in the HII Database - are returned. If this parameter is not NULL, - then zero or more HII Handles associated with - PackageListGuid are returned. - - @retval NULL No HII handles were found in the HII database - @retval NULL The array of HII Handles could not be retrieved - @retval Other A pointer to the NULL terminated array of HII Handles - -**/ -EFI_HII_HANDLE * -EFIAPI -HiiGetHiiHandles ( - IN CONST EFI_GUID *PackageListGuid OPTIONAL - ) -; - -/** - Retrieves a pointer to a Null-terminated ASCII string containing the list - of languages that an HII handle in the HII Database supports. The returned - string is allocated using AllocatePool(). The caller is responsible for freeing - the returned string using FreePool(). The format of the returned string follows - the language format assumed in the HII Database. - - If HiiHandle is NULL, then ASSERT(). - - @param[in] HiiHandle A handle that was previously registered in the HII Database. - - @retval NULL HiiHandle is not registered in the HII database - @retval NULL There are not enough resources available to retrieve the suported - languages. - @retval NULL The list of suported languages could not be retrieved. - @retval Other A pointer to the Null-terminated ASCII string of supported languages. - -**/ -CHAR8 * -EFIAPI -HiiGetSupportedLanguages ( - IN EFI_HII_HANDLE HiiHandle - ) -; - -/** - Allocates and returns a Null-terminated Unicode string using routing - information that includes a GUID, an optional Unicode string name, and a device - path. The string returned is allocated with AllocatePool(). The caller is - responsible for freeing the allocated string with FreePool(). - - The format of a is as follows: - - GUID=32&NAME=NameLength&PATH=DevicePathSize - - @param[in] Guid The pointer to an EFI_GUID that is the routing information - GUID. Each of the 16 bytes in Guid is converted to - a 2 Unicode character hexidecimal string. This is - an optional parameter that may be NULL. - @param[in] Name The pointer to a Null-terminated Unicode string that is - the routing information NAME. This is an optional - parameter that may be NULL. Each 16-bit Unicode - character in Name is converted to a 4 character Unicode - hexidecimal string. - @param[in] DriverHandle The driver handle that supports a Device Path Protocol - that is the routing information PATH. Each byte of - the Device Path associated with DriverHandle is converted - to a two (Unicode) character hexidecimal string. - - @retval NULL DriverHandle does not support the Device Path Protocol. - @retval NULL DriverHandle does not support the Device Path Protocol. - @retval Other A pointer to the Null-terminate Unicode string - -**/ -EFI_STRING -EFIAPI -HiiConstructConfigHdr ( - IN CONST EFI_GUID *Guid, OPTIONAL - IN CONST CHAR16 *Name, OPTIONAL - IN EFI_HANDLE DriverHandle - ); - -/** - Reset the default value specified by DefaultId to the driver - configuration specified by the Request string. - - NULL request string support depends on the ExportConfig interface of - HiiConfigRouting protocol in UEFI specification. - - @param Request A null-terminated Unicode string in - format. It can be NULL. - If it is NULL, all configurations for the - entirety of the current HII database will be reset. - @param DefaultId Specifies the type of defaults to retrieve. - - @retval TURE The default value was set successfully. - @retval FALSE The default value was not found. -**/ -BOOLEAN -EFIAPI -HiiSetToDefaults ( - IN CONST EFI_STRING Request, OPTIONAL - IN UINT16 DefaultId - ); - -/** - Validate the current configuration by parsing the IFR opcode in HII form. - - NULL request string support depends on the ExportConfig interface of - HiiConfigRouting protocol in the UEFI specification. - - @param Request A null-terminated Unicode string in - format. It can be NULL. - If it is NULL, all current configurations for the - entirety of the current HII database will be validated. - - @retval TRUE The current configuration is valid. - @retval FALSE The current configuration is invalid. -**/ -BOOLEAN -EFIAPI -HiiValidateSettings ( - IN CONST EFI_STRING Request OPTIONAL - ); - -/** - Determines if the routing data specified by GUID and NAME match a . - - If ConfigHdr is NULL, then ASSERT(). - - @param[in] ConfigHdr Either or . - @param[in] Guid The GUID of the storage. - @param[in] Name The NAME of the storage. - - @retval TRUE Routing information matches . - @retval FALSE Routing information does not match . - -**/ -BOOLEAN -EFIAPI -HiiIsConfigHdrMatch ( - IN CONST EFI_STRING ConfigHdr, - IN CONST EFI_GUID *Guid, OPTIONAL - IN CONST CHAR16 *Name OPTIONAL - ); - -/** - Retrieves uncommitted data from the Form Browser and converts it to a binary - buffer. - - @param[in] VariableGuid The pointer to an EFI_GUID structure. This is an optional - parameter that may be NULL. - @param[in] VariableName The pointer to a Null-terminated Unicode string. This - is an optional parameter that may be NULL. - @param[in] BufferSize The length in bytes of buffer to hold retrieved data. - @param[out] Buffer The buffer of data to be updated. - - @retval FALSE The uncommitted data could not be retrieved. - @retval TRUE The uncommitted data was retrieved. - -**/ -BOOLEAN -EFIAPI -HiiGetBrowserData ( - IN CONST EFI_GUID *VariableGuid, OPTIONAL - IN CONST CHAR16 *VariableName, OPTIONAL - IN UINTN BufferSize, - OUT UINT8 *Buffer - ); - -/** - Updates uncommitted data in the Form Browser. - - If Buffer is NULL, then ASSERT(). - - @param[in] VariableGuid The pointer to an EFI_GUID structure. This is an optional - parameter that may be NULL. - @param[in] VariableName The pointer to a Null-terminated Unicode string. This - is an optional parameter that may be NULL. - @param[in] BufferSize The length, in bytes, of Buffer. - @param[in] Buffer The buffer of data to commit. - @param[in] RequestElement An optional field to specify which part of the - buffer data will be send back to Browser. If NULL, - the whole buffer of data will be committed to - Browser. - ::= &OFFSET=&WIDTH=* - - @retval FALSE The uncommitted data could not be updated. - @retval TRUE The uncommitted data was updated. - -**/ -BOOLEAN -EFIAPI -HiiSetBrowserData ( - IN CONST EFI_GUID *VariableGuid, OPTIONAL - IN CONST CHAR16 *VariableName, OPTIONAL - IN UINTN BufferSize, - IN CONST UINT8 *Buffer, - IN CONST CHAR16 *RequestElement OPTIONAL - ); - -///////////////////////////////////////// -///////////////////////////////////////// -/// IFR Functions -///////////////////////////////////////// -///////////////////////////////////////// - -/** - Returns a UINT64 value that contains bitfields for Hour, Minute, and Second. - The lower 8-bits of Hour are placed in bits 0..7. The lower 8-bits of Minute - are placed in bits 8..15, and the lower 8-bits of Second are placed in bits - 16..23. This format was selected because it can be easily translated to - an EFI_HII_TIME structure in an EFI_IFR_TYPE_VALUE union. - - @param Hour The hour value to be encoded. - @param Minute The minute value to be encoded. - @param Second The second value to be encoded. - - @return A 64-bit containing Hour, Minute, and Second. -**/ -#define EFI_HII_TIME_UINT64(Hour, Minute, Second) \ - (UINT64)((Hour & 0xff) | ((Minute & 0xff) << 8) | ((Second & 0xff) << 16)) - -/** - Returns a UINT64 value that contains bit fields for Year, Month, and Day. - The lower 16-bits of Year are placed in bits 0..15. The lower 8-bits of Month - are placed in bits 16..23, and the lower 8-bits of Day are placed in bits - 24..31. This format was selected because it can be easily translated to - an EFI_HII_DATE structure in an EFI_IFR_TYPE_VALUE union. - - @param Year The year value to be encoded. - @param Month The month value to be encoded. - @param Day The day value to be encoded. - - @return A 64-bit containing Year, Month, and Day. -**/ -#define EFI_HII_DATE_UINT64(Year, Month, Day) \ - (UINT64)((Year & 0xffff) | ((Month & 0xff) << 16) | ((Day & 0xff) << 24)) - -/** - Allocates and returns a new OpCode Handle. OpCode Handles must be freed with - HiiFreeOpCodeHandle(). - - @retval NULL There are not enough resources to allocate a new OpCode Handle. - @retval Other A new OpCode handle. - -**/ -VOID * -EFIAPI -HiiAllocateOpCodeHandle ( - VOID - ); - -/** - Frees an OpCode Handle that was previously allocated with HiiAllocateOpCodeHandle(). - When an OpCode Handle is freed, all of the opcodes associated with the OpCode - Handle are also freed. - - If OpCodeHandle is NULL, then ASSERT(). - - @param[in] OpCodeHandle The handle to the buffer of opcodes. - -**/ -VOID -EFIAPI -HiiFreeOpCodeHandle ( - VOID *OpCodeHandle - ); - -/** - Append raw opcodes to an OpCodeHandle. - - If OpCodeHandle is NULL, then ASSERT(). - If RawBuffer is NULL, then ASSERT(); - - @param[in] OpCodeHandle The handle to the buffer of opcodes. - @param[in] RawBuffer The buffer of opcodes to append. - @param[in] RawBufferSize The size, in bytes, of Buffer. - - @retval NULL There is not enough space left in Buffer to add the opcode. - @retval Other A pointer to the appended opcodes. - -**/ -UINT8 * -EFIAPI -HiiCreateRawOpCodes ( - IN VOID *OpCodeHandle, - IN UINT8 *RawBuffer, - IN UINTN RawBufferSize - ); - -/** - Create EFI_IFR_END_OP opcode. - - If OpCodeHandle is NULL, then ASSERT(). - - @param[in] OpCodeHandle Handle to the buffer of opcodes. - - @retval NULL There is not enough space left in Buffer to add the opcode. - @retval Other A pointer to the created opcode. - -**/ -UINT8 * -EFIAPI -HiiCreateEndOpCode ( - IN VOID *OpCodeHandle - ); - -/** - Create EFI_IFR_ONE_OF_OPTION_OP opcode. - - If OpCodeHandle is NULL, then ASSERT(). - If Type is invalid, then ASSERT(). - If Flags is invalid, then ASSERT(). - - @param[in] OpCodeHandle The handle to the buffer of opcodes. - @param[in] StringId StringId for the option. - @param[in] Flags The flags for the option. - @param[in] Type The type for the option. - @param[in] Value The value for the option. - - @retval NULL There is not enough space left in Buffer to add the opcode. - @retval Other A pointer to the created opcode. - -**/ -UINT8 * -EFIAPI -HiiCreateOneOfOptionOpCode ( - IN VOID *OpCodeHandle, - IN UINT16 StringId, - IN UINT8 Flags, - IN UINT8 Type, - IN UINT64 Value - ); - -/** - Create EFI_IFR_DEFAULT_OP opcode. - - If OpCodeHandle is NULL, then ASSERT(). - If Type is invalid, then ASSERT(). - - @param[in] OpCodeHandle The handle to the buffer of opcodes. - @param[in] DefaultId The DefaultId for the default. - @param[in] Type The type for the default. - @param[in] Value The value for the default. - - @retval NULL There is not enough space left in Buffer to add the opcode. - @retval Other A pointer to the created opcode. - -**/ -UINT8 * -EFIAPI -HiiCreateDefaultOpCode ( - IN VOID *OpCodeHandle, - IN UINT16 DefaultId, - IN UINT8 Type, - IN UINT64 Value - ); - -/** - Create EFI_IFR_GUID opcode. - - If OpCodeHandle is NULL, then ASSERT(). - If Guid is NULL, then ASSERT(). - If OpCodeSize < sizeof (EFI_IFR_GUID), then ASSERT(). - - @param[in] OpCodeHandle The handle to the buffer of opcodes. - @param[in] Guid The pointer to EFI_GUID of this guided opcode. - @param[in] GuidOpCode The pointer to an EFI_IFR_GUID opcode. This is an - optional parameter that may be NULL. If this - parameter is NULL, then the GUID extension - region of the created opcode is filled with zeros. - If this parameter is not NULL, then the GUID - extension region of GuidData will be copied to - the GUID extension region of the created opcode. - @param[in] OpCodeSize The size, in bytes, of created opcode. This value - must be >= sizeof(EFI_IFR_GUID). - - @retval NULL There is not enough space left in Buffer to add the opcode. - @retval Other A pointer to the created opcode. - -**/ -UINT8 * -EFIAPI -HiiCreateGuidOpCode ( - IN VOID *OpCodeHandle, - IN CONST EFI_GUID *Guid, - IN CONST VOID *GuidOpCode, OPTIONAL - IN UINTN OpCodeSize - ); - -/** - Create EFI_IFR_ACTION_OP opcode. - - If OpCodeHandle is NULL, then ASSERT(). - If any reserved bits are set in QuestionFlags, then ASSERT(). - - @param[in] OpCodeHandle The handle to the buffer of opcodes. - @param[in] QuestionId The Question ID. - @param[in] Prompt The String ID for Prompt. - @param[in] Help The String ID for Help. - @param[in] QuestionFlags The flags in the Question Header. - @param[in] QuestionConfig The String ID for the configuration. - - @retval NULL There is not enough space left in Buffer to add the opcode. - @retval Other A pointer to the created opcode. - -**/ -UINT8 * -EFIAPI -HiiCreateActionOpCode ( - IN VOID *OpCodeHandle, - IN EFI_QUESTION_ID QuestionId, - IN EFI_STRING_ID Prompt, - IN EFI_STRING_ID Help, - IN UINT8 QuestionFlags, - IN EFI_STRING_ID QuestionConfig - ); - -/** - Create EFI_IFR_SUBTITLE_OP opcode. - - If OpCodeHandle is NULL, then ASSERT(). - If any reserved bits are set in Flags, then ASSERT(). - If Scope > 1, then ASSERT(). - - @param[in] OpCodeHandle The handle to the buffer of opcodes. - @param[in] Prompt The string ID for Prompt. - @param[in] Help The string ID for Help. - @param[in] Flags The subtitle opcode flags. - @param[in] Scope 1 if this opcode is the beginning of a new scope. - 0 if this opcode is within the current scope. - - @retval NULL There is not enough space left in Buffer to add the opcode. - @retval Other A pointer to the created opcode. - -**/ -UINT8 * -EFIAPI -HiiCreateSubTitleOpCode ( - IN VOID *OpCodeHandle, - IN EFI_STRING_ID Prompt, - IN EFI_STRING_ID Help, - IN UINT8 Flags, - IN UINT8 Scope - ); - -/** - Create EFI_IFR_REF_OP opcode. - - If OpCodeHandle is NULL, then ASSERT(). - If any reserved bits are set in QuestionFlags, then ASSERT(). - - @param[in] OpCodeHandle The handle to the buffer of opcodes. - @param[in] FormId The Destination Form ID. - @param[in] Prompt The string ID for Prompt. - @param[in] Help The string ID for Help. - @param[in] QuestionFlags The flags in Question Header - @param[in] QuestionId Question ID. - - @retval NULL There is not enough space left in Buffer to add the opcode. - @retval Other A pointer to the created opcode. - -**/ -UINT8 * -EFIAPI -HiiCreateGotoOpCode ( - IN VOID *OpCodeHandle, - IN EFI_FORM_ID FormId, - IN EFI_STRING_ID Prompt, - IN EFI_STRING_ID Help, - IN UINT8 QuestionFlags, - IN EFI_QUESTION_ID QuestionId - ); - -/** - Create EFI_IFR_REF_OP, EFI_IFR_REF2_OP, EFI_IFR_REF3_OP and EFI_IFR_REF4_OP opcode. - - When RefDevicePath is not zero, EFI_IFR_REF4 opcode will be created. - When RefDevicePath is zero and RefFormSetId is not NULL, EFI_IFR_REF3 opcode will be created. - When RefDevicePath is zero, RefFormSetId is NULL and RefQuestionId is not zero, EFI_IFR_REF2 opcode will be created. - When RefDevicePath is zero, RefFormSetId is NULL and RefQuestionId is zero, EFI_IFR_REF opcode will be created. - - If OpCodeHandle is NULL, then ASSERT(). - If any reserved bits are set in QuestionFlags, then ASSERT(). - - @param[in] OpCodeHandle The handle to the buffer of opcodes. - @param[in] RefFormId The Destination Form ID. - @param[in] Prompt The string ID for Prompt. - @param[in] Help The string ID for Help. - @param[in] QuestionFlags The flags in Question Header - @param[in] QuestionId Question ID. - @param[in] RefQuestionId The question on the form to which this link is referring. - If its value is zero, then the link refers to the top of the form. - @param[in] RefFormSetId The form set to which this link is referring. If its value is NULL, and RefDevicePath is - zero, then the link is to the current form set. - @param[in] RefDevicePath The string identifier that specifies the string containing the text representation of - the device path to which the form set containing the form specified by FormId. - If its value is zero, then the link refers to the current page. - - @retval NULL There is not enough space left in Buffer to add the opcode. - @retval Other A pointer to the created opcode. - -**/ -UINT8 * -EFIAPI -HiiCreateGotoExOpCode ( - IN VOID *OpCodeHandle, - IN EFI_FORM_ID RefFormId, - IN EFI_STRING_ID Prompt, - IN EFI_STRING_ID Help, - IN UINT8 QuestionFlags, - IN EFI_QUESTION_ID QuestionId, - IN EFI_QUESTION_ID RefQuestionId, - IN EFI_GUID *RefFormSetId, OPTIONAL - IN EFI_STRING_ID RefDevicePath - ); - -/** - Create EFI_IFR_CHECKBOX_OP opcode. - - If OpCodeHandle is NULL, then ASSERT(). - If any reserved bits are set in QuestionFlags, then ASSERT(). - If any reserved bits are set in CheckBoxFlags, then ASSERT(). - - @param[in] OpCodeHandle The handle to the buffer of opcodes. - @param[in] QuestionId The question ID. - @param[in] VarStoreId The storage ID. - @param[in] VarOffset Offset in Storage or String ID of the name (VarName) - for this name/value pair. - @param[in] Prompt The string ID for Prompt. - @param[in] Help The string ID for Help. - @param[in] QuestionFlags The flags in Question Header. - @param[in] CheckBoxFlags The flags for checkbox opcode. - @param[in] DefaultsOpCodeHandle The handle for a buffer of DEFAULT opcodes. This - is an optional parameter that may be NULL. - - @retval NULL There is not enough space left in Buffer to add the opcode. - @retval Other A pointer to the created opcode. - -**/ -UINT8 * -EFIAPI -HiiCreateCheckBoxOpCode ( - IN VOID *OpCodeHandle, - IN EFI_QUESTION_ID QuestionId, - IN EFI_VARSTORE_ID VarStoreId, - IN UINT16 VarOffset, - IN EFI_STRING_ID Prompt, - IN EFI_STRING_ID Help, - IN UINT8 QuestionFlags, - IN UINT8 CheckBoxFlags, - IN VOID *DefaultsOpCodeHandle OPTIONAL - ); - -/** - Create EFI_IFR_NUMERIC_OP opcode. - - If OpCodeHandle is NULL, then ASSERT(). - If any reserved bits are set in QuestionFlags, then ASSERT(). - If any reserved bits are set in NumericFlags, then ASSERT(). - - @param[in] OpCodeHandle The handle to the buffer of opcodes. - @param[in] QuestionId The question ID. - @param[in] VarStoreId The storage ID. - @param[in] VarOffset Offset in Storage or String ID of the name (VarName) - for this name/value pair. - @param[in] Prompt The string ID for Prompt. - @param[in] Help The string ID for Help. - @param[in] QuestionFlags The flags in Question Header. - @param[in] NumericFlags The flags for a numeric opcode. - @param[in] Minimum The numeric minimum value. - @param[in] Maximum The numeric maximum value. - @param[in] Step The numeric step for edit. - @param[in] DefaultsOpCodeHandle The handle for a buffer of DEFAULT opcodes. This - is an optional parameter that may be NULL. - - @retval NULL There is not enough space left in Buffer to add the opcode. - @retval Other A pointer to the created opcode. - -**/ -UINT8 * -EFIAPI -HiiCreateNumericOpCode ( - IN VOID *OpCodeHandle, - IN EFI_QUESTION_ID QuestionId, - IN EFI_VARSTORE_ID VarStoreId, - IN UINT16 VarOffset, - IN EFI_STRING_ID Prompt, - IN EFI_STRING_ID Help, - IN UINT8 QuestionFlags, - IN UINT8 NumericFlags, - IN UINT64 Minimum, - IN UINT64 Maximum, - IN UINT64 Step, - IN VOID *DefaultsOpCodeHandle OPTIONAL - ); - -/** - Create EFI_IFR_STRING_OP opcode. - - If OpCodeHandle is NULL, then ASSERT(). - If any reserved bits are set in QuestionFlags, then ASSERT(). - If any reserved bits are set in StringFlags, then ASSERT(). - - @param[in] OpCodeHandle The handle to the buffer of opcodes. - @param[in] QuestionId The question ID. - @param[in] VarStoreId The storage ID. - @param[in] VarOffset Offset in Storage or String ID of the name (VarName) - for this name/value pair. - @param[in] Prompt The string ID for Prompt. - @param[in] Help The string ID for Help. - @param[in] QuestionFlags The flags in Question Header. - @param[in] StringFlags The flags for a string opcode. - @param[in] MinSize The string minimum length. - @param[in] MaxSize The string maximum length. - @param[in] DefaultsOpCodeHandle The handle for a buffer of DEFAULT opcodes. This - is an optional parameter that may be NULL. - - @retval NULL There is not enough space left in Buffer to add the opcode. - @retval Other A pointer to the created opcode. - -**/ -UINT8 * -EFIAPI -HiiCreateStringOpCode ( - IN VOID *OpCodeHandle, - IN EFI_QUESTION_ID QuestionId, - IN EFI_VARSTORE_ID VarStoreId, - IN UINT16 VarOffset, - IN EFI_STRING_ID Prompt, - IN EFI_STRING_ID Help, - IN UINT8 QuestionFlags, - IN UINT8 StringFlags, - IN UINT8 MinSize, - IN UINT8 MaxSize, - IN VOID *DefaultsOpCodeHandle OPTIONAL - ); - -/** - Create EFI_IFR_ONE_OF_OP opcode. - - If OpCodeHandle is NULL, then ASSERT(). - If any reserved bits are set in QuestionFlags, then ASSERT(). - If any reserved bits are set in OneOfFlags, then ASSERT(). - - @param[in] OpCodeHandle The handle to the buffer of opcodes. - @param[in] QuestionId The question ID. - @param[in] VarStoreId The storage ID. - @param[in] VarOffset Offset in Storage or String ID of the name (VarName) - for this name/value pair. - @param[in] Prompt The string ID for Prompt. - @param[in] Help The string ID for Help. - @param[in] QuestionFlags The flags in Question Header. - @param[in] OneOfFlags The flags for a oneof opcode. - @param[in] OptionsOpCodeHandle The handle for a buffer of ONE_OF_OPTION opcodes. - @param[in] DefaultsOpCodeHandle The handle for a buffer of DEFAULT opcodes. This - is an optional parameter that may be NULL. - - @retval NULL There is not enough space left in Buffer to add the opcode. - @retval Other A pointer to the created opcode. - -**/ -UINT8 * -EFIAPI -HiiCreateOneOfOpCode ( - IN VOID *OpCodeHandle, - IN EFI_QUESTION_ID QuestionId, - IN EFI_VARSTORE_ID VarStoreId, - IN UINT16 VarOffset, - IN EFI_STRING_ID Prompt, - IN EFI_STRING_ID Help, - IN UINT8 QuestionFlags, - IN UINT8 OneOfFlags, - IN VOID *OptionsOpCodeHandle, - IN VOID *DefaultsOpCodeHandle OPTIONAL - ); - -/** - Create EFI_IFR_ORDERED_LIST_OP opcode. - - If OpCodeHandle is NULL, then ASSERT(). - If any reserved bits are set in QuestionFlags, then ASSERT(). - If any reserved bits are set in OrderedListFlags, then ASSERT(). - - @param[in] OpCodeHandle The handle to the buffer of opcodes. - @param[in] QuestionId The question ID. - @param[in] VarStoreId The storage ID. - @param[in] VarOffset Offset in Storage or String ID of the name (VarName) - for this name/value pair. - @param[in] Prompt The string ID for Prompt. - @param[in] Help The string ID for Help. - @param[in] QuestionFlags The flags in Question Header. - @param[in] OrderedListFlags The flags for an ordered list opcode. - @param[in] DataType The type for option value. - @param[in] MaxContainers Maximum count for options in this ordered list - @param[in] OptionsOpCodeHandle The handle for a buffer of ONE_OF_OPTION opcodes. - @param[in] DefaultsOpCodeHandle Handle for a buffer of DEFAULT opcodes. This - is an optional parameter that may be NULL. - - @retval NULL There is not enough space left in Buffer to add the opcode. - @retval Other A pointer to the created opcode. - -**/ -UINT8 * -EFIAPI -HiiCreateOrderedListOpCode ( - IN VOID *OpCodeHandle, - IN EFI_QUESTION_ID QuestionId, - IN EFI_VARSTORE_ID VarStoreId, - IN UINT16 VarOffset, - IN EFI_STRING_ID Prompt, - IN EFI_STRING_ID Help, - IN UINT8 QuestionFlags, - IN UINT8 OrderedListFlags, - IN UINT8 DataType, - IN UINT8 MaxContainers, - IN VOID *OptionsOpCodeHandle, - IN VOID *DefaultsOpCodeHandle OPTIONAL - ); - -/** - Create EFI_IFR_TEXT_OP opcode. - - If OpCodeHandle is NULL, then ASSERT(). - - @param[in] OpCodeHandle Handle to the buffer of opcodes. - @param[in] Prompt String ID for Prompt. - @param[in] Help String ID for Help. - @param[in] TextTwo String ID for TextTwo. - - @retval NULL There is not enough space left in Buffer to add the opcode. - @retval Other A pointer to the created opcode. - -**/ -UINT8 * -EFIAPI -HiiCreateTextOpCode ( - IN VOID *OpCodeHandle, - IN EFI_STRING_ID Prompt, - IN EFI_STRING_ID Help, - IN EFI_STRING_ID TextTwo - ); - -/** - Create EFI_IFR_DATE_OP opcode. - - If OpCodeHandle is NULL, then ASSERT(). - If any reserved bits are set in QuestionFlags, then ASSERT(). - If any reserved bits are set in DateFlags, then ASSERT(). - - @param[in] OpCodeHandle Handle to the buffer of opcodes. - @param[in] QuestionId Question ID - @param[in] VarStoreId Storage ID, optional. If DateFlags is not - QF_DATE_STORAGE_NORMAL, this parameter is ignored. - @param[in] VarOffset Offset in Storage or String ID of the name (VarName) - for this name/value pair, optional. If DateFlags is not - QF_DATE_STORAGE_NORMAL, this parameter is ignored. - @param[in] Prompt String ID for Prompt - @param[in] Help String ID for Help - @param[in] QuestionFlags Flags in Question Header - @param[in] DateFlags Flags for date opcode - @param[in] DefaultsOpCodeHandle Handle for a buffer of DEFAULT opcodes. This - is an optional parameter that may be NULL. - - @retval NULL There is not enough space left in Buffer to add the opcode. - @retval Other A pointer to the created opcode. - -**/ -UINT8 * -EFIAPI -HiiCreateDateOpCode ( - IN VOID *OpCodeHandle, - IN EFI_QUESTION_ID QuestionId, - IN EFI_VARSTORE_ID VarStoreId, OPTIONAL - IN UINT16 VarOffset, OPTIONAL - IN EFI_STRING_ID Prompt, - IN EFI_STRING_ID Help, - IN UINT8 QuestionFlags, - IN UINT8 DateFlags, - IN VOID *DefaultsOpCodeHandle OPTIONAL - ); - -/** - Create EFI_IFR_TIME_OP opcode. - - If OpCodeHandle is NULL, then ASSERT(). - If any reserved bits are set in QuestionFlags, then ASSERT(). - If any reserved bits are set in TimeFlags, then ASSERT(). - - @param[in] OpCodeHandle Handle to the buffer of opcodes. - @param[in] QuestionId Question ID - @param[in] VarStoreId Storage ID, optional. If TimeFlags is not - QF_TIME_STORAGE_NORMAL, this parameter is ignored. - @param[in] VarOffset Offset in Storage or String ID of the name (VarName) - for this name/value pair, optional. If TimeFlags is not - QF_TIME_STORAGE_NORMAL, this parameter is ignored. - @param[in] Prompt String ID for Prompt - @param[in] Help String ID for Help - @param[in] QuestionFlags Flags in Question Header - @param[in] TimeFlags Flags for time opcode - @param[in] DefaultsOpCodeHandle Handle for a buffer of DEFAULT opcodes. This - is an optional parameter that may be NULL. - - @retval NULL There is not enough space left in Buffer to add the opcode. - @retval Other A pointer to the created opcode. - -**/ -UINT8 * -EFIAPI -HiiCreateTimeOpCode ( - IN VOID *OpCodeHandle, - IN EFI_QUESTION_ID QuestionId, - IN EFI_VARSTORE_ID VarStoreId, OPTIONAL - IN UINT16 VarOffset, OPTIONAL - IN EFI_STRING_ID Prompt, - IN EFI_STRING_ID Help, - IN UINT8 QuestionFlags, - IN UINT8 TimeFlags, - IN VOID *DefaultsOpCodeHandle OPTIONAL - ); - -/** - This function updates a form that has previously been registered with the HII - Database. This function will perform at most one update operation. - - The form to update is specified by Handle, FormSetGuid, and FormId. Binary - comparisons of IFR opcodes are performed from the beginning of the form being - updated until an IFR opcode is found that exactly matches the first IFR opcode - specified by StartOpCodeHandle. The following rules are used to determine if - an insert, replace, or delete operation is performed: - - 1) If no matches are found, then NULL is returned. - 2) If a match is found, and EndOpCodeHandle is NULL, then all of the IFR opcodes - from StartOpCodeHandle except the first opcode are inserted immediately after - the matching IFR opcode in the form to be updated. - 3) If a match is found, and EndOpCodeHandle is not NULL, then a search is made - from the matching IFR opcode until an IFR opcode exactly matches the first - IFR opcode specified by EndOpCodeHandle. If no match is found for the first - IFR opcode specified by EndOpCodeHandle, then NULL is returned. If a match - is found, then all of the IFR opcodes between the start match and the end - match are deleted from the form being updated and all of the IFR opcodes - from StartOpCodeHandle except the first opcode are inserted immediately after - the matching start IFR opcode. If StartOpCcodeHandle only contains one - IFR instruction, then the result of this operation will delete all of the IFR - opcodes between the start end matches. - - If HiiHandle is NULL, then ASSERT(). - If StartOpCodeHandle is NULL, then ASSERT(). - - @param[in] HiiHandle The HII Handle of the form to update. - @param[in] FormSetGuid The Formset GUID of the form to update. This - is an optional parameter that may be NULL. - If it is NULL, all FormSet will be updated. - @param[in] FormId The ID of the form to update. - @param[in] StartOpCodeHandle An OpCode Handle that contains the set of IFR - opcodes to be inserted or replaced in the form. - The first IFR instruction in StartOpCodeHandle - is used to find matching IFR opcode in the - form. - @param[in] EndOpCodeHandle An OpCcode Handle that contains the IFR opcode - that marks the end of a replace operation in - the form. This is an optional parameter that - may be NULL. If it is NULL, then the IFR - opcodes specified by StartOpCodeHandle are - inserted into the form. - - @retval EFI_OUT_OF_RESOURCES Not enough memory resources are allocated. - @retval EFI_NOT_FOUND The following cases will return EFI_NOT_FOUND: - 1) The form specified by HiiHandle, FormSetGuid, - and FormId could not be found in the HII Database. - 2) No IFR opcodes in the target form match the first - IFR opcode in StartOpCodeHandle. - 3) EndOpCOde is not NULL, and no IFR opcodes in the - target form following a matching start opcode match - the first IFR opcode in EndOpCodeHandle. - @retval EFI_SUCCESS The matched form is updated by StartOpcode. - -**/ -EFI_STATUS -EFIAPI -HiiUpdateForm ( - IN EFI_HII_HANDLE HiiHandle, - IN EFI_GUID *FormSetGuid, OPTIONAL - IN EFI_FORM_ID FormId, - IN VOID *StartOpCodeHandle, - IN VOID *EndOpCodeHandle OPTIONAL - ); - -#endif diff --git a/MdeModulePkg/Include/Library/HttpLib.h b/MdeModulePkg/Include/Library/HttpLib.h deleted file mode 100644 index ce5a839c9b..0000000000 --- a/MdeModulePkg/Include/Library/HttpLib.h +++ /dev/null @@ -1,323 +0,0 @@ -/** @file - This library is used to share code between UEFI network stack modules. - It provides the helper routines to parse the HTTP message byte stream. - -Copyright (c) 2015, Intel Corporation. All rights reserved.
-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 _HTTP_LIB_H_ -#define _HTTP_LIB_H_ - -#include - -/** - Decode a percent-encoded URI component to the ASCII character. - - Decode the input component in Buffer according to RFC 3986. The caller is responsible to make - sure ResultBuffer points to a buffer with size equal or greater than ((AsciiStrSize (Buffer)) - in bytes. - - @param[in] Buffer The pointer to a percent-encoded URI component. - @param[in] BufferLength Length of Buffer in bytes. - @param[out] ResultBuffer Point to the buffer to store the decode result. - @param[out] ResultLength Length of decoded string in ResultBuffer in bytes. - - @retval EFI_SUCCESS Successfully decoded the URI. - @retval EFI_INVALID_PARAMETER Buffer is not a valid percent-encoded string. - -**/ -EFI_STATUS -EFIAPI -UriPercentDecode ( - IN CHAR8 *Buffer, - IN UINT32 BufferLength, - OUT CHAR8 *ResultBuffer, - OUT UINT32 *ResultLength - ); - -/** - Create a URL parser for the input URL string. - - This function will parse and dereference the input HTTP URL into it components. The original - content of the URL won't be modified and the result will be returned in UrlParser, which can - be used in other functions like NetHttpUrlGetHostName(). It is the caller's responsibility to - free the buffer returned in *UrlParser by HttpUrlFreeParser(). - - @param[in] Url The pointer to a HTTP URL string. - @param[in] Length Length of Url in bytes. - @param[in] IsConnectMethod Whether the Url is used in HTTP CONNECT method or not. - @param[out] UrlParser Pointer to the returned buffer to store the parse result. - - @retval EFI_SUCCESS Successfully dereferenced the HTTP URL. - @retval EFI_INVALID_PARAMETER UrlParser is NULL or Url is not a valid HTTP URL. - @retval EFI_OUT_OF_RESOURCES Could not allocate needed resources. - -**/ -EFI_STATUS -EFIAPI -HttpParseUrl ( - IN CHAR8 *Url, - IN UINT32 Length, - IN BOOLEAN IsConnectMethod, - OUT VOID **UrlParser - ); - -/** - Get the Hostname from a HTTP URL. - - This function will return the HostName according to the Url and previous parse result ,and - it is the caller's responsibility to free the buffer returned in *HostName. - - @param[in] Url The pointer to a HTTP URL string. - @param[in] UrlParser URL Parse result returned by NetHttpParseUrl(). - @param[out] HostName Pointer to a buffer to store the HostName. - - @retval EFI_SUCCESS Successfully get the required component. - @retval EFI_INVALID_PARAMETER Uri is NULL or HostName is NULL or UrlParser is invalid. - @retval EFI_NOT_FOUND No hostName component in the URL. - @retval EFI_OUT_OF_RESOURCES Could not allocate needed resources. - -**/ -EFI_STATUS -EFIAPI -HttpUrlGetHostName ( - IN CHAR8 *Url, - IN VOID *UrlParser, - OUT CHAR8 **HostName - ); - -/** - Get the IPv4 address from a HTTP URL. - - This function will return the IPv4 address according to the Url and previous parse result. - - @param[in] Url The pointer to a HTTP URL string. - @param[in] UrlParser URL Parse result returned by NetHttpParseUrl(). - @param[out] Ip4Address Pointer to a buffer to store the IP address. - - @retval EFI_SUCCESS Successfully get the required component. - @retval EFI_INVALID_PARAMETER Uri is NULL or Ip4Address is NULL or UrlParser is invalid. - @retval EFI_NOT_FOUND No IPv4 address component in the URL. - @retval EFI_OUT_OF_RESOURCES Could not allocate needed resources. - -**/ -EFI_STATUS -EFIAPI -HttpUrlGetIp4 ( - IN CHAR8 *Url, - IN VOID *UrlParser, - OUT EFI_IPv4_ADDRESS *Ip4Address - ); - -/** - Get the IPv6 address from a HTTP URL. - - This function will return the IPv6 address according to the Url and previous parse result. - - @param[in] Url The pointer to a HTTP URL string. - @param[in] UrlParser URL Parse result returned by NetHttpParseUrl(). - @param[out] Ip6Address Pointer to a buffer to store the IP address. - - @retval EFI_SUCCESS Successfully get the required component. - @retval EFI_INVALID_PARAMETER Uri is NULL or Ip6Address is NULL or UrlParser is invalid. - @retval EFI_NOT_FOUND No IPv6 address component in the URL. - @retval EFI_OUT_OF_RESOURCES Could not allocate needed resources. - -**/ -EFI_STATUS -EFIAPI -HttpUrlGetIp6 ( - IN CHAR8 *Url, - IN VOID *UrlParser, - OUT EFI_IPv6_ADDRESS *Ip6Address - ); - -/** - Get the port number from a HTTP URL. - - This function will return the port number according to the Url and previous parse result. - - @param[in] Url The pointer to a HTTP URL string. - @param[in] UrlParser URL Parse result returned by NetHttpParseUrl(). - @param[out] Port Pointer to a buffer to store the port number. - - @retval EFI_SUCCESS Successfully get the required component. - @retval EFI_INVALID_PARAMETER Uri is NULL or Port is NULL or UrlParser is invalid. - @retval EFI_NOT_FOUND No port number in the URL. - @retval EFI_OUT_OF_RESOURCES Could not allocate needed resources. - -**/ -EFI_STATUS -EFIAPI -HttpUrlGetPort ( - IN CHAR8 *Url, - IN VOID *UrlParser, - OUT UINT16 *Port - ); - -/** - Release the resource of the URL parser. - - @param[in] UrlParser Pointer to the parser. - -**/ -VOID -EFIAPI -HttpUrlFreeParser ( - IN VOID *UrlParser - ); - -// -// HTTP body parser interface. -// - -typedef enum { - // - // Part of entity data. - // Length of entity body in Data. - // - BodyParseEventOnData, - // - // End of message body. - // Length is 0 and Data points to next byte after the end of the message. - // - BodyParseEventOnComplete -} HTTP_BODY_PARSE_EVENT; - -/** - A callback function to intercept events during message parser. - - This function will be invoked during HttpParseMessageBody() with various events type. An error - return status of the callback function will cause the HttpParseMessageBody() aborted. - - @param[in] EventType Event type of this callback call. - @param[in] Data A pointer to data buffer. - @param[in] Length Length in bytes of the Data. - @param[in] Context Callback context set by HttpInitMsgParser(). - - @retval EFI_SUCCESS Continue to parser the message body. - @retval Others Abort the parse. - -**/ -typedef -EFI_STATUS -(EFIAPI *HTTP_BODY_PARSER_CALLBACK) ( - IN HTTP_BODY_PARSE_EVENT EventType, - IN CHAR8 *Data, - IN UINTN Length, - IN VOID *Context -); - -/** - Initialize a HTTP message-body parser. - - This function will create and initialize a HTTP message parser according to caller provided HTTP message - header information. It is the caller's responsibility to free the buffer returned in *UrlParser by HttpFreeMsgParser(). - - @param[in] Method The HTTP method (e.g. GET, POST) for this HTTP message. - @param[in] StatusCode Response status code returned by the remote host. - @param[in] HeaderCount Number of HTTP header structures in Headers. - @param[in] Headers Array containing list of HTTP headers. - @param[in] Callback Callback function that is invoked when parsing the HTTP message-body, - set to NULL to ignore all events. - @param[in] Context Pointer to the context that will be passed to Callback. - @param[out] MsgParser Pointer to the returned buffer to store the message parser. - - @retval EFI_SUCCESS Successfully initialized the parser. - @retval EFI_OUT_OF_RESOURCES Could not allocate needed resources. - @retval EFI_INVALID_PARAMETER MsgParser is NULL or HeaderCount is not NULL but Headers is NULL. - @retval Others Failed to initialize the parser. - -**/ -EFI_STATUS -EFIAPI -HttpInitMsgParser ( - IN EFI_HTTP_METHOD Method, - IN EFI_HTTP_STATUS_CODE StatusCode, - IN UINTN HeaderCount, - IN EFI_HTTP_HEADER *Headers, - IN HTTP_BODY_PARSER_CALLBACK Callback, - IN VOID *Context, - OUT VOID **MsgParser - ); - -/** - Parse message body. - - Parse BodyLength of message-body. This function can be called repeatedly to parse the message-body partially. - - @param[in, out] MsgParser Pointer to the message parser. - @param[in] BodyLength Length in bytes of the Body. - @param[in] Body Pointer to the buffer of the message-body to be parsed. - - @retval EFI_SUCCESS Successfully parse the message-body. - @retval EFI_INVALID_PARAMETER MsgParser is NULL or Body is NULL or BodyLength is 0. - @retval Others Operation aborted. - -**/ -EFI_STATUS -EFIAPI -HttpParseMessageBody ( - IN OUT VOID *MsgParser, - IN UINTN BodyLength, - IN CHAR8 *Body - ); - -/** - Check whether the message-body is complete or not. - - @param[in] MsgParser Pointer to the message parser. - - @retval TRUE Message-body is complete. - @retval FALSE Message-body is not complete. - -**/ -BOOLEAN -EFIAPI -HttpIsMessageComplete ( - IN VOID *MsgParser - ); - -/** - Get the content length of the entity. - - Note that in trunk transfer, the entity length is not valid until the whole message body is received. - - @param[in] MsgParser Pointer to the message parser. - @param[out] ContentLength Pointer to store the length of the entity. - - @retval EFI_SUCCESS Successfully to get the entity length. - @retval EFI_NOT_READY Entity length is not valid yet. - @retval EFI_INVALID_PARAMETER MsgParser is NULL or ContentLength is NULL. - -**/ -EFI_STATUS -EFIAPI -HttpGetEntityLength ( - IN VOID *MsgParser, - OUT UINTN *ContentLength - ); - -/** - Release the resource of the message parser. - - @param[in] MsgParser Pointer to the message parser. - -**/ -VOID -EFIAPI -HttpFreeMsgParser ( - IN VOID *MsgParser - ); - - -#endif - diff --git a/MdeModulePkg/Include/Library/IpIoLib.h b/MdeModulePkg/Include/Library/IpIoLib.h deleted file mode 100644 index 37cba070a1..0000000000 --- a/MdeModulePkg/Include/Library/IpIoLib.h +++ /dev/null @@ -1,586 +0,0 @@ -/** @file - This library is only intended to be used by UEFI network stack modules. - It provides the combined IpIo layer on the EFI IP4 Protocol and EFI IP6 protocol. - -Copyright (c) 2005 - 2010, Intel Corporation. All rights reserved.
-This program and the accompanying materials are licensed and made available under -the terms and conditions of the BSD License that 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 _IP_IO_H_ -#define _IP_IO_H_ - -#include -#include - -#include - -// -// type and code define for ICMP protocol error -// from IP -// -#define ICMP_TYPE_UNREACH 3 -#define ICMP_TYPE_TIMXCEED 11 -#define ICMP_TYPE_PARAMPROB 12 -#define ICMP_TYPE_SOURCEQUENCH 4 - -#define ICMP_CODE_UNREACH_NET 0 -#define ICMP_CODE_UNREACH_HOST 1 -#define ICMP_CODE_UNREACH_PROTOCOL 2 -#define ICMP_CODE_UNREACH_PORT 3 -#define ICMP_CODE_UNREACH_NEEDFRAG 4 -#define ICMP_CODE_UNREACH_SRCFAIL 5 -#define ICMP_CODE_UNREACH_NET_UNKNOWN 6 -#define ICMP_CODE_UNREACH_HOST_UNKNOWN 7 -#define ICMP_CODE_UNREACH_ISOLATED 8 -#define ICMP_CODE_UNREACH_NET_PROHIB 9 -#define ICMP_CODE_UNREACH_HOST_PROHIB 10 -#define ICMP_CODE_UNREACH_TOSNET 11 -#define ICMP_CODE_UNREACH_TOSHOST 12 - -/** - Get the IP header length from the struct EFI_IP4_HEADER. HeaderLength is - Internet header length in 32-bit words, so HeaderLength<<2 is the real - length of IP header. - - @param[out] HdrPtr A pointer to EFI_IP4_HEADER. - - @return The IP header length. -**/ -#define EFI_IP4_HEADER_LEN(HdrPtr) ((HdrPtr)->HeaderLength << 2) - -/** - To types of ICMP error which consist of ICMP header, IP header and original - datagram's data, get length from sum of ICMP header length, IP header length - and first 64 bits of datagram's data length. - - @param[in] IpHdr A pointer to EFI_IP4_HEADER. - - @return The ICMP error length. -**/ -#define ICMP_ERRLEN(IpHdr) \ - (sizeof(IP4_ICMP_HEAD) + EFI_IP4_HEADER_LEN(IpHdr) + 8) - -/** - Get the packet header from NET_BUF. - - @param[out] Buf A pointer to NET_BUF. - @param[in] Type Header type. - - @return The pointer to packet header. -**/ -#define NET_PROTO_HDR(Buf, Type) ((Type *) ((Buf)->BlockOp[0].Head)) - - -extern EFI_IP4_CONFIG_DATA mIp4IoDefaultIpConfigData; -extern EFI_IP6_CONFIG_DATA mIp6IoDefaultIpConfigData; - - -/// -/// This error will be delivered to the -/// listening transportation layer protocol -/// that consumes IpIO. -/// - -#define ICMP_ERR_UNREACH_NET 0 -#define ICMP_ERR_UNREACH_HOST 1 -#define ICMP_ERR_UNREACH_PROTOCOL 2 -#define ICMP_ERR_UNREACH_PORT 3 -#define ICMP_ERR_MSGSIZE 4 -#define ICMP_ERR_UNREACH_SRCFAIL 5 -#define ICMP_ERR_TIMXCEED_INTRANS 6 -#define ICMP_ERR_TIMXCEED_REASS 7 -#define ICMP_ERR_QUENCH 8 -#define ICMP_ERR_PARAMPROB 9 - -#define ICMP6_ERR_UNREACH_NET 0 -#define ICMP6_ERR_UNREACH_HOST 1 -#define ICMP6_ERR_UNREACH_PROTOCOL 2 -#define ICMP6_ERR_UNREACH_PORT 3 -#define ICMP6_ERR_PACKAGE_TOOBIG 4 -#define ICMP6_ERR_TIMXCEED_HOPLIMIT 5 -#define ICMP6_ERR_TIMXCEED_REASS 6 -#define ICMP6_ERR_PARAMPROB_HEADER 7 -#define ICMP6_ERR_PARAMPROB_NEXHEADER 8 -#define ICMP6_ERR_PARAMPROB_IPV6OPTION 9 - -/// -/// The helper struct for IpIoGetIcmpErrStatus(). It is for internal use only. -/// -typedef struct { - BOOLEAN IsHard; - BOOLEAN Notify; -} ICMP_ERROR_INFO; - -typedef union { - EFI_IP4_COMPLETION_TOKEN Ip4Token; - EFI_IP6_COMPLETION_TOKEN Ip6Token; -} IP_IO_IP_COMPLETION_TOKEN; - -typedef union { - EFI_IP4_TRANSMIT_DATA Ip4TxData; - EFI_IP6_TRANSMIT_DATA Ip6TxData; -} IP_IO_IP_TX_DATA; - -typedef union { - EFI_IP4_RECEIVE_DATA Ip4RxData; - EFI_IP6_RECEIVE_DATA Ip6RxData; -} IP_IO_IP_RX_DATA; - -typedef union { - EFI_IP4_OVERRIDE_DATA Ip4OverrideData; - EFI_IP6_OVERRIDE_DATA Ip6OverrideData; -} IP_IO_OVERRIDE; - -typedef union { - EFI_IP4_CONFIG_DATA Ip4CfgData; - EFI_IP6_CONFIG_DATA Ip6CfgData; -} IP_IO_IP_CONFIG_DATA; - -typedef union { - EFI_IP4_HEADER *Ip4Hdr; - EFI_IP6_HEADER *Ip6Hdr; -} IP_IO_IP_HEADER; - -typedef union { - IP4_ADDR SubnetMask; - UINT8 PrefixLength; -} IP_IO_IP_MASK; - -typedef union { - EFI_IP4_PROTOCOL *Ip4; - EFI_IP6_PROTOCOL *Ip6; -} IP_IO_IP_PROTOCOL; - -/// -/// The IP session for an IP receive packet. -/// -typedef struct _EFI_NET_SESSION_DATA { - EFI_IP_ADDRESS Source; ///< Source IP of the received packet. - EFI_IP_ADDRESS Dest; ///< Destination IP of the received packet. - IP_IO_IP_HEADER IpHdr; ///< IP header of the received packet. - UINT32 IpHdrLen; ///< IP header length of the received packet. - ///< For IPv6, it includes the IP6 header - ///< length and extension header length. For - ///< IPv4, it includes the IP4 header length - ///< and options length. - UINT8 IpVersion; ///< The IP version of the received packet. -} EFI_NET_SESSION_DATA; - -/** - The prototype is called back when an IP packet is received. - - @param[in] Status The result of the receive request. - @param[in] IcmpErr Valid when Status is EFI_ICMP_ERROR. - @param[in] NetSession The IP session for the received packet. - @param[in] Pkt The packet received. - @param[in] Context The data provided by the user for the received packet when - the callback is registered in IP_IO_OPEN_DATA::RcvdContext. - -**/ -typedef -VOID -(EFIAPI *PKT_RCVD_NOTIFY) ( - IN EFI_STATUS Status, - IN UINT8 IcmpErr, - IN EFI_NET_SESSION_DATA *NetSession, - IN NET_BUF *Pkt, - IN VOID *Context - ); - -/** - The prototype is called back when an IP packet is sent. - - @param[in] Status Result of the IP packet being sent. - @param[in] Context The data provided by user for the received packet when - the callback is registered in IP_IO_OPEN_DATA::SndContext. - @param[in] Sender A Union type to specify a pointer of EFI_IP4_PROTOCOL - or EFI_IP6_PROTOCOL. - @param[in] NotifyData The Context data specified when calling IpIoSend() - -**/ -typedef -VOID -(EFIAPI *PKT_SENT_NOTIFY) ( - IN EFI_STATUS Status, - IN VOID *Context, - IN IP_IO_IP_PROTOCOL Sender, - IN VOID *NotifyData - ); - -/// -/// This data structure wraps Ip4/Ip6 instances. The IpIo Library uses it for all -/// Ip4/Ip6 operations. -/// -typedef struct _IP_IO { - /// - /// The node used to link this IpIo to the active IpIo list. - /// - LIST_ENTRY Entry; - - /// - /// The list used to maintain the IP instance for different sending purpose. - /// - LIST_ENTRY IpList; - - EFI_HANDLE Controller; - EFI_HANDLE Image; - EFI_HANDLE ChildHandle; - // - // The IP instance consumed by this IP_IO - // - IP_IO_IP_PROTOCOL Ip; - BOOLEAN IsConfigured; - - /// - /// Some ip configuration data can be changed. - /// - UINT8 Protocol; - - /// - /// Token and event used to get data from IP. - /// - IP_IO_IP_COMPLETION_TOKEN RcvToken; - - /// - /// List entry used to link the token passed to IP_IO. - /// - LIST_ENTRY PendingSndList; - - // - // User interface used to get notify from IP_IO - // - VOID *RcvdContext; ///< See IP_IO_OPEN_DATA::RcvdContext. - VOID *SndContext; ///< See IP_IO_OPEN_DATA::SndContext. - PKT_RCVD_NOTIFY PktRcvdNotify; ///< See IP_IO_OPEN_DATA::PktRcvdNotify. - PKT_SENT_NOTIFY PktSentNotify; ///< See IP_IO_OPEN_DATA::PktSentNotify. - UINT8 IpVersion; -} IP_IO; - -/// -/// The struct is for the user to pass IP configuration and callbacks to IP_IO. -/// It is used by IpIoOpen(). -/// -typedef struct _IP_IO_OPEN_DATA { - IP_IO_IP_CONFIG_DATA IpConfigData; ///< Configuration of the IP instance. - VOID *RcvdContext; ///< Context data used by receive callback. - VOID *SndContext; ///< Context data used by send callback. - PKT_RCVD_NOTIFY PktRcvdNotify; ///< Receive callback. - PKT_SENT_NOTIFY PktSentNotify; ///< Send callback. -} IP_IO_OPEN_DATA; - -/// -/// Internal struct book-keeping send request of IP_IO. -/// -/// An IP_IO_SEND_ENTRY will be created each time a send request is issued to -/// IP_IO via IpIoSend(). -/// -typedef struct _IP_IO_SEND_ENTRY { - LIST_ENTRY Entry; - IP_IO *IpIo; - VOID *Context; - VOID *NotifyData; - IP_IO_IP_PROTOCOL Ip; - NET_BUF *Pkt; - IP_IO_IP_COMPLETION_TOKEN SndToken; -} IP_IO_SEND_ENTRY; - -/// -/// The IP_IO_IP_INFO is used in IpIoSend() to override the default IP instance -/// in IP_IO. -/// -typedef struct _IP_IO_IP_INFO { - EFI_IP_ADDRESS Addr; - IP_IO_IP_MASK PreMask; - LIST_ENTRY Entry; - EFI_HANDLE ChildHandle; - IP_IO_IP_PROTOCOL Ip; - IP_IO_IP_COMPLETION_TOKEN DummyRcvToken; - INTN RefCnt; - UINT8 IpVersion; -} IP_IO_IP_INFO; - -/** - Create a new IP_IO instance. - - This function uses IP4/IP6 service binding protocol in Controller to create - an IP4/IP6 child (aka IP4/IP6 instance). - - @param[in] Image The image handle of the driver or application that - consumes IP_IO. - @param[in] Controller The controller handle that has IP4 or IP6 service - binding protocol installed. - @param[in] IpVersion The version of the IP protocol to use, either - IPv4 or IPv6. - - @return The pointer to a newly created IP_IO instance, or NULL if failed. - -**/ -IP_IO * -EFIAPI -IpIoCreate ( - IN EFI_HANDLE Image, - IN EFI_HANDLE Controller, - IN UINT8 IpVersion - ); - -/** - Destroy an IP_IO instance. - - This function is paired with IpIoCreate(). The IP_IO will be closed first. - Resource will be freed afterwards. See IpIoClose(). - - @param[in, out] IpIo The pointer to the IP_IO instance that needs to be - destroyed. - - @retval EFI_SUCCESS The IP_IO instance was destroyed successfully. - @retval Others An error condition occurred. - -**/ -EFI_STATUS -EFIAPI -IpIoDestroy ( - IN OUT IP_IO *IpIo - ); - -/** - Stop an IP_IO instance. - - This function is paired with IpIoOpen(). The IP_IO will be unconfigured, and all - pending send/receive tokens will be canceled. - - @param[in, out] IpIo The pointer to the IP_IO instance that needs to stop. - - @retval EFI_SUCCESS The IP_IO instance stopped successfully. - @retval Others Anrror condition occurred. - -**/ -EFI_STATUS -EFIAPI -IpIoStop ( - IN OUT IP_IO *IpIo - ); - -/** - Open an IP_IO instance for use. - - This function is called after IpIoCreate(). It is used for configuring the IP - instance and register the callbacks and their context data for sending and - receiving IP packets. - - @param[in, out] IpIo The pointer to an IP_IO instance that needs - to open. - @param[in] OpenData The configuration data and callbacks for - the IP_IO instance. - - @retval EFI_SUCCESS The IP_IO instance opened with OpenData - successfully. - @retval EFI_ACCESS_DENIED The IP_IO instance is configured; avoid - reopening it. - @retval Others An error condition occurred. - -**/ -EFI_STATUS -EFIAPI -IpIoOpen ( - IN OUT IP_IO *IpIo, - IN IP_IO_OPEN_DATA *OpenData - ); - -/** - Send out an IP packet. - - This function is called after IpIoOpen(). The data to be sent are wrapped in - Pkt. The IP instance wrapped in IpIo is used for sending by default, but can be - overriden by Sender. Other sending configurations, such as source address and gateway - address, are specified in OverrideData. - - @param[in, out] IpIo The pointer to an IP_IO instance used for sending IP - packet. - @param[in, out] Pkt The pointer to the IP packet to be sent. - @param[in] Sender Optional. The IP protocol instance used for sending. - @param[in] Context The optional context data. - @param[in] NotifyData The optional notify data. - @param[in] Dest The destination IP address to send this packet to. - @param[in] OverrideData The data to override some configuration of the IP - instance used for sending. - - @retval EFI_SUCCESS The operation completed successfully. - @retval EFI_NOT_STARTED The IpIo is not configured. - @retval EFI_OUT_OF_RESOURCES Failed due to resource limitations. - -**/ -EFI_STATUS -EFIAPI -IpIoSend ( - IN OUT IP_IO *IpIo, - IN OUT NET_BUF *Pkt, - IN IP_IO_IP_INFO *Sender OPTIONAL, - IN VOID *Context OPTIONAL, - IN VOID *NotifyData OPTIONAL, - IN EFI_IP_ADDRESS *Dest, - IN IP_IO_OVERRIDE *OverrideData OPTIONAL - ); - -/** - Cancel the IP transmit token that wraps this Packet. - - @param[in] IpIo The pointer to the IP_IO instance. - @param[in] Packet The pointer to the packet of NET_BUF to cancel. - -**/ -VOID -EFIAPI -IpIoCancelTxToken ( - IN IP_IO *IpIo, - IN VOID *Packet - ); - -/** - Add a new IP instance for sending data. - - The function is used to add the IP_IO to the IP_IO sending list. The caller - can later use IpIoFindSender() to get the IP_IO and call IpIoSend() to send - data. - - @param[in, out] IpIo The pointer to an IP_IO instance to add a new IP - instance for sending purposes. - - @return The pointer to the created IP_IO_IP_INFO structure; NULL if failed. - -**/ -IP_IO_IP_INFO * -EFIAPI -IpIoAddIp ( - IN OUT IP_IO *IpIo - ); - -/** - Configure the IP instance of this IpInfo and start the receiving if IpConfigData - is not NULL. - - @param[in, out] IpInfo The pointer to the IP_IO_IP_INFO instance. - @param[in, out] IpConfigData The IP4 or IP6 configure data used to configure - the IP instance. If NULL, the IP instance is reset. - If UseDefaultAddress is set to TRUE, and the configure - operation succeeds, the default address information - is written back in this IpConfigData. - - @retval EFI_SUCCESS The IP instance of this IpInfo was configured successfully, - or there is no need to reconfigure it. - @retval Others The configuration failed. - -**/ -EFI_STATUS -EFIAPI -IpIoConfigIp ( - IN OUT IP_IO_IP_INFO *IpInfo, - IN OUT VOID *IpConfigData OPTIONAL - ); - -/** - Destroy an IP instance maintained in IpIo->IpList for - sending purpose. - - This function pairs with IpIoAddIp(). The IpInfo is previously created by - IpIoAddIp(). The IP_IO_IP_INFO::RefCnt is decremented and the IP instance - will be dstroyed if the RefCnt is zero. - - @param[in] IpIo The pointer to the IP_IO instance. - @param[in] IpInfo The pointer to the IpInfo to be removed. - -**/ -VOID -EFIAPI -IpIoRemoveIp ( - IN IP_IO *IpIo, - IN IP_IO_IP_INFO *IpInfo - ); - -/** - Find the first IP protocol maintained in IpIo whose local - address is the same as Src. - - This function is called when the caller needs the IpIo to send data to the - specified Src. The IpIo was added previously by IpIoAddIp(). - - @param[in, out] IpIo The pointer to the pointer of the IP_IO instance. - @param[in] IpVersion The version of the IP protocol to use, either - IPv4 or IPv6. - @param[in] Src The local IP address. - - @return The pointer to the IP protocol can be used for sending purpose and its local - address is the same with Src. - -**/ -IP_IO_IP_INFO * -EFIAPI -IpIoFindSender ( - IN OUT IP_IO **IpIo, - IN UINT8 IpVersion, - IN EFI_IP_ADDRESS *Src - ); - -/** - Get the ICMP error map information. - - The ErrorStatus will be returned. The IsHard and Notify are optional. If they - are not NULL, this routine will fill them. - - @param[in] IcmpError IcmpError Type. - @param[in] IpVersion The version of the IP protocol to use, - either IPv4 or IPv6. - @param[out] IsHard If TRUE, indicates that it is a hard error. - @param[out] Notify If TRUE, SockError needs to be notified. - - @return The ICMP Error Status, such as EFI_NETWORK_UNREACHABLE. - -**/ -EFI_STATUS -EFIAPI -IpIoGetIcmpErrStatus ( - IN UINT8 IcmpError, - IN UINT8 IpVersion, - OUT BOOLEAN *IsHard OPTIONAL, - OUT BOOLEAN *Notify OPTIONAL - ); - -/** - Refresh the remote peer's Neighbor Cache entries. - - This function is called when the caller needs the IpIo to refresh the existing - IPv6 neighbor cache entries since the neighbor is considered reachable by the - node has recently received a confirmation that packets sent recently to the - neighbor were received by its IP layer. - - @param[in] IpIo The pointer to an IP_IO instance - @param[in] Neighbor The IP address of the neighbor - @param[in] Timeout The time in 100-ns units that this entry will - remain in the neighbor cache. A value of - zero means that the entry is permanent. - A value of non-zero means that the entry is - dynamic and will be deleted after Timeout. - - @retval EFI_SUCCESS The operation completed successfully. - @retval EFI_NOT_STARTED The IpIo is not configured. - @retval EFI_INVALID_PARAMETER The Neighbor Address is invalid. - @retval EFI_NOT_FOUND The neighbor cache entry is not in the - neighbor table. - @retval EFI_OUT_OF_RESOURCES Failed due to resource limitations. - -**/ -EFI_STATUS -IpIoRefreshNeighbor ( - IN IP_IO *IpIo, - IN EFI_IP_ADDRESS *Neighbor, - IN UINT32 Timeout - ); - -#endif - diff --git a/MdeModulePkg/Include/Library/LockBoxLib.h b/MdeModulePkg/Include/Library/LockBoxLib.h deleted file mode 100644 index db7fd05def..0000000000 --- a/MdeModulePkg/Include/Library/LockBoxLib.h +++ /dev/null @@ -1,133 +0,0 @@ -/** @file - This library is only intended to be used by DXE modules that need save - confidential information to LockBox and get it by PEI modules in S3 phase. - -Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.
- -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 _LOCK_BOX_LIB_H_ -#define _LOCK_BOX_LIB_H_ - -/** - This function will save confidential information to lockbox. - - @param Guid the guid to identify the confidential information - @param Buffer the address of the confidential information - @param Length the length of the confidential information - - @retval RETURN_SUCCESS the information is saved successfully. - @retval RETURN_INVALID_PARAMETER the Guid is NULL, or Buffer is NULL, or Length is 0 - @retval RETURN_ALREADY_STARTED the requested GUID already exist. - @retval RETURN_OUT_OF_RESOURCES no enough resource to save the information. - @retval RETURN_ACCESS_DENIED it is too late to invoke this interface - @retval RETURN_NOT_STARTED it is too early to invoke this interface - @retval RETURN_UNSUPPORTED the service is not supported by implementaion. -**/ -RETURN_STATUS -EFIAPI -SaveLockBox ( - IN GUID *Guid, - IN VOID *Buffer, - IN UINTN Length - ); - -/** - This function will set lockbox attributes. - - @param Guid the guid to identify the confidential information - @param Attributes the attributes of the lockbox - - @retval RETURN_SUCCESS the information is saved successfully. - @retval RETURN_INVALID_PARAMETER attributes is invalid. - @retval RETURN_NOT_FOUND the requested GUID not found. - @retval RETURN_ACCESS_DENIED it is too late to invoke this interface - @retval RETURN_NOT_STARTED it is too early to invoke this interface - @retval RETURN_UNSUPPORTED the service is not supported by implementaion. -**/ -RETURN_STATUS -EFIAPI -SetLockBoxAttributes ( - IN GUID *Guid, - IN UINT64 Attributes - ); - -// -// With this flag, this LockBox can be restored to this Buffer with RestoreAllLockBoxInPlace() -// -#define LOCK_BOX_ATTRIBUTE_RESTORE_IN_PLACE BIT0 - -/** - This function will update confidential information to lockbox. - - @param Guid the guid to identify the original confidential information - @param Offset the offset of the original confidential information - @param Buffer the address of the updated confidential information - @param Length the length of the updated confidential information - - @retval RETURN_SUCCESS the information is saved successfully. - @retval RETURN_INVALID_PARAMETER the Guid is NULL, or Buffer is NULL, or Length is 0. - @retval RETURN_NOT_FOUND the requested GUID not found. - @retval RETURN_BUFFER_TOO_SMALL the original buffer to too small to hold new information. - @retval RETURN_ACCESS_DENIED it is too late to invoke this interface - @retval RETURN_NOT_STARTED it is too early to invoke this interface - @retval RETURN_UNSUPPORTED the service is not supported by implementaion. -**/ -RETURN_STATUS -EFIAPI -UpdateLockBox ( - IN GUID *Guid, - IN UINTN Offset, - IN VOID *Buffer, - IN UINTN Length - ); - -/** - This function will restore confidential information from lockbox. - - @param Guid the guid to identify the confidential information - @param Buffer the address of the restored confidential information - NULL means restored to original address, Length MUST be NULL at same time. - @param Length the length of the restored confidential information - - @retval RETURN_SUCCESS the information is restored successfully. - @retval RETURN_INVALID_PARAMETER the Guid is NULL, or one of Buffer and Length is NULL. - @retval RETURN_WRITE_PROTECTED Buffer and Length are NULL, but the LockBox has no - LOCK_BOX_ATTRIBUTE_RESTORE_IN_PLACE attribute. - @retval RETURN_BUFFER_TOO_SMALL the Length is too small to hold the confidential information. - @retval RETURN_NOT_FOUND the requested GUID not found. - @retval RETURN_NOT_STARTED it is too early to invoke this interface - @retval RETURN_ACCESS_DENIED not allow to restore to the address - @retval RETURN_UNSUPPORTED the service is not supported by implementaion. -**/ -RETURN_STATUS -EFIAPI -RestoreLockBox ( - IN GUID *Guid, - IN VOID *Buffer, OPTIONAL - IN OUT UINTN *Length OPTIONAL - ); - -/** - This function will restore confidential information from all lockbox which have RestoreInPlace attribute. - - @retval RETURN_SUCCESS the information is restored successfully. - @retval RETURN_NOT_STARTED it is too early to invoke this interface - @retval RETURN_UNSUPPORTED the service is not supported by implementaion. -**/ -RETURN_STATUS -EFIAPI -RestoreAllLockBoxInPlace ( - VOID - ); - -#endif diff --git a/MdeModulePkg/Include/Library/NetLib.h b/MdeModulePkg/Include/Library/NetLib.h deleted file mode 100644 index 280c51a01d..0000000000 --- a/MdeModulePkg/Include/Library/NetLib.h +++ /dev/null @@ -1,2132 +0,0 @@ -/** @file - This library is only intended to be used by UEFI network stack modules. - It provides basic functions for the UEFI network stack. - -Copyright (c) 2005 - 2012, Intel Corporation. All rights reserved.
-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 _NET_LIB_H_ -#define _NET_LIB_H_ - -#include - -#include -#include - -typedef UINT32 IP4_ADDR; -typedef UINT32 TCP_SEQNO; -typedef UINT16 TCP_PORTNO; - - -#define NET_ETHER_ADDR_LEN 6 -#define NET_IFTYPE_ETHERNET 0x01 - -#define NET_VLAN_TAG_LEN 4 -#define ETHER_TYPE_VLAN 0x8100 - -#define EFI_IP_PROTO_UDP 0x11 -#define EFI_IP_PROTO_TCP 0x06 -#define EFI_IP_PROTO_ICMP 0x01 -#define IP4_PROTO_IGMP 0x02 -#define IP6_ICMP 58 - -// -// The address classification -// -#define IP4_ADDR_CLASSA 1 -#define IP4_ADDR_CLASSB 2 -#define IP4_ADDR_CLASSC 3 -#define IP4_ADDR_CLASSD 4 -#define IP4_ADDR_CLASSE 5 - -#define IP4_MASK_NUM 33 -#define IP6_PREFIX_NUM 129 - -#define IP6_HOP_BY_HOP 0 -#define IP6_DESTINATION 60 -#define IP6_ROUTING 43 -#define IP6_FRAGMENT 44 -#define IP6_AH 51 -#define IP6_ESP 50 -#define IP6_NO_NEXT_HEADER 59 - -#define IP_VERSION_4 4 -#define IP_VERSION_6 6 - -#define IP6_PREFIX_LENGTH 64 - -#pragma pack(1) - -// -// Ethernet head definition -// -typedef struct { - UINT8 DstMac [NET_ETHER_ADDR_LEN]; - UINT8 SrcMac [NET_ETHER_ADDR_LEN]; - UINT16 EtherType; -} ETHER_HEAD; - -// -// 802.1Q VLAN Tag Control Information -// -typedef union { - struct { - UINT16 Vid : 12; // Unique VLAN identifier (0 to 4094) - UINT16 Cfi : 1; // Canonical Format Indicator - UINT16 Priority : 3; // 802.1Q priority level (0 to 7) - } Bits; - UINT16 Uint16; -} VLAN_TCI; - -#define VLAN_TCI_CFI_CANONICAL_MAC 0 -#define VLAN_TCI_CFI_NON_CANONICAL_MAC 1 - -// -// The EFI_IP4_HEADER is hard to use because the source and -// destination address are defined as EFI_IPv4_ADDRESS, which -// is a structure. Two structures can't be compared or masked -// directly. This is why there is an internal representation. -// -typedef struct { - UINT8 HeadLen : 4; - UINT8 Ver : 4; - UINT8 Tos; - UINT16 TotalLen; - UINT16 Id; - UINT16 Fragment; - UINT8 Ttl; - UINT8 Protocol; - UINT16 Checksum; - IP4_ADDR Src; - IP4_ADDR Dst; -} IP4_HEAD; - - -// -// ICMP head definition. Each ICMP message is categorized as either an error -// message or query message. Two message types have their own head format. -// -typedef struct { - UINT8 Type; - UINT8 Code; - UINT16 Checksum; -} IP4_ICMP_HEAD; - -typedef struct { - IP4_ICMP_HEAD Head; - UINT32 Fourth; // 4th filed of the head, it depends on Type. - IP4_HEAD IpHead; -} IP4_ICMP_ERROR_HEAD; - -typedef struct { - IP4_ICMP_HEAD Head; - UINT16 Id; - UINT16 Seq; -} IP4_ICMP_QUERY_HEAD; - -typedef struct { - UINT8 Type; - UINT8 Code; - UINT16 Checksum; -} IP6_ICMP_HEAD; - -typedef struct { - IP6_ICMP_HEAD Head; - UINT32 Fourth; - EFI_IP6_HEADER IpHead; -} IP6_ICMP_ERROR_HEAD; - -typedef struct { - IP6_ICMP_HEAD Head; - UINT32 Fourth; -} IP6_ICMP_INFORMATION_HEAD; - -// -// UDP header definition -// -typedef struct { - UINT16 SrcPort; - UINT16 DstPort; - UINT16 Length; - UINT16 Checksum; -} EFI_UDP_HEADER; - -// -// TCP header definition -// -typedef struct { - TCP_PORTNO SrcPort; - TCP_PORTNO DstPort; - TCP_SEQNO Seq; - TCP_SEQNO Ack; - UINT8 Res : 4; - UINT8 HeadLen : 4; - UINT8 Flag; - UINT16 Wnd; - UINT16 Checksum; - UINT16 Urg; -} TCP_HEAD; - -#pragma pack() - -#define NET_MAC_EQUAL(pMac1, pMac2, Len) \ - (CompareMem ((pMac1), (pMac2), Len) == 0) - -#define NET_MAC_IS_MULTICAST(Mac, BMac, Len) \ - (((*((UINT8 *) Mac) & 0x01) == 0x01) && (!NET_MAC_EQUAL (Mac, BMac, Len))) - -#define NTOHL(x) SwapBytes32 (x) - -#define HTONL(x) NTOHL(x) - -#define NTOHS(x) SwapBytes16 (x) - -#define HTONS(x) NTOHS(x) -#define NTOHLL(x) SwapBytes64 (x) -#define HTONLL(x) NTOHLL(x) -#define NTOHLLL(x) Ip6Swap128 (x) -#define HTONLLL(x) NTOHLLL(x) - -// -// Test the IP's attribute, All the IPs are in host byte order. -// -#define IP4_IS_MULTICAST(Ip) (((Ip) & 0xF0000000) == 0xE0000000) -#define IP4_IS_LOCAL_BROADCAST(Ip) ((Ip) == 0xFFFFFFFF) -#define IP4_NET_EQUAL(Ip1, Ip2, NetMask) (((Ip1) & (NetMask)) == ((Ip2) & (NetMask))) -#define IP4_IS_VALID_NETMASK(Ip) (NetGetMaskLength (Ip) != IP4_MASK_NUM) - -#define IP6_IS_MULTICAST(Ip6) (((Ip6)->Addr[0]) == 0xFF) - -// -// Convert the EFI_IP4_ADDRESS to plain UINT32 IP4 address. -// -#define EFI_IP4(EfiIpAddr) (*(IP4_ADDR *) ((EfiIpAddr).Addr)) -#define EFI_NTOHL(EfiIp) (NTOHL (EFI_IP4 ((EfiIp)))) -#define EFI_IP4_EQUAL(Ip1, Ip2) (CompareMem ((Ip1), (Ip2), sizeof (EFI_IPv4_ADDRESS)) == 0) - -#define EFI_IP6_EQUAL(Ip1, Ip2) (CompareMem ((Ip1), (Ip2), sizeof (EFI_IPv6_ADDRESS)) == 0) - -#define IP4_COPY_ADDRESS(Dest, Src) (CopyMem ((Dest), (Src), sizeof (EFI_IPv4_ADDRESS))) -#define IP6_COPY_ADDRESS(Dest, Src) (CopyMem ((Dest), (Src), sizeof (EFI_IPv6_ADDRESS))) -#define IP6_COPY_LINK_ADDRESS(Mac1, Mac2) (CopyMem ((Mac1), (Mac2), sizeof (EFI_MAC_ADDRESS))) - -// -// The debug level definition. This value is also used as the -// syslog's servity level. Don't change it. -// -#define NETDEBUG_LEVEL_TRACE 5 -#define NETDEBUG_LEVEL_WARNING 4 -#define NETDEBUG_LEVEL_ERROR 3 - -// -// Network debug message is sent out as syslog packet. -// -#define NET_SYSLOG_FACILITY 16 // Syslog local facility local use -#define NET_SYSLOG_PACKET_LEN 512 -#define NET_SYSLOG_TX_TIMEOUT (500 * 1000 * 10) // 500ms -#define NET_DEBUG_MSG_LEN 470 // 512 - (ether+ip4+udp4 head length) - -// -// The debug output expects the ASCII format string, Use %a to print ASCII -// string, and %s to print UNICODE string. PrintArg must be enclosed in (). -// For example: NET_DEBUG_TRACE ("Tcp", ("State transit to %a\n", Name)); -// -#define NET_DEBUG_TRACE(Module, PrintArg) \ - NetDebugOutput ( \ - NETDEBUG_LEVEL_TRACE, \ - Module, \ - __FILE__, \ - __LINE__, \ - NetDebugASPrint PrintArg \ - ) - -#define NET_DEBUG_WARNING(Module, PrintArg) \ - NetDebugOutput ( \ - NETDEBUG_LEVEL_WARNING, \ - Module, \ - __FILE__, \ - __LINE__, \ - NetDebugASPrint PrintArg \ - ) - -#define NET_DEBUG_ERROR(Module, PrintArg) \ - NetDebugOutput ( \ - NETDEBUG_LEVEL_ERROR, \ - Module, \ - __FILE__, \ - __LINE__, \ - NetDebugASPrint PrintArg \ - ) - -/** - Allocate a buffer, then format the message to it. This is a - help function for the NET_DEBUG_XXX macros. The PrintArg of - these macros treats the variable length print parameters as a - single parameter, and pass it to the NetDebugASPrint. For - example, NET_DEBUG_TRACE ("Tcp", ("State transit to %a\n", Name)) - if extracted to: - - NetDebugOutput ( - NETDEBUG_LEVEL_TRACE, - "Tcp", - __FILE__, - __LINE__, - NetDebugASPrint ("State transit to %a\n", Name) - ) - - @param Format The ASCII format string. - @param ... The variable length parameter whose format is determined - by the Format string. - - @return The buffer containing the formatted message, - or NULL if memory allocation failed. - -**/ -CHAR8 * -EFIAPI -NetDebugASPrint ( - IN CHAR8 *Format, - ... - ); - -/** - Builds an UDP4 syslog packet and send it using SNP. - - This function will locate a instance of SNP then send the message through it. - Because it isn't open the SNP BY_DRIVER, apply caution when using it. - - @param Level The servity level of the message. - @param Module The Moudle that generates the log. - @param File The file that contains the log. - @param Line The exact line that contains the log. - @param Message The user message to log. - - @retval EFI_INVALID_PARAMETER Any input parameter is invalid. - @retval EFI_OUT_OF_RESOURCES Failed to allocate memory for the packet - @retval EFI_SUCCESS The log is discard because that it is more verbose - than the mNetDebugLevelMax. Or, it has been sent out. -**/ -EFI_STATUS -EFIAPI -NetDebugOutput ( - IN UINT32 Level, - IN UINT8 *Module, - IN UINT8 *File, - IN UINT32 Line, - IN UINT8 *Message - ); - - -/** - Return the length of the mask. - - Return the length of the mask. Valid values are 0 to 32. - If the mask is invalid, return the invalid length 33, which is IP4_MASK_NUM. - NetMask is in the host byte order. - - @param[in] NetMask The netmask to get the length from. - - @return The length of the netmask, or IP4_MASK_NUM (33) if the mask is invalid. - -**/ -INTN -EFIAPI -NetGetMaskLength ( - IN IP4_ADDR NetMask - ); - -/** - Return the class of the IP address, such as class A, B, C. - Addr is in host byte order. - - The address of class A starts with 0. - If the address belong to class A, return IP4_ADDR_CLASSA. - The address of class B starts with 10. - If the address belong to class B, return IP4_ADDR_CLASSB. - The address of class C starts with 110. - If the address belong to class C, return IP4_ADDR_CLASSC. - The address of class D starts with 1110. - If the address belong to class D, return IP4_ADDR_CLASSD. - The address of class E starts with 1111. - If the address belong to class E, return IP4_ADDR_CLASSE. - - - @param[in] Addr The address to get the class from. - - @return IP address class, such as IP4_ADDR_CLASSA. - -**/ -INTN -EFIAPI -NetGetIpClass ( - IN IP4_ADDR Addr - ); - -/** - Check whether the IP is a valid unicast address according to - the netmask. If NetMask is zero, use the IP address's class to get the default mask. - - If Ip is 0, IP is not a valid unicast address. - Class D address is used for multicasting and class E address is reserved for future. If Ip - belongs to class D or class E, Ip is not a valid unicast address. - If all bits of the host address of Ip are 0 or 1, Ip is not a valid unicast address. - - @param[in] Ip The IP to check against. - @param[in] NetMask The mask of the IP. - - @return TRUE if Ip is a valid unicast address on the network, otherwise FALSE. - -**/ -BOOLEAN -EFIAPI -NetIp4IsUnicast ( - IN IP4_ADDR Ip, - IN IP4_ADDR NetMask - ); - -/** - Check whether the incoming IPv6 address is a valid unicast address. - - If the address is a multicast address has binary 0xFF at the start, it is not - a valid unicast address. If the address is unspecified ::, it is not a valid - unicast address to be assigned to any node. If the address is loopback address - ::1, it is also not a valid unicast address to be assigned to any physical - interface. - - @param[in] Ip6 The IPv6 address to check against. - - @return TRUE if Ip6 is a valid unicast address on the network, otherwise FALSE. - -**/ -BOOLEAN -EFIAPI -NetIp6IsValidUnicast ( - IN EFI_IPv6_ADDRESS *Ip6 - ); - - -/** - Check whether the incoming Ipv6 address is the unspecified address or not. - - @param[in] Ip6 - Ip6 address, in network order. - - @retval TRUE - Yes, incoming Ipv6 address is the unspecified address. - @retval FALSE - The incoming Ipv6 address is not the unspecified address - -**/ -BOOLEAN -EFIAPI -NetIp6IsUnspecifiedAddr ( - IN EFI_IPv6_ADDRESS *Ip6 - ); - -/** - Check whether the incoming Ipv6 address is a link-local address. - - @param[in] Ip6 - Ip6 address, in network order. - - @retval TRUE - The incoming Ipv6 address is a link-local address. - @retval FALSE - The incoming Ipv6 address is not a link-local address. - -**/ -BOOLEAN -EFIAPI -NetIp6IsLinkLocalAddr ( - IN EFI_IPv6_ADDRESS *Ip6 - ); - -/** - Check whether the Ipv6 address1 and address2 are on the connected network. - - @param[in] Ip1 - Ip6 address1, in network order. - @param[in] Ip2 - Ip6 address2, in network order. - @param[in] PrefixLength - The prefix length of the checking net. - - @retval TRUE - Yes, the Ipv6 address1 and address2 are connected. - @retval FALSE - No the Ipv6 address1 and address2 are not connected. - -**/ -BOOLEAN -EFIAPI -NetIp6IsNetEqual ( - EFI_IPv6_ADDRESS *Ip1, - EFI_IPv6_ADDRESS *Ip2, - UINT8 PrefixLength - ); - -/** - Switches the endianess of an IPv6 address. - - This function swaps the bytes in a 128-bit IPv6 address to switch the value - from little endian to big endian or vice versa. The byte swapped value is - returned. - - @param Ip6 Points to an IPv6 address. - - @return The byte swapped IPv6 address. - -**/ -EFI_IPv6_ADDRESS * -EFIAPI -Ip6Swap128 ( - EFI_IPv6_ADDRESS *Ip6 - ); - -extern IP4_ADDR gIp4AllMasks[IP4_MASK_NUM]; - - -extern EFI_IPv4_ADDRESS mZeroIp4Addr; - -#define NET_IS_DIGIT(Ch) (('0' <= (Ch)) && ((Ch) <= '9')) -#define NET_ROUNDUP(size, unit) (((size) + (unit) - 1) & (~((unit) - 1))) -#define NET_IS_LOWER_CASE_CHAR(Ch) (('a' <= (Ch)) && ((Ch) <= 'z')) -#define NET_IS_UPPER_CASE_CHAR(Ch) (('A' <= (Ch)) && ((Ch) <= 'Z')) - -#define TICKS_PER_MS 10000U -#define TICKS_PER_SECOND 10000000U - -#define NET_RANDOM(Seed) ((UINT32) ((UINT32) (Seed) * 1103515245UL + 12345) % 4294967295UL) - -/** - Extract a UINT32 from a byte stream. - - This function copies a UINT32 from a byte stream, and then converts it from Network - byte order to host byte order. Use this function to avoid alignment error. - - @param[in] Buf The buffer to extract the UINT32. - - @return The UINT32 extracted. - -**/ -UINT32 -EFIAPI -NetGetUint32 ( - IN UINT8 *Buf - ); - -/** - Puts a UINT32 into the byte stream in network byte order. - - Converts a UINT32 from host byte order to network byte order, then copies it to the - byte stream. - - @param[in, out] Buf The buffer in which to put the UINT32. - @param[in] Data The data to be converted and put into the byte stream. - -**/ -VOID -EFIAPI -NetPutUint32 ( - IN OUT UINT8 *Buf, - IN UINT32 Data - ); - -/** - Initialize a random seed using current time and monotonic count. - - Get current time and monotonic count first. Then initialize a random seed - based on some basic mathematics operation on the hour, day, minute, second, - nanosecond and year of the current time and the monotonic count value. - - @return The random seed initialized with current time. - -**/ -UINT32 -EFIAPI -NetRandomInitSeed ( - VOID - ); - - -#define NET_LIST_USER_STRUCT(Entry, Type, Field) \ - BASE_CR(Entry, Type, Field) - -#define NET_LIST_USER_STRUCT_S(Entry, Type, Field, Sig) \ - CR(Entry, Type, Field, Sig) - -// -// Iterate through the double linked list. It is NOT delete safe -// -#define NET_LIST_FOR_EACH(Entry, ListHead) \ - for(Entry = (ListHead)->ForwardLink; Entry != (ListHead); Entry = Entry->ForwardLink) - -// -// Iterate through the double linked list. This is delete-safe. -// Don't touch NextEntry. Also, don't use this macro if list -// entries other than the Entry may be deleted when processing -// the current Entry. -// -#define NET_LIST_FOR_EACH_SAFE(Entry, NextEntry, ListHead) \ - for(Entry = (ListHead)->ForwardLink, NextEntry = Entry->ForwardLink; \ - Entry != (ListHead); \ - Entry = NextEntry, NextEntry = Entry->ForwardLink \ - ) - -// -// Make sure the list isn't empty before getting the first/last record. -// -#define NET_LIST_HEAD(ListHead, Type, Field) \ - NET_LIST_USER_STRUCT((ListHead)->ForwardLink, Type, Field) - -#define NET_LIST_TAIL(ListHead, Type, Field) \ - NET_LIST_USER_STRUCT((ListHead)->BackLink, Type, Field) - - -/** - Remove the first node entry on the list, and return the removed node entry. - - Removes the first node entry from a doubly linked list. It is up to the caller of - this function to release the memory used by the first node, if that is required. On - exit, the removed node is returned. - - If Head is NULL, then ASSERT(). - If Head was not initialized, then ASSERT(). - If PcdMaximumLinkedListLength is not zero, and the number of nodes in the - linked list including the head node is greater than or equal to PcdMaximumLinkedListLength, - then ASSERT(). - - @param[in, out] Head The list header. - - @return The first node entry that is removed from the list, NULL if the list is empty. - -**/ -LIST_ENTRY * -EFIAPI -NetListRemoveHead ( - IN OUT LIST_ENTRY *Head - ); - -/** - Remove the last node entry on the list and return the removed node entry. - - Removes the last node entry from a doubly linked list. It is up to the caller of - this function to release the memory used by the first node, if that is required. On - exit, the removed node is returned. - - If Head is NULL, then ASSERT(). - If Head was not initialized, then ASSERT(). - If PcdMaximumLinkedListLength is not zero, and the number of nodes in the - linked list including the head node is greater than or equal to PcdMaximumLinkedListLength, - then ASSERT(). - - @param[in, out] Head The list head. - - @return The last node entry that is removed from the list, NULL if the list is empty. - -**/ -LIST_ENTRY * -EFIAPI -NetListRemoveTail ( - IN OUT LIST_ENTRY *Head - ); - -/** - Insert a new node entry after a designated node entry of a doubly linked list. - - Inserts a new node entry designated by NewEntry after the node entry designated by PrevEntry - of the doubly linked list. - - @param[in, out] PrevEntry The entry after which to insert. - @param[in, out] NewEntry The new entry to insert. - -**/ -VOID -EFIAPI -NetListInsertAfter ( - IN OUT LIST_ENTRY *PrevEntry, - IN OUT LIST_ENTRY *NewEntry - ); - -/** - Insert a new node entry before a designated node entry of a doubly linked list. - - Inserts a new node entry designated by NewEntry before the node entry designated by PostEntry - of the doubly linked list. - - @param[in, out] PostEntry The entry to insert before. - @param[in, out] NewEntry The new entry to insert. - -**/ -VOID -EFIAPI -NetListInsertBefore ( - IN OUT LIST_ENTRY *PostEntry, - IN OUT LIST_ENTRY *NewEntry - ); - -/** - Callback function which provided by user to remove one node in NetDestroyLinkList process. - - @param[in] Entry The entry to be removed. - @param[in] Context Pointer to the callback context corresponds to the Context in NetDestroyLinkList. - - @retval EFI_SUCCESS The entry has been removed successfully. - @retval Others Fail to remove the entry. - -**/ -typedef -EFI_STATUS -(EFIAPI *NET_DESTROY_LINK_LIST_CALLBACK) ( - IN LIST_ENTRY *Entry, - IN VOID *Context OPTIONAL - ); - -/** - Safe destroy nodes in a linked list, and return the length of the list after all possible operations finished. - - Destroy network children list by list traversals is not safe due to graph dependencies between nodes. - This function performs a safe traversal to destroy these nodes by checking to see if the node being destroyed - has been removed from the list or not. - If it has been removed, then restart the traversal from the head. - If it hasn't been removed, then continue with the next node directly. - This function will end the iterate and return the CallBack's last return value if error happens, - or retrun EFI_SUCCESS if 2 complete passes are made with no changes in the number of children in the list. - - @param[in] List The head of the list. - @param[in] CallBack Pointer to the callback function to destroy one node in the list. - @param[in] Context Pointer to the callback function's context: corresponds to the - parameter Context in NET_DESTROY_LINK_LIST_CALLBACK. - @param[out] ListLength The length of the link list if the function returns successfully. - - @retval EFI_SUCCESS Two complete passes are made with no changes in the number of children. - @retval EFI_INVALID_PARAMETER The input parameter is invalid. - @retval Others Return the CallBack's last return value. - -**/ -EFI_STATUS -EFIAPI -NetDestroyLinkList ( - IN LIST_ENTRY *List, - IN NET_DESTROY_LINK_LIST_CALLBACK CallBack, - IN VOID *Context, OPTIONAL - OUT UINTN *ListLength OPTIONAL - ); - -/** - This function checks the input Handle to see if it's one of these handles in ChildHandleBuffer. - - @param[in] Handle Handle to be checked. - @param[in] NumberOfChildren Number of Handles in ChildHandleBuffer. - @param[in] ChildHandleBuffer An array of child handles to be freed. May be NULL - if NumberOfChildren is 0. - - @retval TURE Found the input Handle in ChildHandleBuffer. - @retval FALSE Can't find the input Handle in ChildHandleBuffer. - -**/ -BOOLEAN -EFIAPI -NetIsInHandleBuffer ( - IN EFI_HANDLE Handle, - IN UINTN NumberOfChildren, - IN EFI_HANDLE *ChildHandleBuffer OPTIONAL - ); - -// -// Object container: EFI network stack spec defines various kinds of -// tokens. The drivers can share code to manage those objects. -// -typedef struct { - LIST_ENTRY Link; - VOID *Key; - VOID *Value; -} NET_MAP_ITEM; - -typedef struct { - LIST_ENTRY Used; - LIST_ENTRY Recycled; - UINTN Count; -} NET_MAP; - -#define NET_MAP_INCREAMENT 64 - -/** - Initialize the netmap. Netmap is a reposity to keep the pairs. - - Initialize the forward and backward links of two head nodes donated by Map->Used - and Map->Recycled of two doubly linked lists. - Initializes the count of the pairs in the netmap to zero. - - If Map is NULL, then ASSERT(). - If the address of Map->Used is NULL, then ASSERT(). - If the address of Map->Recycled is NULl, then ASSERT(). - - @param[in, out] Map The netmap to initialize. - -**/ -VOID -EFIAPI -NetMapInit ( - IN OUT NET_MAP *Map - ); - -/** - To clean up the netmap, that is, release allocated memories. - - Removes all nodes of the Used doubly linked list and frees memory of all related netmap items. - Removes all nodes of the Recycled doubly linked list and free memory of all related netmap items. - The number of the pairs in the netmap is set to zero. - - If Map is NULL, then ASSERT(). - - @param[in, out] Map The netmap to clean up. - -**/ -VOID -EFIAPI -NetMapClean ( - IN OUT NET_MAP *Map - ); - -/** - Test whether the netmap is empty and return true if it is. - - If the number of the pairs in the netmap is zero, return TRUE. - - If Map is NULL, then ASSERT(). - - - @param[in] Map The net map to test. - - @return TRUE if the netmap is empty, otherwise FALSE. - -**/ -BOOLEAN -EFIAPI -NetMapIsEmpty ( - IN NET_MAP *Map - ); - -/** - Return the number of the pairs in the netmap. - - @param[in] Map The netmap to get the entry number. - - @return The entry number in the netmap. - -**/ -UINTN -EFIAPI -NetMapGetCount ( - IN NET_MAP *Map - ); - -/** - Allocate an item to save the pair to the head of the netmap. - - Allocate an item to save the pair and add corresponding node entry - to the beginning of the Used doubly linked list. The number of the - pairs in the netmap increase by 1. - - If Map is NULL, then ASSERT(). - - @param[in, out] Map The netmap to insert into. - @param[in] Key The user's key. - @param[in] Value The user's value for the key. - - @retval EFI_OUT_OF_RESOURCES Failed to allocate the memory for the item. - @retval EFI_SUCCESS The item is inserted to the head. - -**/ -EFI_STATUS -EFIAPI -NetMapInsertHead ( - IN OUT NET_MAP *Map, - IN VOID *Key, - IN VOID *Value OPTIONAL - ); - -/** - Allocate an item to save the pair to the tail of the netmap. - - Allocate an item to save the pair and add corresponding node entry - to the tail of the Used doubly linked list. The number of the - pairs in the netmap increase by 1. - - If Map is NULL, then ASSERT(). - - @param[in, out] Map The netmap to insert into. - @param[in] Key The user's key. - @param[in] Value The user's value for the key. - - @retval EFI_OUT_OF_RESOURCES Failed to allocate the memory for the item. - @retval EFI_SUCCESS The item is inserted to the tail. - -**/ -EFI_STATUS -EFIAPI -NetMapInsertTail ( - IN OUT NET_MAP *Map, - IN VOID *Key, - IN VOID *Value OPTIONAL - ); - -/** - Finds the key in the netmap and returns the point to the item containing the Key. - - Iterate the Used doubly linked list of the netmap to get every item. Compare the key of every - item with the key to search. It returns the point to the item contains the Key if found. - - If Map is NULL, then ASSERT(). - - @param[in] Map The netmap to search within. - @param[in] Key The key to search. - - @return The point to the item contains the Key, or NULL if Key isn't in the map. - -**/ -NET_MAP_ITEM * -EFIAPI -NetMapFindKey ( - IN NET_MAP *Map, - IN VOID *Key - ); - -/** - Remove the node entry of the item from the netmap and return the key of the removed item. - - Remove the node entry of the item from the Used doubly linked list of the netmap. - The number of the pairs in the netmap decrease by 1. Then add the node - entry of the item to the Recycled doubly linked list of the netmap. If Value is not NULL, - Value will point to the value of the item. It returns the key of the removed item. - - If Map is NULL, then ASSERT(). - If Item is NULL, then ASSERT(). - if item in not in the netmap, then ASSERT(). - - @param[in, out] Map The netmap to remove the item from. - @param[in, out] Item The item to remove. - @param[out] Value The variable to receive the value if not NULL. - - @return The key of the removed item. - -**/ -VOID * -EFIAPI -NetMapRemoveItem ( - IN OUT NET_MAP *Map, - IN OUT NET_MAP_ITEM *Item, - OUT VOID **Value OPTIONAL - ); - -/** - Remove the first node entry on the netmap and return the key of the removed item. - - Remove the first node entry from the Used doubly linked list of the netmap. - The number of the pairs in the netmap decrease by 1. Then add the node - entry to the Recycled doubly linked list of the netmap. If parameter Value is not NULL, - parameter Value will point to the value of the item. It returns the key of the removed item. - - If Map is NULL, then ASSERT(). - If the Used doubly linked list is empty, then ASSERT(). - - @param[in, out] Map The netmap to remove the head from. - @param[out] Value The variable to receive the value if not NULL. - - @return The key of the item removed. - -**/ -VOID * -EFIAPI -NetMapRemoveHead ( - IN OUT NET_MAP *Map, - OUT VOID **Value OPTIONAL - ); - -/** - Remove the last node entry on the netmap and return the key of the removed item. - - Remove the last node entry from the Used doubly linked list of the netmap. - The number of the pairs in the netmap decrease by 1. Then add the node - entry to the Recycled doubly linked list of the netmap. If parameter Value is not NULL, - parameter Value will point to the value of the item. It returns the key of the removed item. - - If Map is NULL, then ASSERT(). - If the Used doubly linked list is empty, then ASSERT(). - - @param[in, out] Map The netmap to remove the tail from. - @param[out] Value The variable to receive the value if not NULL. - - @return The key of the item removed. - -**/ -VOID * -EFIAPI -NetMapRemoveTail ( - IN OUT NET_MAP *Map, - OUT VOID **Value OPTIONAL - ); - -typedef -EFI_STATUS -(EFIAPI *NET_MAP_CALLBACK) ( - IN NET_MAP *Map, - IN NET_MAP_ITEM *Item, - IN VOID *Arg - ); - -/** - Iterate through the netmap and call CallBack for each item. - - It will contiue the traverse if CallBack returns EFI_SUCCESS, otherwise, break - from the loop. It returns the CallBack's last return value. This function is - delete safe for the current item. - - If Map is NULL, then ASSERT(). - If CallBack is NULL, then ASSERT(). - - @param[in] Map The Map to iterate through. - @param[in] CallBack The callback function to call for each item. - @param[in] Arg The opaque parameter to the callback. - - @retval EFI_SUCCESS There is no item in the netmap, or CallBack for each item - returns EFI_SUCCESS. - @retval Others It returns the CallBack's last return value. - -**/ -EFI_STATUS -EFIAPI -NetMapIterate ( - IN NET_MAP *Map, - IN NET_MAP_CALLBACK CallBack, - IN VOID *Arg OPTIONAL - ); - - -// -// Helper functions to implement driver binding and service binding protocols. -// -/** - Create a child of the service that is identified by ServiceBindingGuid. - - Get the ServiceBinding Protocol first, then use it to create a child. - - If ServiceBindingGuid is NULL, then ASSERT(). - If ChildHandle is NULL, then ASSERT(). - - @param[in] Controller The controller which has the service installed. - @param[in] Image The image handle used to open service. - @param[in] ServiceBindingGuid The service's Guid. - @param[in, out] ChildHandle The handle to receive the created child. - - @retval EFI_SUCCESS The child was successfully created. - @retval Others Failed to create the child. - -**/ -EFI_STATUS -EFIAPI -NetLibCreateServiceChild ( - IN EFI_HANDLE Controller, - IN EFI_HANDLE Image, - IN EFI_GUID *ServiceBindingGuid, - IN OUT EFI_HANDLE *ChildHandle - ); - -/** - Destroy a child of the service that is identified by ServiceBindingGuid. - - Get the ServiceBinding Protocol first, then use it to destroy a child. - - If ServiceBindingGuid is NULL, then ASSERT(). - - @param[in] Controller The controller which has the service installed. - @param[in] Image The image handle used to open service. - @param[in] ServiceBindingGuid The service's Guid. - @param[in] ChildHandle The child to destroy. - - @retval EFI_SUCCESS The child was destroyed. - @retval Others Failed to destroy the child. - -**/ -EFI_STATUS -EFIAPI -NetLibDestroyServiceChild ( - IN EFI_HANDLE Controller, - IN EFI_HANDLE Image, - IN EFI_GUID *ServiceBindingGuid, - IN EFI_HANDLE ChildHandle - ); - -/** - Get handle with Simple Network Protocol installed on it. - - There should be MNP Service Binding Protocol installed on the input ServiceHandle. - If Simple Network Protocol is already installed on the ServiceHandle, the - ServiceHandle will be returned. If SNP is not installed on the ServiceHandle, - try to find its parent handle with SNP installed. - - @param[in] ServiceHandle The handle where network service binding protocols are - installed on. - @param[out] Snp The pointer to store the address of the SNP instance. - This is an optional parameter that may be NULL. - - @return The SNP handle, or NULL if not found. - -**/ -EFI_HANDLE -EFIAPI -NetLibGetSnpHandle ( - IN EFI_HANDLE ServiceHandle, - OUT EFI_SIMPLE_NETWORK_PROTOCOL **Snp OPTIONAL - ); - -/** - Retrieve VLAN ID of a VLAN device handle. - - Search VLAN device path node in Device Path of specified ServiceHandle and - return its VLAN ID. If no VLAN device path node found, then this ServiceHandle - is not a VLAN device handle, and 0 will be returned. - - @param[in] ServiceHandle The handle where network service binding protocols are - installed on. - - @return VLAN ID of the device handle, or 0 if not a VLAN device. - -**/ -UINT16 -EFIAPI -NetLibGetVlanId ( - IN EFI_HANDLE ServiceHandle - ); - -/** - Find VLAN device handle with specified VLAN ID. - - The VLAN child device handle is created by VLAN Config Protocol on ControllerHandle. - This function will append VLAN device path node to the parent device path, - and then use LocateDevicePath() to find the correct VLAN device handle. - - @param[in] ControllerHandle The handle where network service binding protocols are - installed on. - @param[in] VlanId The configured VLAN ID for the VLAN device. - - @return The VLAN device handle, or NULL if not found. - -**/ -EFI_HANDLE -EFIAPI -NetLibGetVlanHandle ( - IN EFI_HANDLE ControllerHandle, - IN UINT16 VlanId - ); - -/** - Get MAC address associated with the network service handle. - - There should be MNP Service Binding Protocol installed on the input ServiceHandle. - If SNP is installed on the ServiceHandle or its parent handle, MAC address will - be retrieved from SNP. If no SNP found, try to get SNP mode data use MNP. - - @param[in] ServiceHandle The handle where network service binding protocols are - installed on. - @param[out] MacAddress The pointer to store the returned MAC address. - @param[out] AddressSize The length of returned MAC address. - - @retval EFI_SUCCESS MAC address was returned successfully. - @retval Others Failed to get SNP mode data. - -**/ -EFI_STATUS -EFIAPI -NetLibGetMacAddress ( - IN EFI_HANDLE ServiceHandle, - OUT EFI_MAC_ADDRESS *MacAddress, - OUT UINTN *AddressSize - ); - -/** - Convert MAC address of the NIC associated with specified Service Binding Handle - to a unicode string. Callers are responsible for freeing the string storage. - - Locate simple network protocol associated with the Service Binding Handle and - get the mac address from SNP. Then convert the mac address into a unicode - string. It takes 2 unicode characters to represent a 1 byte binary buffer. - Plus one unicode character for the null-terminator. - - @param[in] ServiceHandle The handle where network service binding protocol is - installed. - @param[in] ImageHandle The image handle used to act as the agent handle to - get the simple network protocol. This parameter is - optional and may be NULL. - @param[out] MacString The pointer to store the address of the string - representation of the mac address. - - @retval EFI_SUCCESS Converted the mac address a unicode string successfully. - @retval EFI_OUT_OF_RESOURCES There are not enough memory resources. - @retval Others Failed to open the simple network protocol. - -**/ -EFI_STATUS -EFIAPI -NetLibGetMacString ( - IN EFI_HANDLE ServiceHandle, - IN EFI_HANDLE ImageHandle, OPTIONAL - OUT CHAR16 **MacString - ); - -/** - Detect media status for specified network device. - - The underlying UNDI driver may or may not support reporting media status from - GET_STATUS command (PXE_STATFLAGS_GET_STATUS_NO_MEDIA_SUPPORTED). This routine - will try to invoke Snp->GetStatus() to get the media status. If media is already - present, it returns directly. If media is not present, it will stop SNP and then - restart SNP to get the latest media status. This provides an opportunity to get - the correct media status for old UNDI driver, which doesn't support reporting - media status from GET_STATUS command. - Note: there are two limitations for the current algorithm: - 1) For UNDI with this capability, when the cable is not attached, there will - be an redundant Stop/Start() process. - 2) for UNDI without this capability, in case that network cable is attached when - Snp->Initialize() is invoked while network cable is unattached later, - NetLibDetectMedia() will report MediaPresent as TRUE, causing upper layer - apps to wait for timeout time. - - @param[in] ServiceHandle The handle where network service binding protocols are - installed. - @param[out] MediaPresent The pointer to store the media status. - - @retval EFI_SUCCESS Media detection success. - @retval EFI_INVALID_PARAMETER ServiceHandle is not a valid network device handle. - @retval EFI_UNSUPPORTED The network device does not support media detection. - @retval EFI_DEVICE_ERROR SNP is in an unknown state. - -**/ -EFI_STATUS -EFIAPI -NetLibDetectMedia ( - IN EFI_HANDLE ServiceHandle, - OUT BOOLEAN *MediaPresent - ); - -/** - Create an IPv4 device path node. - - The header type of IPv4 device path node is MESSAGING_DEVICE_PATH. - The header subtype of IPv4 device path node is MSG_IPv4_DP. - The length of the IPv4 device path node in bytes is 19. - Get other information from parameters to make up the whole IPv4 device path node. - - @param[in, out] Node The pointer to the IPv4 device path node. - @param[in] Controller The controller handle. - @param[in] LocalIp The local IPv4 address. - @param[in] LocalPort The local port. - @param[in] RemoteIp The remote IPv4 address. - @param[in] RemotePort The remote port. - @param[in] Protocol The protocol type in the IP header. - @param[in] UseDefaultAddress Whether this instance is using default address or not. - -**/ -VOID -EFIAPI -NetLibCreateIPv4DPathNode ( - IN OUT IPv4_DEVICE_PATH *Node, - IN EFI_HANDLE Controller, - IN IP4_ADDR LocalIp, - IN UINT16 LocalPort, - IN IP4_ADDR RemoteIp, - IN UINT16 RemotePort, - IN UINT16 Protocol, - IN BOOLEAN UseDefaultAddress - ); - -/** - Create an IPv6 device path node. - - The header type of IPv6 device path node is MESSAGING_DEVICE_PATH. - The header subtype of IPv6 device path node is MSG_IPv6_DP. - The length of the IPv6 device path node in bytes is 43. - Get other information from parameters to make up the whole IPv6 device path node. - - @param[in, out] Node The pointer to the IPv6 device path node. - @param[in] Controller The controller handle. - @param[in] LocalIp The local IPv6 address. - @param[in] LocalPort The local port. - @param[in] RemoteIp The remote IPv6 address. - @param[in] RemotePort The remote port. - @param[in] Protocol The protocol type in the IP header. - -**/ -VOID -EFIAPI -NetLibCreateIPv6DPathNode ( - IN OUT IPv6_DEVICE_PATH *Node, - IN EFI_HANDLE Controller, - IN EFI_IPv6_ADDRESS *LocalIp, - IN UINT16 LocalPort, - IN EFI_IPv6_ADDRESS *RemoteIp, - IN UINT16 RemotePort, - IN UINT16 Protocol - ); - - -/** - Find the UNDI/SNP handle from controller and protocol GUID. - - For example, IP will open an MNP child to transmit/receive - packets. When MNP is stopped, IP should also be stopped. IP - needs to find its own private data that is related the IP's - service binding instance that is installed on the UNDI/SNP handle. - The controller is then either an MNP or an ARP child handle. Note that - IP opens these handles using BY_DRIVER. Use that infomation to get the - UNDI/SNP handle. - - @param[in] Controller The protocol handle to check. - @param[in] ProtocolGuid The protocol that is related with the handle. - - @return The UNDI/SNP handle or NULL for errors. - -**/ -EFI_HANDLE -EFIAPI -NetLibGetNicHandle ( - IN EFI_HANDLE Controller, - IN EFI_GUID *ProtocolGuid - ); - -/** - This is the default unload handle for all the network drivers. - - Disconnect the driver specified by ImageHandle from all the devices in the handle database. - Uninstall all the protocols installed in the driver entry point. - - @param[in] ImageHandle The drivers' driver image. - - @retval EFI_SUCCESS The image is unloaded. - @retval Others Failed to unload the image. - -**/ -EFI_STATUS -EFIAPI -NetLibDefaultUnload ( - IN EFI_HANDLE ImageHandle - ); - -/** - Convert one Null-terminated ASCII string (decimal dotted) to EFI_IPv4_ADDRESS. - - @param[in] String The pointer to the Ascii string. - @param[out] Ip4Address The pointer to the converted IPv4 address. - - @retval EFI_SUCCESS Converted to an IPv4 address successfully. - @retval EFI_INVALID_PARAMETER The string is malformated, or Ip4Address is NULL. - -**/ -EFI_STATUS -EFIAPI -NetLibAsciiStrToIp4 ( - IN CONST CHAR8 *String, - OUT EFI_IPv4_ADDRESS *Ip4Address - ); - -/** - Convert one Null-terminated ASCII string to EFI_IPv6_ADDRESS. The format of the - string is defined in RFC 4291 - Text Pepresentation of Addresses. - - @param[in] String The pointer to the Ascii string. - @param[out] Ip6Address The pointer to the converted IPv6 address. - - @retval EFI_SUCCESS Converted to an IPv6 address successfully. - @retval EFI_INVALID_PARAMETER The string is malformated, or Ip6Address is NULL. - -**/ -EFI_STATUS -EFIAPI -NetLibAsciiStrToIp6 ( - IN CONST CHAR8 *String, - OUT EFI_IPv6_ADDRESS *Ip6Address - ); - -/** - Convert one Null-terminated Unicode string (decimal dotted) to EFI_IPv4_ADDRESS. - - @param[in] String The pointer to the Ascii string. - @param[out] Ip4Address The pointer to the converted IPv4 address. - - @retval EFI_SUCCESS Converted to an IPv4 address successfully. - @retval EFI_INVALID_PARAMETER The string is mal-formated or Ip4Address is NULL. - @retval EFI_OUT_OF_RESOURCES Failed to perform the operation due to lack of resources. - -**/ -EFI_STATUS -EFIAPI -NetLibStrToIp4 ( - IN CONST CHAR16 *String, - OUT EFI_IPv4_ADDRESS *Ip4Address - ); - -/** - Convert one Null-terminated Unicode string to EFI_IPv6_ADDRESS. The format of - the string is defined in RFC 4291 - Text Pepresentation of Addresses. - - @param[in] String The pointer to the Ascii string. - @param[out] Ip6Address The pointer to the converted IPv6 address. - - @retval EFI_SUCCESS Converted to an IPv6 address successfully. - @retval EFI_INVALID_PARAMETER The string is malformated or Ip6Address is NULL. - @retval EFI_OUT_OF_RESOURCES Failed to perform the operation due to a lack of resources. - -**/ -EFI_STATUS -EFIAPI -NetLibStrToIp6 ( - IN CONST CHAR16 *String, - OUT EFI_IPv6_ADDRESS *Ip6Address - ); - -/** - Convert one Null-terminated Unicode string to EFI_IPv6_ADDRESS and prefix length. - The format of the string is defined in RFC 4291 - Text Pepresentation of Addresses - Prefixes: ipv6-address/prefix-length. - - @param[in] String The pointer to the Ascii string. - @param[out] Ip6Address The pointer to the converted IPv6 address. - @param[out] PrefixLength The pointer to the converted prefix length. - - @retval EFI_SUCCESS Converted to an IPv6 address successfully. - @retval EFI_INVALID_PARAMETER The string is malformated, or Ip6Address is NULL. - @retval EFI_OUT_OF_RESOURCES Failed to perform the operation due to a lack of resources. - -**/ -EFI_STATUS -EFIAPI -NetLibStrToIp6andPrefix ( - IN CONST CHAR16 *String, - OUT EFI_IPv6_ADDRESS *Ip6Address, - OUT UINT8 *PrefixLength - ); - -/** - - Convert one EFI_IPv6_ADDRESS to Null-terminated Unicode string. - The text representation of address is defined in RFC 4291. - - @param[in] Ip6Address The pointer to the IPv6 address. - @param[out] String The buffer to return the converted string. - @param[in] StringSize The length in bytes of the input String. - - @retval EFI_SUCCESS Convert to string successfully. - @retval EFI_INVALID_PARAMETER The input parameter is invalid. - @retval EFI_BUFFER_TOO_SMALL The BufferSize is too small for the result. BufferSize has been - updated with the size needed to complete the request. -**/ -EFI_STATUS -EFIAPI -NetLibIp6ToStr ( - IN EFI_IPv6_ADDRESS *Ip6Address, - OUT CHAR16 *String, - IN UINTN StringSize - ); - -// -// Various signatures -// -#define NET_BUF_SIGNATURE SIGNATURE_32 ('n', 'b', 'u', 'f') -#define NET_VECTOR_SIGNATURE SIGNATURE_32 ('n', 'v', 'e', 'c') -#define NET_QUE_SIGNATURE SIGNATURE_32 ('n', 'b', 'q', 'u') - - -#define NET_PROTO_DATA 64 // Opaque buffer for protocols -#define NET_BUF_HEAD 1 // Trim or allocate space from head -#define NET_BUF_TAIL 0 // Trim or allocate space from tail -#define NET_VECTOR_OWN_FIRST 0x01 // We allocated the 1st block in the vector - -#define NET_CHECK_SIGNATURE(PData, SIGNATURE) \ - ASSERT (((PData) != NULL) && ((PData)->Signature == (SIGNATURE))) - -// -// Single memory block in the vector. -// -typedef struct { - UINT32 Len; // The block's length - UINT8 *Bulk; // The block's Data -} NET_BLOCK; - -typedef VOID (EFIAPI *NET_VECTOR_EXT_FREE) (VOID *Arg); - -// -//NET_VECTOR contains several blocks to hold all packet's -//fragments and other house-keeping stuff for sharing. It -//doesn't specify the where actual packet fragment begins. -// -typedef struct { - UINT32 Signature; - INTN RefCnt; // Reference count to share NET_VECTOR. - NET_VECTOR_EXT_FREE Free; // external function to free NET_VECTOR - VOID *Arg; // opeque argument to Free - UINT32 Flag; // Flags, NET_VECTOR_OWN_FIRST - UINT32 Len; // Total length of the assocated BLOCKs - - UINT32 BlockNum; - NET_BLOCK Block[1]; -} NET_VECTOR; - -// -//NET_BLOCK_OP operates on the NET_BLOCK. It specifies -//where the actual fragment begins and ends -// -typedef struct { - UINT8 *BlockHead; // Block's head, or the smallest valid Head - UINT8 *BlockTail; // Block's tail. BlockTail-BlockHead=block length - UINT8 *Head; // 1st byte of the data in the block - UINT8 *Tail; // Tail of the data in the block, Tail-Head=Size - UINT32 Size; // The size of the data -} NET_BLOCK_OP; - -typedef union { - IP4_HEAD *Ip4; - EFI_IP6_HEADER *Ip6; -} NET_IP_HEAD; - -// -//NET_BUF is the buffer manage structure used by the -//network stack. Every network packet may be fragmented. The Vector points to -//memory blocks used by each fragment, and BlockOp -//specifies where each fragment begins and ends. -// -//It also contains an opaque area for the protocol to store -//per-packet information. Protocol must be careful not -//to overwrite the members after that. -// -typedef struct { - UINT32 Signature; - INTN RefCnt; - LIST_ENTRY List; // The List this NET_BUF is on - - NET_IP_HEAD Ip; // Network layer header, for fast access - TCP_HEAD *Tcp; // Transport layer header, for fast access - EFI_UDP_HEADER *Udp; // User Datagram Protocol header - UINT8 ProtoData [NET_PROTO_DATA]; //Protocol specific data - - NET_VECTOR *Vector; // The vector containing the packet - - UINT32 BlockOpNum; // Total number of BlockOp in the buffer - UINT32 TotalSize; // Total size of the actual packet - NET_BLOCK_OP BlockOp[1]; // Specify the position of actual packet -} NET_BUF; - -// -//A queue of NET_BUFs. It is a thin extension of -//NET_BUF functions. -// -typedef struct { - UINT32 Signature; - INTN RefCnt; - LIST_ENTRY List; // The List this buffer queue is on - - LIST_ENTRY BufList; // list of queued buffers - UINT32 BufSize; // total length of DATA in the buffers - UINT32 BufNum; // total number of buffers on the chain -} NET_BUF_QUEUE; - -// -// Pseudo header for TCP and UDP checksum -// -#pragma pack(1) -typedef struct { - IP4_ADDR SrcIp; - IP4_ADDR DstIp; - UINT8 Reserved; - UINT8 Protocol; - UINT16 Len; -} NET_PSEUDO_HDR; - -typedef struct { - EFI_IPv6_ADDRESS SrcIp; - EFI_IPv6_ADDRESS DstIp; - UINT32 Len; - UINT32 Reserved:24; - UINT32 NextHeader:8; -} NET_IP6_PSEUDO_HDR; -#pragma pack() - -// -// The fragment entry table used in network interfaces. This is -// the same as NET_BLOCK now. Use two different to distinguish -// the two in case that NET_BLOCK be enhanced later. -// -typedef struct { - UINT32 Len; - UINT8 *Bulk; -} NET_FRAGMENT; - -#define NET_GET_REF(PData) ((PData)->RefCnt++) -#define NET_PUT_REF(PData) ((PData)->RefCnt--) -#define NETBUF_FROM_PROTODATA(Info) BASE_CR((Info), NET_BUF, ProtoData) - -#define NET_BUF_SHARED(Buf) \ - (((Buf)->RefCnt > 1) || ((Buf)->Vector->RefCnt > 1)) - -#define NET_VECTOR_SIZE(BlockNum) \ - (sizeof (NET_VECTOR) + ((BlockNum) - 1) * sizeof (NET_BLOCK)) - -#define NET_BUF_SIZE(BlockOpNum) \ - (sizeof (NET_BUF) + ((BlockOpNum) - 1) * sizeof (NET_BLOCK_OP)) - -#define NET_HEADSPACE(BlockOp) \ - (UINTN)((BlockOp)->Head - (BlockOp)->BlockHead) - -#define NET_TAILSPACE(BlockOp) \ - (UINTN)((BlockOp)->BlockTail - (BlockOp)->Tail) - -/** - Allocate a single block NET_BUF. Upon allocation, all the - free space is in the tail room. - - @param[in] Len The length of the block. - - @return The pointer to the allocated NET_BUF, or NULL if the - allocation failed due to resource limitations. - -**/ -NET_BUF * -EFIAPI -NetbufAlloc ( - IN UINT32 Len - ); - -/** - Free the net buffer and its associated NET_VECTOR. - - Decrease the reference count of the net buffer by one. Free the associated net - vector and itself if the reference count of the net buffer is decreased to 0. - The net vector free operation decreases the reference count of the net - vector by one, and performs the resource free operation when the reference count - of the net vector is 0. - - @param[in] Nbuf The pointer to the NET_BUF to be freed. - -**/ -VOID -EFIAPI -NetbufFree ( - IN NET_BUF *Nbuf - ); - -/** - Get the index of NET_BLOCK_OP that contains the byte at Offset in the net - buffer. - - For example, this function can be used to retrieve the IP header in the packet. It - also can be used to get the fragment that contains the byte used - mainly by the library implementation itself. - - @param[in] Nbuf The pointer to the net buffer. - @param[in] Offset The offset of the byte. - @param[out] Index Index of the NET_BLOCK_OP that contains the byte at - Offset. - - @return The pointer to the Offset'th byte of data in the net buffer, or NULL - if there is no such data in the net buffer. - -**/ -UINT8 * -EFIAPI -NetbufGetByte ( - IN NET_BUF *Nbuf, - IN UINT32 Offset, - OUT UINT32 *Index OPTIONAL - ); - -/** - Create a copy of the net buffer that shares the associated net vector. - - The reference count of the newly created net buffer is set to 1. The reference - count of the associated net vector is increased by one. - - @param[in] Nbuf The pointer to the net buffer to be cloned. - - @return The pointer to the cloned net buffer, or NULL if the - allocation failed due to resource limitations. - -**/ -NET_BUF * -EFIAPI -NetbufClone ( - IN NET_BUF *Nbuf - ); - -/** - Create a duplicated copy of the net buffer with data copied and HeadSpace - bytes of head space reserved. - - The duplicated net buffer will allocate its own memory to hold the data of the - source net buffer. - - @param[in] Nbuf The pointer to the net buffer to be duplicated from. - @param[in, out] Duplicate The pointer to the net buffer to duplicate to. If - NULL, a new net buffer is allocated. - @param[in] HeadSpace The length of the head space to reserve. - - @return The pointer to the duplicated net buffer, or NULL if - the allocation failed due to resource limitations. - -**/ -NET_BUF * -EFIAPI -NetbufDuplicate ( - IN NET_BUF *Nbuf, - IN OUT NET_BUF *Duplicate OPTIONAL, - IN UINT32 HeadSpace - ); - -/** - Create a NET_BUF structure which contains Len byte data of Nbuf starting from - Offset. - - A new NET_BUF structure will be created but the associated data in NET_VECTOR - is shared. This function exists to perform IP packet fragmentation. - - @param[in] Nbuf The pointer to the net buffer to be extracted. - @param[in] Offset Starting point of the data to be included in the new - net buffer. - @param[in] Len The bytes of data to be included in the new net buffer. - @param[in] HeadSpace The bytes of the head space to reserve for the protocol header. - - @return The pointer to the cloned net buffer, or NULL if the - allocation failed due to resource limitations. - -**/ -NET_BUF * -EFIAPI -NetbufGetFragment ( - IN NET_BUF *Nbuf, - IN UINT32 Offset, - IN UINT32 Len, - IN UINT32 HeadSpace - ); - -/** - Reserve some space in the header room of the net buffer. - - Upon allocation, all the space is in the tail room of the buffer. Call this - function to move space to the header room. This function is quite limited - in that it can only reserve space from the first block of an empty NET_BUF not - built from the external. However, it should be enough for the network stack. - - @param[in, out] Nbuf The pointer to the net buffer. - @param[in] Len The length of buffer to be reserved from the header. - -**/ -VOID -EFIAPI -NetbufReserve ( - IN OUT NET_BUF *Nbuf, - IN UINT32 Len - ); - -/** - Allocate Len bytes of space from the header or tail of the buffer. - - @param[in, out] Nbuf The pointer to the net buffer. - @param[in] Len The length of the buffer to be allocated. - @param[in] FromHead The flag to indicate whether to reserve the data - from head (TRUE) or tail (FALSE). - - @return The pointer to the first byte of the allocated buffer, - or NULL, if there is no sufficient space. - -**/ -UINT8* -EFIAPI -NetbufAllocSpace ( - IN OUT NET_BUF *Nbuf, - IN UINT32 Len, - IN BOOLEAN FromHead - ); - -/** - Trim Len bytes from the header or the tail of the net buffer. - - @param[in, out] Nbuf The pointer to the net buffer. - @param[in] Len The length of the data to be trimmed. - @param[in] FromHead The flag to indicate whether trim data is from the - head (TRUE) or the tail (FALSE). - - @return The length of the actual trimmed data, which may be less - than Len if the TotalSize of Nbuf is less than Len. - -**/ -UINT32 -EFIAPI -NetbufTrim ( - IN OUT NET_BUF *Nbuf, - IN UINT32 Len, - IN BOOLEAN FromHead - ); - -/** - Copy Len bytes of data from the specific offset of the net buffer to the - destination memory. - - The Len bytes of data may cross several fragments of the net buffer. - - @param[in] Nbuf The pointer to the net buffer. - @param[in] Offset The sequence number of the first byte to copy. - @param[in] Len The length of the data to copy. - @param[in] Dest The destination of the data to copy to. - - @return The length of the actual copied data, or 0 if the offset - specified exceeds the total size of net buffer. - -**/ -UINT32 -EFIAPI -NetbufCopy ( - IN NET_BUF *Nbuf, - IN UINT32 Offset, - IN UINT32 Len, - IN UINT8 *Dest - ); - -/** - Build a NET_BUF from external blocks. - - A new NET_BUF structure will be created from external blocks. An additional block - of memory will be allocated to hold reserved HeadSpace bytes of header room - and existing HeadLen bytes of header, but the external blocks are shared by the - net buffer to avoid data copying. - - @param[in] ExtFragment The pointer to the data block. - @param[in] ExtNum The number of the data blocks. - @param[in] HeadSpace The head space to be reserved. - @param[in] HeadLen The length of the protocol header. The function - pulls this amount of data into a linear block. - @param[in] ExtFree The pointer to the caller-provided free function. - @param[in] Arg The argument passed to ExtFree when ExtFree is - called. - - @return The pointer to the net buffer built from the data blocks, - or NULL if the allocation failed due to resource - limit. - -**/ -NET_BUF * -EFIAPI -NetbufFromExt ( - IN NET_FRAGMENT *ExtFragment, - IN UINT32 ExtNum, - IN UINT32 HeadSpace, - IN UINT32 HeadLen, - IN NET_VECTOR_EXT_FREE ExtFree, - IN VOID *Arg OPTIONAL - ); - -/** - Build a fragment table to contain the fragments in the net buffer. This is the - opposite operation of the NetbufFromExt. - - @param[in] Nbuf Points to the net buffer. - @param[in, out] ExtFragment The pointer to the data block. - @param[in, out] ExtNum The number of the data blocks. - - @retval EFI_BUFFER_TOO_SMALL The number of non-empty blocks is bigger than - ExtNum. - @retval EFI_SUCCESS The fragment table was built successfully. - -**/ -EFI_STATUS -EFIAPI -NetbufBuildExt ( - IN NET_BUF *Nbuf, - IN OUT NET_FRAGMENT *ExtFragment, - IN OUT UINT32 *ExtNum - ); - -/** - Build a net buffer from a list of net buffers. - - All the fragments will be collected from the list of NEW_BUF, and then a new - net buffer will be created through NetbufFromExt. - - @param[in] BufList A List of the net buffer. - @param[in] HeadSpace The head space to be reserved. - @param[in] HeaderLen The length of the protocol header. The function - pulls this amount of data into a linear block. - @param[in] ExtFree The pointer to the caller provided free function. - @param[in] Arg The argument passed to ExtFree when ExtFree is called. - - @return The pointer to the net buffer built from the list of net - buffers. - -**/ -NET_BUF * -EFIAPI -NetbufFromBufList ( - IN LIST_ENTRY *BufList, - IN UINT32 HeadSpace, - IN UINT32 HeaderLen, - IN NET_VECTOR_EXT_FREE ExtFree, - IN VOID *Arg OPTIONAL - ); - -/** - Free a list of net buffers. - - @param[in, out] Head The pointer to the head of linked net buffers. - -**/ -VOID -EFIAPI -NetbufFreeList ( - IN OUT LIST_ENTRY *Head - ); - -/** - Initiate the net buffer queue. - - @param[in, out] NbufQue The pointer to the net buffer queue to be initialized. - -**/ -VOID -EFIAPI -NetbufQueInit ( - IN OUT NET_BUF_QUEUE *NbufQue - ); - -/** - Allocate and initialize a net buffer queue. - - @return The pointer to the allocated net buffer queue, or NULL if the - allocation failed due to resource limit. - -**/ -NET_BUF_QUEUE * -EFIAPI -NetbufQueAlloc ( - VOID - ); - -/** - Free a net buffer queue. - - Decrease the reference count of the net buffer queue by one. The real resource - free operation isn't performed until the reference count of the net buffer - queue is decreased to 0. - - @param[in] NbufQue The pointer to the net buffer queue to be freed. - -**/ -VOID -EFIAPI -NetbufQueFree ( - IN NET_BUF_QUEUE *NbufQue - ); - -/** - Remove a net buffer from the head in the specific queue and return it. - - @param[in, out] NbufQue The pointer to the net buffer queue. - - @return The pointer to the net buffer removed from the specific queue, - or NULL if there is no net buffer in the specific queue. - -**/ -NET_BUF * -EFIAPI -NetbufQueRemove ( - IN OUT NET_BUF_QUEUE *NbufQue - ); - -/** - Append a net buffer to the net buffer queue. - - @param[in, out] NbufQue The pointer to the net buffer queue. - @param[in, out] Nbuf The pointer to the net buffer to be appended. - -**/ -VOID -EFIAPI -NetbufQueAppend ( - IN OUT NET_BUF_QUEUE *NbufQue, - IN OUT NET_BUF *Nbuf - ); - -/** - Copy Len bytes of data from the net buffer queue at the specific offset to the - destination memory. - - The copying operation is the same as NetbufCopy, but applies to the net buffer - queue instead of the net buffer. - - @param[in] NbufQue The pointer to the net buffer queue. - @param[in] Offset The sequence number of the first byte to copy. - @param[in] Len The length of the data to copy. - @param[out] Dest The destination of the data to copy to. - - @return The length of the actual copied data, or 0 if the offset - specified exceeds the total size of net buffer queue. - -**/ -UINT32 -EFIAPI -NetbufQueCopy ( - IN NET_BUF_QUEUE *NbufQue, - IN UINT32 Offset, - IN UINT32 Len, - OUT UINT8 *Dest - ); - -/** - Trim Len bytes of data from the buffer queue and free any net buffer - that is completely trimmed. - - The trimming operation is the same as NetbufTrim but applies to the net buffer - queue instead of the net buffer. - - @param[in, out] NbufQue The pointer to the net buffer queue. - @param[in] Len The length of the data to trim. - - @return The actual length of the data trimmed. - -**/ -UINT32 -EFIAPI -NetbufQueTrim ( - IN OUT NET_BUF_QUEUE *NbufQue, - IN UINT32 Len - ); - - -/** - Flush the net buffer queue. - - @param[in, out] NbufQue The pointer to the queue to be flushed. - -**/ -VOID -EFIAPI -NetbufQueFlush ( - IN OUT NET_BUF_QUEUE *NbufQue - ); - -/** - Compute the checksum for a bulk of data. - - @param[in] Bulk The pointer to the data. - @param[in] Len The length of the data, in bytes. - - @return The computed checksum. - -**/ -UINT16 -EFIAPI -NetblockChecksum ( - IN UINT8 *Bulk, - IN UINT32 Len - ); - -/** - Add two checksums. - - @param[in] Checksum1 The first checksum to be added. - @param[in] Checksum2 The second checksum to be added. - - @return The new checksum. - -**/ -UINT16 -EFIAPI -NetAddChecksum ( - IN UINT16 Checksum1, - IN UINT16 Checksum2 - ); - -/** - Compute the checksum for a NET_BUF. - - @param[in] Nbuf The pointer to the net buffer. - - @return The computed checksum. - -**/ -UINT16 -EFIAPI -NetbufChecksum ( - IN NET_BUF *Nbuf - ); - -/** - Compute the checksum for TCP/UDP pseudo header. - - Src and Dst are in network byte order, and Len is in host byte order. - - @param[in] Src The source address of the packet. - @param[in] Dst The destination address of the packet. - @param[in] Proto The protocol type of the packet. - @param[in] Len The length of the packet. - - @return The computed checksum. - -**/ -UINT16 -EFIAPI -NetPseudoHeadChecksum ( - IN IP4_ADDR Src, - IN IP4_ADDR Dst, - IN UINT8 Proto, - IN UINT16 Len - ); - -/** - Compute the checksum for the TCP6/UDP6 pseudo header. - - Src and Dst are in network byte order, and Len is in host byte order. - - @param[in] Src The source address of the packet. - @param[in] Dst The destination address of the packet. - @param[in] NextHeader The protocol type of the packet. - @param[in] Len The length of the packet. - - @return The computed checksum. - -**/ -UINT16 -EFIAPI -NetIp6PseudoHeadChecksum ( - IN EFI_IPv6_ADDRESS *Src, - IN EFI_IPv6_ADDRESS *Dst, - IN UINT8 NextHeader, - IN UINT32 Len - ); - -/** - The function frees the net buffer which allocated by the IP protocol. It releases - only the net buffer and doesn't call the external free function. - - This function should be called after finishing the process of mIpSec->ProcessExt() - for outbound traffic. The (EFI_IPSEC2_PROTOCOL)->ProcessExt() allocates a new - buffer for the ESP, so there needs a function to free the old net buffer. - - @param[in] Nbuf The network buffer to be freed. - -**/ -VOID -NetIpSecNetbufFree ( - NET_BUF *Nbuf - ); - -/** - This function obtains the system guid from the smbios table. - - @param[out] SystemGuid The pointer of the returned system guid. - - @retval EFI_SUCCESS Successfully obtained the system guid. - @retval EFI_NOT_FOUND Did not find the SMBIOS table. - -**/ -EFI_STATUS -EFIAPI -NetLibGetSystemGuid ( - OUT EFI_GUID *SystemGuid - ); - -#endif diff --git a/MdeModulePkg/Include/Library/OemHookStatusCodeLib.h b/MdeModulePkg/Include/Library/OemHookStatusCodeLib.h deleted file mode 100644 index edd370deb6..0000000000 --- a/MdeModulePkg/Include/Library/OemHookStatusCodeLib.h +++ /dev/null @@ -1,79 +0,0 @@ -/** @file - OEM hook status code library. Platform can implement an instance to - initialize the OEM devices to report status code information. - -Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
-This program and the accompanying materials are licensed and made available under -the terms and conditions of the BSD License that 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 __OEM_HOOK_STATUSCODE_LIB__ -#define __OEM_HOOK_STATUSCODE_LIB__ - -/** - - Initialize OEM status code device. - - - @return Status of initialization of OEM status code device. - -**/ -EFI_STATUS -EFIAPI -OemHookStatusCodeInitialize ( - VOID - ); - -/** - Report status code to OEM device. - - @param CodeType Indicates the type of status code being reported. - - @param Value Describes the current status of a hardware or software entity. - This includes both an operation and classification information - about the class and subclass. - For progress codes, the operation is the current activity. - For error codes, it is the exception. For debug codes, - it is not defined at this time. - Specific values are discussed in the Intel Platform Innovation - Framework for EFI Status Code Specification. - - @param Instance The enumeration of a hardware or software entity within the system. - A system may contain multiple entities that match a class/subclass - pairing. - The instance differentiates between them. An instance of 0 - indicates that instance information is unavailable, - not meaningful, or not relevant. Valid instance numbers - start with 1. - - - @param CallerId This optional parameter may be used to identify the caller. - This parameter allows the status code driver to apply - different rules to different callers. - Type EFI_GUID is defined in InstallProtocolInterface() - in the UEFI 2.0 Specification. - - - @param Data This optional parameter may be used to pass additional data. - - @return The function always returns EFI_SUCCESS. - -**/ -EFI_STATUS -EFIAPI -OemHookStatusCodeReport ( - IN EFI_STATUS_CODE_TYPE CodeType, - IN EFI_STATUS_CODE_VALUE Value, - IN UINT32 Instance, - IN EFI_GUID *CallerId, OPTIONAL - IN EFI_STATUS_CODE_DATA *Data OPTIONAL - ); - -#endif // __OEM_HOOK_STATUSCODE_LIB__ - diff --git a/MdeModulePkg/Include/Library/PlatformBootManagerLib.h b/MdeModulePkg/Include/Library/PlatformBootManagerLib.h deleted file mode 100644 index 52745032e4..0000000000 --- a/MdeModulePkg/Include/Library/PlatformBootManagerLib.h +++ /dev/null @@ -1,62 +0,0 @@ -/** @file - Platform Boot Manager library definition. A platform can implement - instances to support platform-specific behavior. - -Copyright (c) 2011 - 2015, Intel Corporation. All rights reserved.
-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 __PLATFORM_BOOT_MANAGER_LIB_H_ -#define __PLATFORM_BOOT_MANAGER_LIB_H_ -#include - -/** - Do the platform specific action before the console is connected. - - Such as: - Update console variable; - Register new Driver#### or Boot####; - Signal ReadyToLock event. -**/ -VOID -EFIAPI -PlatformBootManagerBeforeConsole ( - VOID - ); - -/** - Do the platform specific action after the console is connected. - - Such as: - Dynamically switch output mode; - Signal console ready platform customized event; - Run diagnostics like memory testing; - Connect certain devices; - Dispatch aditional option roms. -**/ -VOID -EFIAPI -PlatformBootManagerAfterConsole ( - VOID - ); - -/** - This function is called each second during the boot manager waits the timeout. - - @param TimeoutRemain The remaining timeout. -**/ -VOID -EFIAPI -PlatformBootManagerWaitCallback ( - UINT16 TimeoutRemain - ); - -#endif diff --git a/MdeModulePkg/Include/Library/PlatformHookLib.h b/MdeModulePkg/Include/Library/PlatformHookLib.h deleted file mode 100644 index 0f265d49a3..0000000000 --- a/MdeModulePkg/Include/Library/PlatformHookLib.h +++ /dev/null @@ -1,38 +0,0 @@ -/** @file - Platform hook library. Platform can provide an implementation of this - library class to provide hooks that may be required for some type of - platform initialization. - -Copyright (c) 2010, Intel Corporation. All rights reserved.
-This program and the accompanying materials are licensed and made available under -the terms and conditions of the BSD License that 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 __PLATFORM_HOOK_LIB__ -#define __PLATFORM_HOOK_LIB__ - -/** - Performs platform specific initialization required for the CPU to access - the hardware associated with a SerialPortLib instance. This function does - not intiailzie the serial port hardware itself. Instead, it initializes - hardware devices that are required for the CPU to access the serial port - hardware. This function may be called more than once. - - @retval RETURN_SUCCESS The platform specific initialization succeeded. - @retval RETURN_DEVICE_ERROR The platform specific initialization could not be completed. - -**/ -RETURN_STATUS -EFIAPI -PlatformHookSerialPortInitialize ( - VOID - ); - -#endif // __PLATFORM_HOOK_LIB__ - diff --git a/MdeModulePkg/Include/Library/PlatformVarCleanupLib.h b/MdeModulePkg/Include/Library/PlatformVarCleanupLib.h deleted file mode 100644 index a4691f0e65..0000000000 --- a/MdeModulePkg/Include/Library/PlatformVarCleanupLib.h +++ /dev/null @@ -1,61 +0,0 @@ -/** @file - The library class provides platform variable cleanup services. - -Copyright (c) 2015, Intel Corporation. All rights reserved.
-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 _PLATFORM_VARIABLE_CLEANUP_LIB_ -#define _PLATFORM_VARIABLE_CLEANUP_LIB_ - -#include - -typedef enum { - VarCleanupAll, - VarCleanupManually, - VarCleanupMax, -} VAR_CLEANUP_TYPE; - -/** - Get last boot variable error flag. - - @return Last boot variable error flag. - -**/ -VAR_ERROR_FLAG -EFIAPI -GetLastBootVarErrorFlag ( - ); - -/** - Platform variable cleanup. - - @param[in] Flag Variable error flag. - @param[in] Type Variable cleanup type. - If it is VarCleanupManually, the interface must be called after console connected. - - @retval EFI_SUCCESS No error or error processed. - @retval EFI_UNSUPPORTED The specified Flag or Type is not supported. - For example, system error may be not supported to process and Platform should have mechanism to reset system to manufacture mode. - Another, if system and user variables are wanted to be distinguished to process, the interface must be called after EndOfDxe. - @retval EFI_OUT_OF_RESOURCES Not enough resource to process the error. - @retval EFI_INVALID_PARAMETER The specified Flag or Type is an invalid value. - @retval Others Other failure occurs. - -**/ -EFI_STATUS -EFIAPI -PlatformVarCleanup ( - IN VAR_ERROR_FLAG Flag, - IN VAR_CLEANUP_TYPE Type - ); - -#endif - diff --git a/MdeModulePkg/Include/Library/RecoveryLib.h b/MdeModulePkg/Include/Library/RecoveryLib.h deleted file mode 100644 index f49394a822..0000000000 --- a/MdeModulePkg/Include/Library/RecoveryLib.h +++ /dev/null @@ -1,35 +0,0 @@ -/** @file - Recovery library class defines a set of methods related recovery boot mode. - This library class is no longer used and modules using this library should - directly locate EFI_PEI_RECOVERY_MODULE_PPI, defined in the PI 1.2 specification. - -Copyright (c) 2005 - 2010, Intel Corporation. All rights reserved.
-This program and the accompanying materials are licensed and made available under -the terms and conditions of the BSD License that 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 __RECOVERY_LIB_H__ -#define __RECOVERY_LIB_H__ - -/** - Calling this function causes the system to carry out a recovery boot path. - - @retval EFI_SUCCESS Recovery boot path succeeded. - @retval Others Recovery boot path failure. - -**/ -EFI_STATUS -EFIAPI -PeiRecoverFirmware ( - VOID - ); - -#endif - - diff --git a/MdeModulePkg/Include/Library/ResetSystemLib.h b/MdeModulePkg/Include/Library/ResetSystemLib.h deleted file mode 100644 index f95293470b..0000000000 --- a/MdeModulePkg/Include/Library/ResetSystemLib.h +++ /dev/null @@ -1,68 +0,0 @@ -/** @file - System reset Library Services. This library class defines a set of - methods that reset the whole system. - -Copyright (c) 2005 - 2010, Intel Corporation. All rights reserved.
-This program and the accompanying materials are licensed and made available under -the terms and conditions of the BSD License that 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 __RESET_SYSTEM_LIB_H__ -#define __RESET_SYSTEM_LIB_H__ - -/** - This function causes a system-wide reset (cold reset), in which - all circuitry within the system returns to its initial state. This type of reset - is asynchronous to system operation and operates without regard to - cycle boundaries. - - If this function returns, it means that the system does not support cold reset. -**/ -VOID -EFIAPI -ResetCold ( - VOID - ); - -/** - This function causes a system-wide initialization (warm reset), in which all processors - are set to their initial state. Pending cycles are not corrupted. - - If this function returns, it means that the system does not support warm reset. -**/ -VOID -EFIAPI -ResetWarm ( - VOID - ); - -/** - This function causes the system to enter a power state equivalent - to the ACPI G2/S5 or G3 states. - - If this function returns, it means that the system does not support shutdown reset. -**/ -VOID -EFIAPI -ResetShutdown ( - VOID - ); - -/** - This function causes the system to enter S3 and then wake up immediately. - - If this function returns, it means that the system does not support S3 feature. -**/ -VOID -EFIAPI -EnterS3WithImmediateWake ( - VOID - ); - -#endif diff --git a/MdeModulePkg/Include/Library/S3Lib.h b/MdeModulePkg/Include/Library/S3Lib.h deleted file mode 100644 index fcb8abd802..0000000000 --- a/MdeModulePkg/Include/Library/S3Lib.h +++ /dev/null @@ -1,34 +0,0 @@ -/** @file - S3 library class defines a set of methods related to S3 boot mode. - This library class is no longer used and modules using this library should - directly locate EFI_PEI_S3_RESUME_PPI, defined in the PI 1.2 specification. - -Copyright (c) 2005 - 2010, Intel Corporation. All rights reserved.
-This program and the accompanying materials are licensed and made available under -the terms and conditions of the BSD License that 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 __S3_LIB_H__ -#define __S3_LIB_H__ - -/** - This function is responsible for calling the S3 resume vector in the ACPI Tables. - - @retval EFI_SUCCESS Successfully restored the configuration from S3. - @retval Others Failed to restore the configuration from S3. - -**/ -EFI_STATUS -EFIAPI -AcpiS3ResumeOs ( - VOID - ); - -#endif - diff --git a/MdeModulePkg/Include/Library/SecurityManagementLib.h b/MdeModulePkg/Include/Library/SecurityManagementLib.h deleted file mode 100644 index de87d09c54..0000000000 --- a/MdeModulePkg/Include/Library/SecurityManagementLib.h +++ /dev/null @@ -1,276 +0,0 @@ -/** @file - This library class defines a set of interfaces to abstract the policy of - security measurement by managing the different security measurement services. - The library instances can be implemented according to the different security policy. - -Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.
-This program and the accompanying materials are licensed and made available under -the terms and conditions of the BSD License that 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 __SECURITY_MANAGEMENT_LIB_H__ -#define __SECURITY_MANAGEMENT_LIB_H__ - -// -// Authentication Operation defintions for User Identity (UID), Measured and Secure boot. -// -#define EFI_AUTH_OPERATION_NONE 0x00 -#define EFI_AUTH_OPERATION_VERIFY_IMAGE 0x01 -#define EFI_AUTH_OPERATION_DEFER_IMAGE_LOAD 0x02 -#define EFI_AUTH_OPERATION_MEASURE_IMAGE 0x04 -#define EFI_AUTH_OPERATION_CONNECT_POLICY 0x08 -// -// Authentication State Operation will check the authentication status of a file. -// -#define EFI_AUTH_OPERATION_AUTHENTICATION_STATE 0x10 - -/// -/// Image buffer is required by the security handler. -/// -#define EFI_AUTH_OPERATION_IMAGE_REQUIRED 0x80000000 - -/** - The security handler is used to abstract platform-specific policy - from the DXE core response to an attempt to use a file that returns a - given status for the authentication check from the section extraction protocol. - - The possible responses in a given SAP implementation may include locking - flash upon failure to authenticate, attestation logging for all signed drivers, - and other exception operations. The File parameter allows for possible logging - within the SAP of the driver. - - If File is NULL, then EFI_INVALID_PARAMETER is returned. - - If the file specified by File with an authentication status specified by - AuthenticationStatus is safe for the DXE Core to use, then EFI_SUCCESS is returned. - - If the file specified by File with an authentication status specified by - AuthenticationStatus is not safe for the DXE Core to use under any circumstances, - then EFI_ACCESS_DENIED is returned. - - If the file specified by File with an authentication status specified by - AuthenticationStatus is not safe for the DXE Core to use at the time, but it - might be possible to use it at a future time, then EFI_SECURITY_VIOLATION is - returned. - - FileBuffer will be NULL and FileSize will be 0 if the handler being called - did not set EFI_AUTH_OPERATION_IMAGE_REQUIRED when it was registered. - - @param[in] AuthenticationStatus - The authentication status returned from the security - measurement services for the input file. - @param[in] File The pointer to the device path of the file that is - being dispatched. This will optionally be used for logging. - @param[in] FileBuffer The file buffer matches the input file device path. - @param[in] FileSize The size of File buffer matches the input file device path. - - @retval EFI_SUCCESS The file specified by File did authenticate, and the - platform policy dictates that the DXE Core may use File. - @retval EFI_INVALID_PARAMETER The file is NULL. - @retval EFI_SECURITY_VIOLATION The file specified by File did not authenticate, and - the platform policy dictates that File should be placed - in the untrusted state. A file may be promoted from - the untrusted to the trusted state at a future time - with a call to the Trust() DXE Service. - @retval EFI_ACCESS_DENIED The file specified by File did not authenticate, and - the platform policy dictates that File should not be - used for any purpose. - -**/ -typedef -EFI_STATUS -(EFIAPI *SECURITY_FILE_AUTHENTICATION_STATE_HANDLER)( - IN OUT UINT32 AuthenticationStatus, - IN CONST EFI_DEVICE_PATH_PROTOCOL *File, - IN VOID *FileBuffer, - IN UINTN FileSize - ); - -/** - Register security measurement handler with its operation type. Different - handlers with the same operation can all be registered. - - If SecurityHandler is NULL, then ASSERT(). - If no enough resources available to register new handler, then ASSERT(). - If AuthenticationOperation is not recongnized, then ASSERT(). - If the previous register handler can't be executed before the later register handler, then ASSERT(). - - @param[in] SecurityHandler The security measurement service handler to be registered. - @param[in] AuthenticationOperation Theoperation type is specified for the registered handler. - - @retval EFI_SUCCESS The handlers were registered successfully. -**/ -EFI_STATUS -EFIAPI -RegisterSecurityHandler ( - IN SECURITY_FILE_AUTHENTICATION_STATE_HANDLER SecurityHandler, - IN UINT32 AuthenticationOperation - ); - -/** - Execute registered handlers until one returns an error and that error is returned. - If none of the handlers return an error, then EFI_SUCCESS is returned. - - Before exectue handler, get the image buffer by file device path if a handler - requires the image file. And return the image buffer to each handler when exectue handler. - - The handlers are executed in same order to their registered order. - - @param[in] AuthenticationStatus - This is the authentication type returned from the Section - Extraction protocol. See the Section Extraction Protocol - Specification for details on this type. - @param[in] FilePath This is a pointer to the device path of the file that is - being dispatched. This will optionally be used for logging. - - @retval EFI_SUCCESS The file specified by File authenticated when more - than one security handler services were registered, - or the file did not authenticate when no security - handler service was registered. And the platform policy - dictates that the DXE Core may use File. - @retval EFI_INVALID_PARAMETER File is NULL. - @retval EFI_SECURITY_VIOLATION The file specified by File did not authenticate, and - the platform policy dictates that File should be placed - in the untrusted state. A file may be promoted from - the untrusted to the trusted state at a future time - with a call to the Trust() DXE Service. - @retval EFI_ACCESS_DENIED The file specified by File did not authenticate, and - the platform policy dictates that File should not be - used for any purpose. -**/ -EFI_STATUS -EFIAPI -ExecuteSecurityHandlers ( - IN UINT32 AuthenticationStatus, - IN CONST EFI_DEVICE_PATH_PROTOCOL *FilePath - ); - -/** - The security handler is used to abstracts security-specific functions from the DXE - Foundation of UEFI Image Verification, Trusted Computing Group (TCG) measured boot, - User Identity policy for image loading and consoles, and for purposes of - handling GUIDed section encapsulations. - - @param[in] AuthenticationStatus - The authentication status for the input file. - @param[in] File The pointer to the device path of the file that is - being dispatched. This will optionally be used for logging. - @param[in] FileBuffer A pointer to the buffer with the UEFI file image - @param[in] FileSize The size of File buffer. - @param[in] BootPolicy A boot policy that was used to call LoadImage() UEFI service. - - @retval EFI_SUCCESS The file specified by DevicePath and non-NULL - FileBuffer did authenticate, and the platform policy dictates - that the DXE Foundation may use the file. - @retval EFI_SUCCESS The device path specified by NULL device path DevicePath - and non-NULL FileBuffer did authenticate, and the platform - policy dictates that the DXE Foundation may execute the image in - FileBuffer. - @retval EFI_SUCCESS FileBuffer is NULL and current user has permission to start - UEFI device drivers on the device path specified by DevicePath. - @retval EFI_SECURITY_VIOLATION The file specified by DevicePath and FileBuffer did not - authenticate, and the platform policy dictates that the file should be - placed in the untrusted state. The image has been added to the file - execution table. - @retval EFI_ACCESS_DENIED The file specified by File and FileBuffer did not - authenticate, and the platform policy dictates that the DXE - Foundation may not use File. - @retval EFI_SECURITY_VIOLATION FileBuffer is NULL and the user has no - permission to start UEFI device drivers on the device path specified - by DevicePath. - @retval EFI_SECURITY_VIOLATION FileBuffer is not NULL and the user has no permission to load - drivers from the device path specified by DevicePath. The - image has been added into the list of the deferred images. -**/ -typedef -EFI_STATUS -(EFIAPI *SECURITY2_FILE_AUTHENTICATION_HANDLER) ( - IN UINT32 AuthenticationStatus, - IN CONST EFI_DEVICE_PATH_PROTOCOL *File, - IN VOID *FileBuffer, - IN UINTN FileSize, - IN BOOLEAN BootPolicy - ); - -/** - Register security measurement handler with its operation type. Different - handlers with the same operation can all be registered. - - If SecurityHandler is NULL, then ASSERT(). - If no enough resources available to register new handler, then ASSERT(). - If AuthenticationOperation is not recongnized, then ASSERT(). - If AuthenticationOperation is EFI_AUTH_OPERATION_NONE, then ASSERT(). - If the previous register handler can't be executed before the later register handler, then ASSERT(). - - @param[in] Security2Handler The security measurement service handler to be registered. - @param[in] AuthenticationOperation The operation type is specified for the registered handler. - - @retval EFI_SUCCESS The handlers were registered successfully. -**/ -EFI_STATUS -EFIAPI -RegisterSecurity2Handler ( - IN SECURITY2_FILE_AUTHENTICATION_HANDLER Security2Handler, - IN UINT32 AuthenticationOperation - ); - -/** - Execute registered handlers based on input AuthenticationOperation until - one returns an error and that error is returned. - - If none of the handlers return an error, then EFI_SUCCESS is returned. - The handlers those satisfy AuthenticationOperation will only be executed. - The handlers are executed in same order to their registered order. - - @param[in] AuthenticationOperation - The operation type specifies which handlers will be executed. - @param[in] AuthenticationStatus - The authentication status for the input file. - @param[in] File This is a pointer to the device path of the file that is - being dispatched. This will optionally be used for logging. - @param[in] FileBuffer A pointer to the buffer with the UEFI file image - @param[in] FileSize The size of File buffer. - @param[in] BootPolicy A boot policy that was used to call LoadImage() UEFI service. - - @retval EFI_SUCCESS The file specified by DevicePath and non-NULL - FileBuffer did authenticate, and the platform policy dictates - that the DXE Foundation may use the file. - @retval EFI_SUCCESS The device path specified by NULL device path DevicePath - and non-NULL FileBuffer did authenticate, and the platform - policy dictates that the DXE Foundation may execute the image in - FileBuffer. - @retval EFI_SUCCESS FileBuffer is NULL and current user has permission to start - UEFI device drivers on the device path specified by DevicePath. - @retval EFI_SECURITY_VIOLATION The file specified by DevicePath and FileBuffer did not - authenticate, and the platform policy dictates that the file should be - placed in the untrusted state. The image has been added to the file - execution table. - @retval EFI_ACCESS_DENIED The file specified by File and FileBuffer did not - authenticate, and the platform policy dictates that the DXE - Foundation may not use File. - @retval EFI_SECURITY_VIOLATION FileBuffer is NULL and the user has no - permission to start UEFI device drivers on the device path specified - by DevicePath. - @retval EFI_SECURITY_VIOLATION FileBuffer is not NULL and the user has no permission to load - drivers from the device path specified by DevicePath. The - image has been added into the list of the deferred images. - @retval EFI_INVALID_PARAMETER File and FileBuffer are both NULL. -**/ -EFI_STATUS -EFIAPI -ExecuteSecurity2Handlers ( - IN UINT32 AuthenticationOperation, - IN UINT32 AuthenticationStatus, - IN CONST EFI_DEVICE_PATH_PROTOCOL *File, - IN VOID *FileBuffer, - IN UINTN FileSize, - IN BOOLEAN BootPolicy - ); - -#endif diff --git a/MdeModulePkg/Include/Library/SmmCorePlatformHookLib.h b/MdeModulePkg/Include/Library/SmmCorePlatformHookLib.h deleted file mode 100644 index 773d0615b7..0000000000 --- a/MdeModulePkg/Include/Library/SmmCorePlatformHookLib.h +++ /dev/null @@ -1,50 +0,0 @@ -/** @file - Smm Core Platform Hook Library. This library class defines a set of platform - hooks called by the SMM Core. - -Copyright (c) 2011, Intel Corporation. All rights reserved.
-This program and the accompanying materials are licensed and made available under -the terms and conditions of the BSD License that 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 __SMM_CORE_PLATFORM_HOOK_LIB__ -#define __SMM_CORE_PLATFORM_HOOK_LIB__ - -/** - Performs platform specific tasks before invoking registered SMI handlers. - - This function performs platform specific tasks before invoking registered SMI handlers. - - @retval EFI_SUCCESS The platform hook completes successfully. - @retval Other values The paltform hook cannot complete due to some error. - -**/ -EFI_STATUS -EFIAPI -PlatformHookBeforeSmmDispatch ( - VOID - ); - - -/** - Performs platform specific tasks after invoking registered SMI handlers. - - This function performs platform specific tasks after invoking registered SMI handlers. - - @retval EFI_SUCCESS The platform hook completes successfully. - @retval Other values The paltform hook cannot complete due to some error. - -**/ -EFI_STATUS -EFIAPI -PlatformHookAfterSmmDispatch ( - VOID - ); - -#endif diff --git a/MdeModulePkg/Include/Library/SortLib.h b/MdeModulePkg/Include/Library/SortLib.h deleted file mode 100644 index a891cabee9..0000000000 --- a/MdeModulePkg/Include/Library/SortLib.h +++ /dev/null @@ -1,113 +0,0 @@ -/** @file - Library used for sorting and comparison routines. - - Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.
- 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 __SORT_LIB_H__ -#define __SORT_LIB_H__ - -/** - Prototype for comparison function for any two element types. - - @param[in] Buffer1 The pointer to first buffer. - @param[in] Buffer2 The pointer to second buffer. - - @retval 0 Buffer1 equal to Buffer2. - @return <0 Buffer1 is less than Buffer2. - @return >0 Buffer1 is greater than Buffer2. -**/ -typedef -INTN -(EFIAPI *SORT_COMPARE)( - IN CONST VOID *Buffer1, - IN CONST VOID *Buffer2 - ); - -/** - Function to perform a Quick Sort on a buffer of comparable elements. - - Each element must be equally sized. - - If BufferToSort is NULL, then ASSERT. - If CompareFunction is NULL, then ASSERT. - - If Count is < 2 , then perform no action. - If Size is < 1 , then perform no action. - - @param[in, out] BufferToSort On call, a Buffer of (possibly sorted) elements; - on return, a buffer of sorted elements. - @param[in] Count The number of elements in the buffer to sort. - @param[in] ElementSize The size of an element in bytes. - @param[in] CompareFunction The function to call to perform the comparison - of any two elements. -**/ -VOID -EFIAPI -PerformQuickSort ( - IN OUT VOID *BufferToSort, - IN CONST UINTN Count, - IN CONST UINTN ElementSize, - IN SORT_COMPARE CompareFunction - ); - - -/** - Function to compare 2 device paths for use as CompareFunction. - - @param[in] Buffer1 The pointer to Device Path to compare. - @param[in] Buffer2 The pointer to second DevicePath to compare. - - @retval 0 Buffer1 equal to Buffer2. - @return < 0 Buffer1 is less than Buffer2. - @return > 0 Buffer1 is greater than Buffer2. -**/ -INTN -EFIAPI -DevicePathCompare ( - IN CONST VOID *Buffer1, - IN CONST VOID *Buffer2 - ); - -/** - Function to compare 2 strings without regard to case of the characters. - - @param[in] Buffer1 The pointer to String to compare (CHAR16**). - @param[in] Buffer2 The pointer to second String to compare (CHAR16**). - - @retval 0 Buffer1 equal to Buffer2. - @return < 0 Buffer1 is less than Buffer2. - @return > 0 Buffer1 is greater than Buffer2. -**/ -INTN -EFIAPI -StringNoCaseCompare ( - IN CONST VOID *Buffer1, - IN CONST VOID *Buffer2 - ); - -/** - Function to compare 2 strings. - - @param[in] Buffer1 The pointer to String to compare (CHAR16**). - @param[in] Buffer2 The pointer to second String to compare (CHAR16**). - - @retval 0 Buffer1 equal to Buffer2. - @return < 0 Buffer1 is less than Buffer2. - @return > 0 Buffer1 is greater than Buffer2. -**/ -INTN -EFIAPI -StringCompare ( - IN CONST VOID *Buffer1, - IN CONST VOID *Buffer2 - ); - -#endif //__SORT_LIB_H__ diff --git a/MdeModulePkg/Include/Library/TcpIoLib.h b/MdeModulePkg/Include/Library/TcpIoLib.h deleted file mode 100644 index 2871f6747e..0000000000 --- a/MdeModulePkg/Include/Library/TcpIoLib.h +++ /dev/null @@ -1,253 +0,0 @@ -/** @file - This library is used to share code between UEFI network stack modules. - It provides the helper routines to access TCP service. - -Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.
-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 _TCP_IO_H_ -#define _TCP_IO_H_ - - -#include -#include - -#include - -#define TCP_VERSION_4 IP_VERSION_4 -#define TCP_VERSION_6 IP_VERSION_6 - -/// -/// 10 seconds -/// -#define TCP_GET_MAPPING_TIMEOUT 100000000U - - -typedef struct { - EFI_IPv4_ADDRESS LocalIp; - EFI_IPv4_ADDRESS SubnetMask; - EFI_IPv4_ADDRESS Gateway; - - UINT16 StationPort; - EFI_IPv4_ADDRESS RemoteIp; - UINT16 RemotePort; - BOOLEAN ActiveFlag; -} TCP4_IO_CONFIG_DATA; - -typedef struct { - UINT16 StationPort; - EFI_IPv6_ADDRESS RemoteIp; - UINT16 RemotePort; - BOOLEAN ActiveFlag; -} TCP6_IO_CONFIG_DATA; - -typedef union { - TCP4_IO_CONFIG_DATA Tcp4IoConfigData; - TCP6_IO_CONFIG_DATA Tcp6IoConfigData; -} TCP_IO_CONFIG_DATA; - -typedef union { - EFI_TCP4_PROTOCOL *Tcp4; - EFI_TCP6_PROTOCOL *Tcp6; -} TCP_IO_PROTOCOL; - -typedef union { - EFI_TCP4_CONNECTION_TOKEN Tcp4Token; - EFI_TCP6_CONNECTION_TOKEN Tcp6Token; -} TCP_IO_CONNECTION_TOKEN; - -typedef union { - EFI_TCP4_IO_TOKEN Tcp4Token; - EFI_TCP6_IO_TOKEN Tcp6Token; -} TCP_IO_IO_TOKEN; - -typedef union { - EFI_TCP4_CLOSE_TOKEN Tcp4Token; - EFI_TCP6_CLOSE_TOKEN Tcp6Token; -} TCP_IO_CLOSE_TOKEN; - -typedef union { - EFI_TCP4_LISTEN_TOKEN Tcp4Token; - EFI_TCP6_LISTEN_TOKEN Tcp6Token; -} TCP_IO_LISTEN_TOKEN; - - -typedef struct { - UINT8 TcpVersion; - EFI_HANDLE Image; - EFI_HANDLE Controller; - EFI_HANDLE Handle; - - TCP_IO_PROTOCOL Tcp; - TCP_IO_PROTOCOL NewTcp; - TCP_IO_CONNECTION_TOKEN ConnToken; - TCP_IO_IO_TOKEN TxToken; - TCP_IO_IO_TOKEN RxToken; - TCP_IO_CLOSE_TOKEN CloseToken; - TCP_IO_LISTEN_TOKEN ListenToken; - - BOOLEAN IsConnDone; - BOOLEAN IsTxDone; - BOOLEAN IsRxDone; - BOOLEAN IsCloseDone; - BOOLEAN IsListenDone; -} TCP_IO; - -/** - Create a TCP socket with the specified configuration data. - - @param[in] Image The handle of the driver image. - @param[in] Controller The handle of the controller. - @param[in] TcpVersion The version of Tcp, TCP_VERSION_4 or TCP_VERSION_6. - @param[in] ConfigData The Tcp configuration data. - @param[out] TcpIo The TcpIo. - - @retval EFI_SUCCESS The TCP socket is created and configured. - @retval EFI_INVALID_PARAMETER One or more parameters are invalid. - @retval EFI_UNSUPPORTED One or more of the control options are not - supported in the implementation. - @retval EFI_OUT_OF_RESOURCES Failed to allocate memory. - @retval Others Failed to create the TCP socket or configure it. - -**/ -EFI_STATUS -EFIAPI -TcpIoCreateSocket ( - IN EFI_HANDLE Image, - IN EFI_HANDLE Controller, - IN UINT8 TcpVersion, - IN TCP_IO_CONFIG_DATA *ConfigData, - OUT TCP_IO *TcpIo - ); - -/** - Destroy the socket. - - @param[in] TcpIo The TcpIo which wraps the socket to be destroyed. - -**/ -VOID -EFIAPI -TcpIoDestroySocket ( - IN TCP_IO *TcpIo - ); - -/** - Connect to the other endpoint of the TCP socket. - - @param[in, out] TcpIo The TcpIo wrapping the TCP socket. - @param[in] Timeout The time to wait for connection done. - - @retval EFI_SUCCESS Connect to the other endpoint of the TCP socket - successfully. - @retval EFI_TIMEOUT Failed to connect to the other endpoint of the - TCP socket in the specified time period. - @retval EFI_INVALID_PARAMETER One or more parameters are invalid. - @retval EFI_UNSUPPORTED One or more of the control options are not - supported in the implementation. - @retval Others Other errors as indicated. - -**/ -EFI_STATUS -EFIAPI -TcpIoConnect ( - IN OUT TCP_IO *TcpIo, - IN EFI_EVENT Timeout - ); - -/** - Accept the incomding request from the other endpoint of the TCP socket. - - @param[in, out] TcpIo The TcpIo wrapping the TCP socket. - @param[in] Timeout The time to wait for connection done. - - - @retval EFI_SUCCESS Connect to the other endpoint of the TCP socket - successfully. - @retval EFI_INVALID_PARAMETER One or more parameters are invalid. - @retval EFI_UNSUPPORTED One or more of the control options are not - supported in the implementation. - - @retval EFI_TIMEOUT Failed to connect to the other endpoint of the - TCP socket in the specified time period. - @retval Others Other errors as indicated. - -**/ -EFI_STATUS -EFIAPI -TcpIoAccept ( - IN OUT TCP_IO *TcpIo, - IN EFI_EVENT Timeout - ); - -/** - Reset the socket. - - @param[in, out] TcpIo The TcpIo wrapping the TCP socket. - -**/ -VOID -EFIAPI -TcpIoReset ( - IN OUT TCP_IO *TcpIo - ); - -/** - Transmit the Packet to the other endpoint of the socket. - - @param[in] TcpIo The TcpIo wrapping the TCP socket. - @param[in] Packet The packet to transmit. - - @retval EFI_SUCCESS The packet is trasmitted. - @retval EFI_INVALID_PARAMETER One or more parameters are invalid. - @retval EFI_UNSUPPORTED One or more of the control options are not - supported in the implementation. - @retval EFI_OUT_OF_RESOURCES Failed to allocate memory. - @retval EFI_DEVICE_ERROR An unexpected network or system error occurred. - @retval Others Other errors as indicated. - -**/ -EFI_STATUS -EFIAPI -TcpIoTransmit ( - IN TCP_IO *TcpIo, - IN NET_BUF *Packet - ); - -/** - Receive data from the socket. - - @param[in, out] TcpIo The TcpIo which wraps the socket to be destroyed. - @param[in] Packet The buffer to hold the data copy from the socket rx buffer. - @param[in] AsyncMode Is this receive asyncronous or not. - @param[in] Timeout The time to wait for receiving the amount of data the Packet - can hold. - - @retval EFI_SUCCESS The required amount of data is received from the socket. - @retval EFI_INVALID_PARAMETER One or more parameters are invalid. - @retval EFI_DEVICE_ERROR An unexpected network or system error occurred. - @retval EFI_OUT_OF_RESOURCES Failed to allocate momery. - @retval EFI_TIMEOUT Failed to receive the required amount of data in the - specified time period. - @retval Others Other errors as indicated. - -**/ -EFI_STATUS -EFIAPI -TcpIoReceive ( - IN OUT TCP_IO *TcpIo, - IN NET_BUF *Packet, - IN BOOLEAN AsyncMode, - IN EFI_EVENT Timeout - ); - -#endif - diff --git a/MdeModulePkg/Include/Library/TpmMeasurementLib.h b/MdeModulePkg/Include/Library/TpmMeasurementLib.h deleted file mode 100644 index 68d35aa680..0000000000 --- a/MdeModulePkg/Include/Library/TpmMeasurementLib.h +++ /dev/null @@ -1,44 +0,0 @@ -/** @file - This library is used by other modules to measure data to TPM. - -Copyright (c) 2012, Intel Corporation. All rights reserved.
-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 _TPM_MEASUREMENT_LIB_H_ -#define _TPM_MEASUREMENT_LIB_H_ - -/** - Tpm measure and log data, and extend the measurement result into a specific PCR. - - @param[in] PcrIndex PCR Index. - @param[in] EventType Event type. - @param[in] EventLog Measurement event log. - @param[in] LogLen Event log length in bytes. - @param[in] HashData The start of the data buffer to be hashed, extended. - @param[in] HashDataLen The length, in bytes, of the buffer referenced by HashData - - @retval EFI_SUCCESS Operation completed successfully. - @retval EFI_UNSUPPORTED TPM device not available. - @retval EFI_OUT_OF_RESOURCES Out of memory. - @retval EFI_DEVICE_ERROR The operation was unsuccessful. -**/ -EFI_STATUS -EFIAPI -TpmMeasureAndLogData ( - IN UINT32 PcrIndex, - IN UINT32 EventType, - IN VOID *EventLog, - IN UINT32 LogLen, - IN VOID *HashData, - IN UINT64 HashDataLen - ); - -#endif diff --git a/MdeModulePkg/Include/Library/UdpIoLib.h b/MdeModulePkg/Include/Library/UdpIoLib.h deleted file mode 100644 index e0b44ce18e..0000000000 --- a/MdeModulePkg/Include/Library/UdpIoLib.h +++ /dev/null @@ -1,355 +0,0 @@ -/** @file - This library is used to share code between UEFI network stack modules. - It provides the helper routines to access UDP service. It is used by both DHCP and MTFTP. - -Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.
-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 _UDP_IO_H_ -#define _UDP_IO_H_ - -#include -#include - -#include - -typedef struct _UDP_IO UDP_IO; - -/// -/// Signatures used by UdpIo Library. -/// - -#define UDP_IO_RX_SIGNATURE SIGNATURE_32 ('U', 'D', 'P', 'R') -#define UDP_IO_TX_SIGNATURE SIGNATURE_32 ('U', 'D', 'P', 'T') -#define UDP_IO_SIGNATURE SIGNATURE_32 ('U', 'D', 'P', 'I') - -#define UDP_IO_UDP4_VERSION 4 -#define UDP_IO_UDP6_VERSION 6 - -/// -/// The UDP address pair. -/// -typedef struct { - EFI_IP_ADDRESS LocalAddr; - UINT16 LocalPort; - EFI_IP_ADDRESS RemoteAddr; - UINT16 RemotePort; -} UDP_END_POINT; - -/** - Prototype called when receiving or sending packets to or from a UDP point. - - This prototype is used by both receive and sending when calling - UdpIoRecvDatagram() or UdpIoSendDatagram(). When receiving, Netbuf is allocated by the - UDP access point and released by the user. When sending, the user allocates the the NetBuf, - which is then provided to the callback as a reference. - - @param[in] Packet The packet received or sent. - @param[in] EndPoint The UDP address pair corresponds to the UDP IO. - @param[in] IoStatus The packet receiving or sending status. - @param[in] Context The user-defined data when calling UdpIoRecvDatagram() or - UdpIoSendDatagram(). -**/ -typedef -VOID -(EFIAPI *UDP_IO_CALLBACK) ( - IN NET_BUF *Packet, - IN UDP_END_POINT *EndPoint, - IN EFI_STATUS IoStatus, - IN VOID *Context - ); - -/// -/// This structure is used internally by the UdpIo Library. -/// -/// Each receive request is wrapped in an UDP_RX_TOKEN. Upon completion, -/// the CallBack will be called. Only one receive request is sent to UDP at a -/// time. HeadLen gives the length of the application's header. UDP_IO will -/// make the application's header continuous before delivering up. -/// -typedef union { - EFI_UDP4_COMPLETION_TOKEN Udp4; - EFI_UDP6_COMPLETION_TOKEN Udp6; -} UDP_COMPLETION_TOKEN; - -typedef struct { - UINT32 Signature; - UDP_IO *UdpIo; - - UDP_IO_CALLBACK CallBack; - VOID *Context; - UINT32 HeadLen; - - UDP_COMPLETION_TOKEN Token; -} UDP_RX_TOKEN; - - - -/// -/// This structure is used internally by UdpIo Library. -/// -/// Each transmit request is wrapped in an UDP_TX_TOKEN. Upon completion, -/// the CallBack will be called. There can be several transmit requests. All transmit -/// requests are linked in a list. -/// - -typedef union { - EFI_UDP4_SESSION_DATA Udp4; - EFI_UDP6_SESSION_DATA Udp6; -} UDP_SESSION_DATA; - -typedef union { - EFI_UDP4_TRANSMIT_DATA Udp4; - EFI_UDP6_TRANSMIT_DATA Udp6; -} UDP_TRANSMIT_DATA; - -typedef struct { - UINT32 Signature; - LIST_ENTRY Link; - UDP_IO *UdpIo; - UDP_IO_CALLBACK CallBack; - NET_BUF *Packet; - VOID *Context; - EFI_IPv4_ADDRESS Gateway; - UDP_SESSION_DATA Session; - UDP_COMPLETION_TOKEN Token; - UDP_TRANSMIT_DATA Data; -} UDP_TX_TOKEN; - -/// -/// Type defined as UDP_IO. -/// -/// This data structure wraps the UDP instance and configuration. -/// UdpIo Library uses this structure for all Udp4 or Udp6 operations. -/// -struct _UDP_IO { - UINT32 Signature; - LIST_ENTRY Link; - INTN RefCnt; - UINT8 UdpVersion; - - // - // Handle used to create/destroy UDP child - // - EFI_HANDLE Controller; - EFI_HANDLE Image; - EFI_HANDLE UdpHandle; - - EFI_SIMPLE_NETWORK_MODE SnpMode; - - LIST_ENTRY SentDatagram; ///< A list of UDP_TX_TOKEN. - UDP_RX_TOKEN *RecvRequest; - - union { - EFI_UDP4_PROTOCOL *Udp4; - EFI_UDP6_PROTOCOL *Udp6; - } Protocol; - - union { - EFI_UDP4_CONFIG_DATA Udp4; - EFI_UDP6_CONFIG_DATA Udp6; - } Config; -}; - -/** - The prototype called when UdpIo Library configures a UDP instance. - - The prototype is set and called when creating a UDP_IO in UdpIoCreatePort(). - - @param[in] UdpIo The UDP_IO to configure. - @param[in] Context The user-defined data when calling UdpIoCreatePort(). - - @retval EFI_SUCCESS The configuration succeeded. - @retval Others The UDP_IO fails to configure indicating - UdpIoCreatePort() should fail. -**/ -typedef -EFI_STATUS -(EFIAPI *UDP_IO_CONFIG) ( - IN UDP_IO *UdpIo, - IN VOID *Context - ); - -/** - The select function to decide whether to cancel the UDP_TX_TOKEN. - - @param[in] Token The UDP_TX_TOKEN to decide whether to cancel. - @param[in] Context User-defined data in UdpIoCancelDgrams(). - - @retval TRUE Cancel the UDP_TX_TOKEN. - @retval FALSE Do not cancel this UDP_TX_TOKEN. - -**/ -typedef -BOOLEAN -(EFIAPI *UDP_IO_TO_CANCEL) ( - IN UDP_TX_TOKEN *Token, - IN VOID *Context - ); - -/** - Cancel all the sent datagram that pass the selection criteria of ToCancel. - If ToCancel is NULL, all the datagrams are cancelled. - - @param[in] UdpIo The UDP_IO to cancel packet. - @param[in] IoStatus The IoStatus to return to the packet owners. - @param[in] ToCancel The select funtion to test whether to cancel this - packet or not. - @param[in] Context The opaque parameter to the ToCancel. - -**/ -VOID -EFIAPI -UdpIoCancelDgrams ( - IN UDP_IO *UdpIo, - IN EFI_STATUS IoStatus, - IN UDP_IO_TO_CANCEL ToCancel, OPTIONAL - IN VOID *Context - ); - -/** - Creates a UDP_IO to access the UDP service. It creates and configures - a UDP child. - - It locates the UDP service binding prototype on the Controller parameter - uses the UDP service binding prototype to create a UDP child (also known as - a UDP instance) configures the UDP child by calling Configure function prototype. - Any failures in creating or configuring the UDP child return NULL for failure. - - @param[in] Controller The controller that has the UDP service binding. - protocol installed. - @param[in] ImageHandle The image handle for the driver. - @param[in] Configure The function to configure the created UDP child. - @param[in] UdpVersion The UDP protocol version, UDP4 or UDP6. - @param[in] Context The opaque parameter for the Configure funtion. - - @return The newly-created UDP_IO, or NULL if failed. - -**/ -UDP_IO * -EFIAPI -UdpIoCreateIo ( - IN EFI_HANDLE Controller, - IN EFI_HANDLE ImageHandle, - IN UDP_IO_CONFIG Configure, - IN UINT8 UdpVersion, - IN VOID *Context - ); - -/** - Free the UDP_IO and all its related resources. - - The function cancels all sent datagrams and receive requests. - - @param[in] UdpIo The UDP_IO to free. - - @retval EFI_SUCCESS The UDP_IO is freed. - -**/ -EFI_STATUS -EFIAPI -UdpIoFreeIo ( - IN UDP_IO *UdpIo - ); - -/** - Cleans up the UDP_IO without freeing it. Call this function - if you intend to later re-use the UDP_IO. - - This function releases all transmitted datagrams and receive requests and configures NULL for the UDP instance. - - @param[in] UdpIo The UDP_IO to clean up. - -**/ -VOID -EFIAPI -UdpIoCleanIo ( - IN UDP_IO *UdpIo - ); - -/** - Send a packet through the UDP_IO. - - The packet will be wrapped in UDP_TX_TOKEN. Function Callback will be called - when the packet is sent. The optional parameter EndPoint overrides the default - address pair if specified. - - @param[in] UdpIo The UDP_IO to send the packet through. - @param[in] Packet The packet to send. - @param[in] EndPoint The local and remote access point. Override the - default address pair set during configuration. - @param[in] Gateway The gateway to use. - @param[in] CallBack The function being called when packet is - transmitted or failed. - @param[in] Context The opaque parameter passed to CallBack. - - @retval EFI_OUT_OF_RESOURCES Failed to allocate resource for the packet. - @retval EFI_SUCCESS The packet is successfully delivered to UDP for - transmission. - -**/ -EFI_STATUS -EFIAPI -UdpIoSendDatagram ( - IN UDP_IO *UdpIo, - IN NET_BUF *Packet, - IN UDP_END_POINT *EndPoint OPTIONAL, - IN EFI_IP_ADDRESS *Gateway OPTIONAL, - IN UDP_IO_CALLBACK CallBack, - IN VOID *Context - ); - -/** - Cancel a single sent datagram. - - @param[in] UdpIo The UDP_IO from which to cancel the packet - @param[in] Packet The packet to cancel - -**/ -VOID -EFIAPI -UdpIoCancelSentDatagram ( - IN UDP_IO *UdpIo, - IN NET_BUF *Packet - ); - -/** - Issue a receive request to the UDP_IO. - - This function is called when upper-layer needs packet from UDP for processing. - Only one receive request is acceptable at a time. Therefore, one common usage model is - to invoke this function inside its Callback function when the former packet - is processed. - - @param[in] UdpIo The UDP_IO to receive the packet from. - @param[in] CallBack The call back function to execute when the packet - is received. - @param[in] Context The opaque context passed to Callback. - @param[in] HeadLen The length of the upper-layer's protocol header. - - @retval EFI_ALREADY_STARTED There is already a pending receive request. Only - one receive request is supported at a time. - @retval EFI_OUT_OF_RESOURCES Failed to allocate needed resources. - @retval EFI_SUCCESS The receive request was issued successfully. - @retval EFI_UNSUPPORTED The UDP version in UDP_IO is not supported. - -**/ -EFI_STATUS -EFIAPI -UdpIoRecvDatagram ( - IN UDP_IO *UdpIo, - IN UDP_IO_CALLBACK CallBack, - IN VOID *Context, - IN UINT32 HeadLen - ); - -#endif - diff --git a/MdeModulePkg/Include/Library/UefiBootManagerLib.h b/MdeModulePkg/Include/Library/UefiBootManagerLib.h deleted file mode 100644 index 5538d90738..0000000000 --- a/MdeModulePkg/Include/Library/UefiBootManagerLib.h +++ /dev/null @@ -1,711 +0,0 @@ -/** @file - Provide Boot Manager related library APIs. - -Copyright (c) 2011 - 2015, Intel Corporation. All rights reserved.
-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 _UEFI_BOOT_MANAGER_LIB_H_ -#define _UEFI_BOOT_MANAGER_LIB_H_ - -#include -#include - -// -// Boot Manager load option library functions. -// - -// -// Load Option Type -// -typedef enum { - LoadOptionTypeDriver, - LoadOptionTypeSysPrep, - LoadOptionTypeBoot, - LoadOptionTypeMax -} EFI_BOOT_MANAGER_LOAD_OPTION_TYPE; - -typedef enum { - LoadOptionNumberMax = 0x10000, - LoadOptionNumberUnassigned = LoadOptionNumberMax -} EFI_BOOT_MANAGER_LOAD_OPTION_NUMBER; - -// -// Common structure definition for DriverOption and BootOption -// -typedef struct { - // - // Data read from UEFI NV variables - // - UINTN OptionNumber; // #### numerical value, could be LoadOptionNumberUnassigned - EFI_BOOT_MANAGER_LOAD_OPTION_TYPE OptionType; // LoadOptionTypeBoot or LoadOptionTypeDriver - UINT32 Attributes; // Load Option Attributes - CHAR16 *Description; // Load Option Description - EFI_DEVICE_PATH_PROTOCOL *FilePath; // Load Option Device Path - UINT8 *OptionalData; // Load Option optional data to pass into image - UINT32 OptionalDataSize; // Load Option size of OptionalData - EFI_GUID VendorGuid; - - // - // Used at runtime - // - EFI_STATUS Status; // Status returned from boot attempt gBS->StartImage () - CHAR16 *ExitData; // Exit data returned from gBS->StartImage () - UINTN ExitDataSize; // Size of ExitData -} EFI_BOOT_MANAGER_LOAD_OPTION; - -/** - Returns an array of load options based on the EFI variable - L"BootOrder"/L"DriverOrder" and the L"Boot####"/L"Driver####" variables impled by it. - #### is the hex value of the UINT16 in each BootOrder/DriverOrder entry. - - @param LoadOptionCount Returns number of entries in the array. - @param LoadOptionType The type of the load option. - - @retval NULL No load options exist. - @retval !NULL Array of load option entries. - -**/ -EFI_BOOT_MANAGER_LOAD_OPTION * -EFIAPI -EfiBootManagerGetLoadOptions ( - OUT UINTN *LoadOptionCount, - IN EFI_BOOT_MANAGER_LOAD_OPTION_TYPE LoadOptionType - ); - -/** - Free an array of load options returned from EfiBootManagerGetLoadOptions(). - - @param LoadOptions Pointer to the array of load options to free. - @param LoadOptionCount Number of array entries in LoadOptions. - - @return EFI_SUCCESS LoadOptions was freed. - @return EFI_INVALID_PARAMETER LoadOptions is NULL. -**/ -EFI_STATUS -EFIAPI -EfiBootManagerFreeLoadOptions ( - IN EFI_BOOT_MANAGER_LOAD_OPTION *LoadOptions, - IN UINTN LoadOptionCount - ); - -/** - Initialize a load option. - - @param Option Pointer to the load option to be initialized. - @param OptionNumber Option number of the load option. - @param OptionType Type of the load option. - @param Attributes Attributes of the load option. - @param Description Description of the load option. - @param FilePath Device path of the load option. - @param OptionalData Optional data of the load option. - @param OptionalDataSize Size of the optional data of the load option. - - @retval EFI_SUCCESS The load option was initialized successfully. - @retval EFI_INVALID_PARAMETER Option, Description or FilePath is NULL. -**/ -EFI_STATUS -EFIAPI -EfiBootManagerInitializeLoadOption ( - IN OUT EFI_BOOT_MANAGER_LOAD_OPTION *Option, - IN UINTN OptionNumber, - IN EFI_BOOT_MANAGER_LOAD_OPTION_TYPE OptionType, - IN UINT32 Attributes, - IN CHAR16 *Description, - IN EFI_DEVICE_PATH_PROTOCOL *FilePath, - IN UINT8 *OptionalData, - IN UINT32 OptionalDataSize - ); - -/** - Free a load option created by EfiBootManagerInitializeLoadOption() - or EfiBootManagerVariableToLoadOption(). - - @param LoadOption Pointer to the load option to free. - CONCERN: Check Boot#### instead of BootOrder, optimize, spec clarify - @return EFI_SUCCESS LoadOption was freed. - @return EFI_INVALID_PARAMETER LoadOption is NULL. - -**/ -EFI_STATUS -EFIAPI -EfiBootManagerFreeLoadOption ( - IN EFI_BOOT_MANAGER_LOAD_OPTION *LoadOption - ); - -/** - Initialize the load option from the VariableName. - - @param VariableName EFI Variable name which could be Boot#### or - Driver#### - @param LoadOption Pointer to the load option to be initialized - - @retval EFI_SUCCESS The option was created - @retval EFI_INVALID_PARAMETER VariableName or LoadOption is NULL. - @retval EFI_NOT_FOUND The variable specified by VariableName cannot be found. -**/ -EFI_STATUS -EFIAPI -EfiBootManagerVariableToLoadOption ( - IN CHAR16 *VariableName, - IN OUT EFI_BOOT_MANAGER_LOAD_OPTION *LoadOption - ); - -/** - Create the Boot#### or Driver#### variable from the load option. - - @param LoadOption Pointer to the load option. - - @retval EFI_SUCCESS The variable was created. - @retval Others Error status returned by RT->SetVariable. -**/ -EFI_STATUS -EFIAPI -EfiBootManagerLoadOptionToVariable ( - IN CONST EFI_BOOT_MANAGER_LOAD_OPTION *LoadOption - ); - -/** - This function will update the Boot####/Driver####/SysPrep#### and the - BootOrder/DriverOrder/SysPrepOrder to add a new load option. - - @param Option Pointer to load option to add. - @param Position Position of the new load option to put in the BootOrder/DriverOrder/SysPrepOrder. - - @retval EFI_SUCCESS The load option has been successfully added. - @retval Others Error status returned by RT->SetVariable. -**/ -EFI_STATUS -EFIAPI -EfiBootManagerAddLoadOptionVariable ( - IN EFI_BOOT_MANAGER_LOAD_OPTION *Option, - IN UINTN Position - ); - -/** - Delete the load option according to the OptionNumber and OptionType. - - Only the BootOrder/DriverOrder is updated to remove the reference of the OptionNumber. - - @param OptionNumber Option number of the load option. - @param OptionType Type of the load option. - - @retval EFI_NOT_FOUND The load option cannot be found. - @retval EFI_SUCCESS The load option was deleted. -**/ -EFI_STATUS -EFIAPI -EfiBootManagerDeleteLoadOptionVariable ( - IN UINTN OptionNumber, - IN EFI_BOOT_MANAGER_LOAD_OPTION_TYPE OptionType - ); - -/** - Sort the load options. The DriverOrder/BootOrder variables will be re-created to - reflect the new order. - - @param OptionType The type of the load option. - @param CompareFunction The comparator function pointer. -**/ -VOID -EFIAPI -EfiBootManagerSortLoadOptionVariable ( - IN EFI_BOOT_MANAGER_LOAD_OPTION_TYPE OptionType, - IN SORT_COMPARE CompareFunction - ); - -// -// Boot Manager hot key library functions. -// - -#pragma pack(1) -/// -/// EFI Key Option. -/// -typedef struct { - /// - /// Specifies options about how the key will be processed. - /// - EFI_BOOT_KEY_DATA KeyData; - /// - /// The CRC-32 which should match the CRC-32 of the entire EFI_LOAD_OPTION to - /// which BootOption refers. If the CRC-32s do not match this value, then this key - /// option is ignored. - /// - UINT32 BootOptionCrc; - /// - /// The Boot#### option which will be invoked if this key is pressed and the boot option - /// is active (LOAD_OPTION_ACTIVE is set). - /// - UINT16 BootOption; - /// - /// The key codes to compare against those returned by the - /// EFI_SIMPLE_TEXT_INPUT and EFI_SIMPLE_TEXT_INPUT_EX protocols. - /// The number of key codes (0-3) is specified by the EFI_KEY_CODE_COUNT field in KeyOptions. - /// - EFI_INPUT_KEY Keys[3]; - UINT16 OptionNumber; -} EFI_BOOT_MANAGER_KEY_OPTION; -#pragma pack() - -/** - Start the hot key service so that the key press can trigger the boot option. - - @param HotkeyTriggered Return the waitable event and it will be signaled - when a valid hot key is pressed. - - @retval EFI_SUCCESS The hot key service is started. -**/ -EFI_STATUS -EFIAPI -EfiBootManagerStartHotkeyService ( - IN EFI_EVENT *HotkeyTriggered - ); - -// -// Modifier for EfiBootManagerAddKeyOptionVariable and EfiBootManagerDeleteKeyOptionVariable -// -#define EFI_BOOT_MANAGER_SHIFT_PRESSED 0x00000001 -#define EFI_BOOT_MANAGER_CONTROL_PRESSED 0x00000002 -#define EFI_BOOT_MANAGER_ALT_PRESSED 0x00000004 -#define EFI_BOOT_MANAGER_LOGO_PRESSED 0x00000008 -#define EFI_BOOT_MANAGER_MENU_KEY_PRESSED 0x00000010 -#define EFI_BOOT_MANAGER_SYS_REQ_PRESSED 0x00000020 - -/** - Add the key option. - It adds the key option variable and the key option takes affect immediately. - - @param AddedOption Return the added key option. - @param BootOptionNumber The boot option number for the key option. - @param Modifier Key shift state. - @param ... Parameter list of pointer of EFI_INPUT_KEY. - - @retval EFI_SUCCESS The key option is added. - @retval EFI_ALREADY_STARTED The hot key is already used by certain key option. -**/ -EFI_STATUS -EFIAPI -EfiBootManagerAddKeyOptionVariable ( - OUT EFI_BOOT_MANAGER_KEY_OPTION *AddedOption, OPTIONAL - IN UINT16 BootOptionNumber, - IN UINT32 Modifier, - ... - ); - -/** - Delete the Key Option variable and unregister the hot key - - @param DeletedOption Return the deleted key options. - @param Modifier Key shift state. - @param ... Parameter list of pointer of EFI_INPUT_KEY. - - @retval EFI_SUCCESS The key option is deleted. - @retval EFI_NOT_FOUND The key option cannot be found. -**/ -EFI_STATUS -EFIAPI -EfiBootManagerDeleteKeyOptionVariable ( - IN EFI_BOOT_MANAGER_KEY_OPTION *DeletedOption, OPTIONAL - IN UINT32 Modifier, - ... - ); - -/** - Register the key option to exit the waiting of the Boot Manager timeout. - Platform should ensure that the continue key option isn't conflict with - other boot key options. - - @param Modifier Key shift state. - @param ... Parameter list of pointer of EFI_INPUT_KEY. - - @retval EFI_SUCCESS Successfully register the continue key option. - @retval EFI_ALREADY_STARTED The continue key option is already registered. -**/ -EFI_STATUS -EFIAPI -EfiBootManagerRegisterContinueKeyOption ( - IN UINT32 Modifier, - ... - ); - -/** - Try to boot the boot option triggered by hot key. -**/ -VOID -EFIAPI -EfiBootManagerHotkeyBoot ( - VOID - ); -// -// Boot Manager boot library functions. -// - -/** - The function creates boot options for all possible bootable medias in the following order: - 1. Removable BlockIo - The boot option only points to the removable media - device, like USB key, DVD, Floppy etc. - 2. Fixed BlockIo - The boot option only points to a Fixed blockIo device, - like HardDisk. - 3. Non-BlockIo SimpleFileSystem - The boot option points to a device supporting - SimpleFileSystem Protocol, but not supporting BlockIo - protocol. - 4. LoadFile - The boot option points to the media supporting - LoadFile protocol. - Reference: UEFI Spec chapter 3.3 Boot Option Variables Default Boot Behavior - - The function won't delete the boot option not added by itself. -**/ -VOID -EFIAPI -EfiBootManagerRefreshAllBootOption ( - VOID - ); - -/** - Attempt to boot the EFI boot option. This routine sets L"BootCurent" and - signals the EFI ready to boot event. If the device path for the option starts - with a BBS device path a legacy boot is attempted. Short form device paths are - also supported via this rountine. A device path starting with - MEDIA_HARDDRIVE_DP, MSG_USB_WWID_DP, MSG_USB_CLASS_DP gets expaned out - to find the first device that matches. If the BootOption Device Path - fails the removable media boot algorithm is attempted (\EFI\BOOTIA32.EFI, - \EFI\BOOTX64.EFI,... only one file type is tried per processor type) - - @param BootOption Boot Option to try and boot. - On return, BootOption->Status contains the boot status: - EFI_SUCCESS BootOption was booted - EFI_UNSUPPORTED BootOption isn't supported. - EFI_NOT_FOUND The BootOption was not found on the system - Others BootOption failed with this error status - -**/ -VOID -EFIAPI -EfiBootManagerBoot ( - IN EFI_BOOT_MANAGER_LOAD_OPTION *BootOption - ); - -/** - Return the Boot Manager Menu. - - @param BootOption Return the Boot Manager Menu. - - @retval EFI_SUCCESS The Boot Manager Menu is successfully returned. - @retval EFI_NOT_FOUND The Boot Manager Menu is not found. -**/ -EFI_STATUS -EFIAPI -EfiBootManagerGetBootManagerMenu ( - EFI_BOOT_MANAGER_LOAD_OPTION *BootOption - ); - -/** - The function enumerates all the legacy boot options, creates them and - registers them in the BootOrder variable. -**/ -typedef -VOID -(EFIAPI *EFI_BOOT_MANAGER_REFRESH_LEGACY_BOOT_OPTION) ( - VOID - ); - -/** - The function boots a legacy boot option. -**/ -typedef -VOID -(EFIAPI *EFI_BOOT_MANAGER_LEGACY_BOOT) ( - IN EFI_BOOT_MANAGER_LOAD_OPTION *BootOption - ); - -/** - The function registers the legacy boot support capabilities. - - @param RefreshLegacyBootOption The function pointer to create all the legacy boot options. - @param LegacyBoot The function pointer to boot the legacy boot option. -**/ -VOID -EFIAPI -EfiBootManagerRegisterLegacyBootSupport ( - EFI_BOOT_MANAGER_REFRESH_LEGACY_BOOT_OPTION RefreshLegacyBootOption, - EFI_BOOT_MANAGER_LEGACY_BOOT LegacyBoot - ); - -/** - Return the platform provided boot option description for the controller. - - @param Handle Controller handle. - @param DefaultDescription Default boot description provided by core. - - @return The callee allocated description string - or NULL if the handler wants to use DefaultDescription. -**/ -typedef -CHAR16 * -(EFIAPI *EFI_BOOT_MANAGER_BOOT_DESCRIPTION_HANDLER) ( - IN EFI_HANDLE Handle, - IN CONST CHAR16 *DefaultDescription - ); - -/** - Register the platform provided boot description handler. - - @param Handler The platform provided boot description handler - - @retval EFI_SUCCESS The handler was registered successfully. - @retval EFI_ALREADY_STARTED The handler was already registered. - @retval EFI_OUT_OF_RESOURCES There is not enough resource to perform the registration. -**/ -EFI_STATUS -EFIAPI -EfiBootManagerRegisterBootDescriptionHandler ( - IN EFI_BOOT_MANAGER_BOOT_DESCRIPTION_HANDLER Handler - ); - -// -// Boot Manager connect and disconnect library functions -// - -/** - This function will connect all the system driver to controller - first, and then special connect the default console, this make - sure all the system controller available and the platform default - console connected. -**/ -VOID -EFIAPI -EfiBootManagerConnectAll ( - VOID - ); - -/** - This function will create all handles associate with every device - path node. If the handle associate with one device path node can not - be created successfully, then still give chance to do the dispatch, - which load the missing drivers if possible. - - @param DevicePathToConnect The device path which will be connected, it can be - a multi-instance device path - @param MatchingHandle Return the controller handle closest to the DevicePathToConnect - - @retval EFI_SUCCESS All handles associate with every device path node - have been created. - @retval EFI_OUT_OF_RESOURCES There is no resource to create new handles. - @retval EFI_NOT_FOUND Create the handle associate with one device path - node failed. - @retval EFI_SECURITY_VIOLATION The user has no permission to start UEFI device - drivers on the DevicePath. -**/ -EFI_STATUS -EFIAPI -EfiBootManagerConnectDevicePath ( - IN EFI_DEVICE_PATH_PROTOCOL *DevicePathToConnect, - OUT EFI_HANDLE *MatchingHandle OPTIONAL - ); - -/** - This function will disconnect all current system handles. - - gBS->DisconnectController() is invoked for each handle exists in system handle buffer. - If handle is a bus type handle, all childrens also are disconnected recursively by - gBS->DisconnectController(). -**/ -VOID -EFIAPI -EfiBootManagerDisconnectAll ( - VOID - ); - - -// -// Boot Manager console library functions -// - -typedef enum { - ConIn, - ConOut, - ErrOut, - ConInDev, - ConOutDev, - ErrOutDev, - ConsoleTypeMax -} CONSOLE_TYPE; - -/** - This function will connect all the console devices base on the console - device variable ConIn, ConOut and ErrOut. - - @retval EFI_DEVICE_ERROR All the consoles were not connected due to an error. - @retval EFI_SUCCESS Success connect any one instance of the console - device path base on the variable ConVarName. -**/ -EFI_STATUS -EFIAPI -EfiBootManagerConnectAllDefaultConsoles ( - VOID - ); - -/** - This function updates the console variable based on ConVarName. It can - add or remove one specific console device path from the variable - - @param ConsoleType ConIn, ConOut, ErrOut, ConInDev, ConOutDev or ErrOutDev. - @param CustomizedConDevicePath The console device path to be added to - the console variable. Cannot be multi-instance. - @param ExclusiveDevicePath The console device path to be removed - from the console variable. Cannot be multi-instance. - - @retval EFI_UNSUPPORTED The added device path is the same as a removed one. - @retval EFI_SUCCESS Successfully added or removed the device path from the - console variable. - -**/ -EFI_STATUS -EFIAPI -EfiBootManagerUpdateConsoleVariable ( - IN CONSOLE_TYPE ConsoleType, - IN EFI_DEVICE_PATH_PROTOCOL *CustomizedConDevicePath, - IN EFI_DEVICE_PATH_PROTOCOL *ExclusiveDevicePath - ); - -/** - Connect the console device base on the variable ConVarName, if - device path of the ConVarName is multi-instance device path, if - anyone of the instances is connected success, then this function - will return success. - - @param ConsoleType ConIn, ConOut or ErrOut. - - @retval EFI_NOT_FOUND There is not any console devices connected - success - @retval EFI_SUCCESS Success connect any one instance of the console - device path base on the variable ConVarName. - -**/ -EFI_STATUS -EFIAPI -EfiBootManagerConnectConsoleVariable ( - IN CONSOLE_TYPE ConsoleType - ); - -/** - Query all the children of VideoController and return the device paths of all the - children that support GraphicsOutput protocol. - - @param VideoController PCI handle of video controller. - - @return Device paths of all the children that support GraphicsOutput protocol. -**/ -EFI_DEVICE_PATH_PROTOCOL * -EFIAPI -EfiBootManagerGetGopDevicePath ( - IN EFI_HANDLE VideoController - ); - -/** - Connect the platform active active video controller. - - @param VideoController PCI handle of video controller. - - @retval EFI_NOT_FOUND There is no active video controller. - @retval EFI_SUCCESS The video controller is connected. -**/ -EFI_STATUS -EFIAPI -EfiBootManagerConnectVideoController ( - EFI_HANDLE VideoController OPTIONAL - ); - -// -// Boot Manager driver health library functions. -// - -typedef struct { - EFI_DRIVER_HEALTH_PROTOCOL *DriverHealth; - - /// - /// Driver relative handles - /// - EFI_HANDLE DriverHealthHandle; - EFI_HANDLE ControllerHandle; - EFI_HANDLE ChildHandle; - - /// - /// Driver health messages of the specify Driver - /// - EFI_DRIVER_HEALTH_HII_MESSAGE *MessageList; - - /// - /// HII relative handles - /// - EFI_HII_HANDLE HiiHandle; - - /// - /// Driver Health status - /// - EFI_DRIVER_HEALTH_STATUS HealthStatus; -} EFI_BOOT_MANAGER_DRIVER_HEALTH_INFO; - -/** - Return all the Driver Health information. - - When the cumulative health status of all the controllers managed by the - driver who produces the EFI_DRIVER_HEALTH_PROTOCOL is healthy, only one - EFI_BOOT_MANAGER_DRIVER_HEALTH_INFO entry is created for such - EFI_DRIVER_HEALTH_PROTOCOL instance. - Otherwise, every controller creates one EFI_BOOT_MANAGER_DRIVER_HEALTH_INFO - entry. Additionally every child controller creates one - EFI_BOOT_MANAGER_DRIVER_HEALTH_INFO entry if the driver is a bus driver. - - @param Count Return the count of the Driver Health information. - - @retval NULL No Driver Health information is returned. - @retval !NULL Pointer to the Driver Health information array. -**/ -EFI_BOOT_MANAGER_DRIVER_HEALTH_INFO * -EFIAPI -EfiBootManagerGetDriverHealthInfo ( - UINTN *Count - ); - -/** - Free the Driver Health information array. - - @param DriverHealthInfo Pointer to array of the Driver Health information. - @param Count Count of the array. - - @retval EFI_SUCCESS The array is freed. - @retval EFI_INVALID_PARAMETER The array is NULL. -**/ -EFI_STATUS -EFIAPI -EfiBootManagerFreeDriverHealthInfo ( - EFI_BOOT_MANAGER_DRIVER_HEALTH_INFO *DriverHealthInfo, - UINTN Count - ); - -/** - Process (load and execute) the load option. - - @param LoadOption Pointer to the load option. - - @retval EFI_INVALID_PARAMETER The load option type is invalid, - or the load option file path doesn't point to a valid file. - @retval EFI_UNSUPPORTED The load option type is of LoadOptionTypeBoot. - @retval EFI_SUCCESS The load option is inactive, or successfully loaded and executed. -**/ -EFI_STATUS -EFIAPI -EfiBootManagerProcessLoadOption ( - EFI_BOOT_MANAGER_LOAD_OPTION *LoadOption - ); -#endif diff --git a/MdeModulePkg/Include/Library/UefiHiiServicesLib.h b/MdeModulePkg/Include/Library/UefiHiiServicesLib.h deleted file mode 100644 index 8c8beee555..0000000000 --- a/MdeModulePkg/Include/Library/UefiHiiServicesLib.h +++ /dev/null @@ -1,52 +0,0 @@ -/** @file - Provides global variables that are pointers to the UEFI HII related protocols. - All of the UEFI HII related protocols are optional, so the consumers of this - library class must verify that the global variable pointers are not NULL before - use. - -Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
-This program and the accompanying materials are licensed and made available under -the terms and conditions of the BSD License that 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 __UEFI_HII_SERVICES_LIB_H__ -#define __UEFI_HII_SERVICES_LIB_H__ - -#include -#include -#include -#include -#include - -/// -/// The pointer to the UEFI HII Font Protocol. -/// -extern EFI_HII_FONT_PROTOCOL *gHiiFont; - -/// -/// The pointer to the UEFI HII String Protocol. -/// -extern EFI_HII_STRING_PROTOCOL *gHiiString; - -/// -/// The pointer to the UEFI HII Image Protocol. -/// -extern EFI_HII_IMAGE_PROTOCOL *gHiiImage; - -/// -/// The pointer to the UEFI HII Database Protocol. -/// -extern EFI_HII_DATABASE_PROTOCOL *gHiiDatabase; - -/// -/// The pointer to the UEFI HII Config Rounting Protocol. -/// -extern EFI_HII_CONFIG_ROUTING_PROTOCOL *gHiiConfigRouting; - -#endif diff --git a/MdeModulePkg/Include/Library/VarCheckLib.h b/MdeModulePkg/Include/Library/VarCheckLib.h deleted file mode 100644 index a423bc0e54..0000000000 --- a/MdeModulePkg/Include/Library/VarCheckLib.h +++ /dev/null @@ -1,180 +0,0 @@ -/** @file - Provides variable check services and database management. - -Copyright (c) 2015, Intel Corporation. All rights reserved.
-This program and the accompanying materials are licensed and made available under -the terms and conditions of the BSD License that 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 _VARIABLE_CHECK_LIB_H_ -#define _VARIABLE_CHECK_LIB_H_ - -#include - -typedef enum { - VarCheckRequestReserved0 = 0, - VarCheckRequestReserved1 = 1, - VarCheckFromTrusted = 2, - VarCheckFromUntrusted = 3, -} VAR_CHECK_REQUEST_SOURCE; - -typedef -VOID -(EFIAPI *VAR_CHECK_END_OF_DXE_CALLBACK) ( - VOID - ); - -/** - Register END_OF_DXE callback. - The callback will be invoked by VarCheckLibInitializeAtEndOfDxe(). - - @param[in] Callback END_OF_DXE callback. - - @retval EFI_SUCCESS The callback was registered successfully. - @retval EFI_INVALID_PARAMETER Callback is NULL. - @retval EFI_ACCESS_DENIED EFI_END_OF_DXE_EVENT_GROUP_GUID or EFI_EVENT_GROUP_READY_TO_BOOT has - already been signaled. - @retval EFI_OUT_OF_RESOURCES There is not enough resource for the callback register request. - -**/ -EFI_STATUS -EFIAPI -VarCheckLibRegisterEndOfDxeCallback ( - IN VAR_CHECK_END_OF_DXE_CALLBACK Callback - ); - -/** - Var check initialize at END_OF_DXE. - - This function needs to be called at END_OF_DXE. - Address pointers may be returned, - and caller needs to ConvertPointer() for the pointers. - - @param[in, out] AddressPointerCount Output pointer to address pointer count. - - @return Address pointer buffer, NULL if input AddressPointerCount is NULL. - -**/ -VOID *** -EFIAPI -VarCheckLibInitializeAtEndOfDxe ( - IN OUT UINTN *AddressPointerCount OPTIONAL - ); - -/** - Register address pointer. - The AddressPointer may be returned by VarCheckLibInitializeAtEndOfDxe(). - - @param[in] AddressPointer Address pointer. - - @retval EFI_SUCCESS The address pointer was registered successfully. - @retval EFI_INVALID_PARAMETER AddressPointer is NULL. - @retval EFI_ACCESS_DENIED EFI_END_OF_DXE_EVENT_GROUP_GUID or EFI_EVENT_GROUP_READY_TO_BOOT has - already been signaled. - @retval EFI_OUT_OF_RESOURCES There is not enough resource for the address pointer register request. - -**/ -EFI_STATUS -EFIAPI -VarCheckLibRegisterAddressPointer ( - IN VOID **AddressPointer - ); - -/** - Register SetVariable check handler. - - @param[in] Handler Pointer to check handler. - - @retval EFI_SUCCESS The SetVariable check handler was registered successfully. - @retval EFI_INVALID_PARAMETER Handler is NULL. - @retval EFI_ACCESS_DENIED EFI_END_OF_DXE_EVENT_GROUP_GUID or EFI_EVENT_GROUP_READY_TO_BOOT has - already been signaled. - @retval EFI_OUT_OF_RESOURCES There is not enough resource for the SetVariable check handler register request. - @retval EFI_UNSUPPORTED This interface is not implemented. - For example, it is unsupported in VarCheck protocol if both VarCheck and SmmVarCheck protocols are present. - -**/ -EFI_STATUS -EFIAPI -VarCheckLibRegisterSetVariableCheckHandler ( - IN VAR_CHECK_SET_VARIABLE_CHECK_HANDLER Handler - ); - -/** - Variable property set. - - @param[in] Name Pointer to the variable name. - @param[in] Guid Pointer to the vendor GUID. - @param[in] VariableProperty Pointer to the input variable property. - - @retval EFI_SUCCESS The property of variable specified by the Name and Guid was set successfully. - @retval EFI_INVALID_PARAMETER Name, Guid or VariableProperty is NULL, or Name is an empty string, - or the fields of VariableProperty are not valid. - @retval EFI_ACCESS_DENIED EFI_END_OF_DXE_EVENT_GROUP_GUID or EFI_EVENT_GROUP_READY_TO_BOOT has - already been signaled. - @retval EFI_OUT_OF_RESOURCES There is not enough resource for the variable property set request. - -**/ -EFI_STATUS -EFIAPI -VarCheckLibVariablePropertySet ( - IN CHAR16 *Name, - IN EFI_GUID *Guid, - IN VAR_CHECK_VARIABLE_PROPERTY *VariableProperty - ); - -/** - Variable property get. - - @param[in] Name Pointer to the variable name. - @param[in] Guid Pointer to the vendor GUID. - @param[out] VariableProperty Pointer to the output variable property. - - @retval EFI_SUCCESS The property of variable specified by the Name and Guid was got successfully. - @retval EFI_INVALID_PARAMETER Name, Guid or VariableProperty is NULL, or Name is an empty string. - @retval EFI_NOT_FOUND The property of variable specified by the Name and Guid was not found. - -**/ -EFI_STATUS -EFIAPI -VarCheckLibVariablePropertyGet ( - IN CHAR16 *Name, - IN EFI_GUID *Guid, - OUT VAR_CHECK_VARIABLE_PROPERTY *VariableProperty - ); - -/** - SetVariable check. - - @param[in] VariableName Name of Variable to set. - @param[in] VendorGuid Variable vendor GUID. - @param[in] Attributes Attribute value of the variable. - @param[in] DataSize Size of Data to set. - @param[in] Data Data pointer. - @param[in] RequestSource Request source. - - @retval EFI_SUCCESS The SetVariable check result was success. - @retval EFI_INVALID_PARAMETER An invalid combination of attribute bits, name, GUID, - DataSize and Data value was supplied. - @retval EFI_WRITE_PROTECTED The variable in question is read-only. - @retval Others The other return status from check handler. - -**/ -EFI_STATUS -EFIAPI -VarCheckLibSetVariableCheck ( - IN CHAR16 *VariableName, - IN EFI_GUID *VendorGuid, - IN UINT32 Attributes, - IN UINTN DataSize, - IN VOID *Data, - IN VAR_CHECK_REQUEST_SOURCE RequestSource - ); - -#endif -- cgit v1.2.3