From: Shenglei Zhang <shenglei.zhang@intel.com>
To: edk2-devel@lists.01.org
Cc: Liming Gao <liming.gao@intel.com>,
Michael D Kinney <michael.d.kinney@intel.com>
Subject: [PATCH 3/8] IntelFrameworkPkg/FrameworkUefiLib: Remove FrameworkUefiLib
Date: Tue, 13 Nov 2018 16:35:13 +0800 [thread overview]
Message-ID: <20181113083518.6824-4-shenglei.zhang@intel.com> (raw)
In-Reply-To: <20181113083518.6824-1-shenglei.zhang@intel.com>
FrameworkUefiLib is not used, so it is removed.
https://bugzilla.tianocore.org/show_bug.cgi?id=1190
Cc: Liming Gao <liming.gao@intel.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Shenglei Zhang <shenglei.zhang@intel.com>
---
.../Library/FrameworkUefiLib/Acpi.c | 88 -
.../Library/FrameworkUefiLib/Console.c | 476 -----
.../FrameworkUefiLib/FrameworkUefiLib.inf | 84 -
.../FrameworkUefiLib/FrameworkUefiLib.uni | 23 -
.../FrameworkUefiLib/UefiDriverModel.c | 1056 ---------
.../Library/FrameworkUefiLib/UefiLib.c | 1892 -----------------
.../FrameworkUefiLib/UefiLibInternal.h | 44 -
.../Library/FrameworkUefiLib/UefiLibPrint.c | 822 -------
.../Library/FrameworkUefiLib/UefiNotTiano.c | 327 ---
9 files changed, 4812 deletions(-)
delete mode 100644 IntelFrameworkPkg/Library/FrameworkUefiLib/Acpi.c
delete mode 100644 IntelFrameworkPkg/Library/FrameworkUefiLib/Console.c
delete mode 100644 IntelFrameworkPkg/Library/FrameworkUefiLib/FrameworkUefiLib.inf
delete mode 100644 IntelFrameworkPkg/Library/FrameworkUefiLib/FrameworkUefiLib.uni
delete mode 100644 IntelFrameworkPkg/Library/FrameworkUefiLib/UefiDriverModel.c
delete mode 100644 IntelFrameworkPkg/Library/FrameworkUefiLib/UefiLib.c
delete mode 100644 IntelFrameworkPkg/Library/FrameworkUefiLib/UefiLibInternal.h
delete mode 100644 IntelFrameworkPkg/Library/FrameworkUefiLib/UefiLibPrint.c
delete mode 100644 IntelFrameworkPkg/Library/FrameworkUefiLib/UefiNotTiano.c
diff --git a/IntelFrameworkPkg/Library/FrameworkUefiLib/Acpi.c b/IntelFrameworkPkg/Library/FrameworkUefiLib/Acpi.c
deleted file mode 100644
index 4b41abd036..0000000000
--- a/IntelFrameworkPkg/Library/FrameworkUefiLib/Acpi.c
+++ /dev/null
@@ -1,88 +0,0 @@
-/** @file
- This module provides help function for finding ACPI table.
-
- Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
- This program and the accompanying materials
- are licensed and made available under the terms and conditions of the BSD License
- which accompanies this distribution. The full text of the license may be found at
- http://opensource.org/licenses/bsd-license.php.
-
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-#include "UefiLibInternal.h"
-#include <IndustryStandard/Acpi.h>
-
-/**
- This function locates next ACPI table in XSDT/RSDT based on Signature and
- previous returned Table.
-
- If PreviousTable is NULL:
- This function will locate the first ACPI table in XSDT/RSDT based on
- Signature in gEfiAcpi20TableGuid system configuration table first, and then
- gEfiAcpi10TableGuid system configuration table.
- This function will locate in XSDT first, and then RSDT.
- For DSDT, this function will locate XDsdt in FADT first, and then Dsdt in
- FADT.
- For FACS, this function will locate XFirmwareCtrl in FADT first, and then
- FirmwareCtrl in FADT.
-
- If PreviousTable is not NULL:
- 1. If it could be located in XSDT in gEfiAcpi20TableGuid system configuration
- table, then this function will just locate next table in XSDT in
- gEfiAcpi20TableGuid system configuration table.
- 2. If it could be located in RSDT in gEfiAcpi20TableGuid system configuration
- table, then this function will just locate next table in RSDT in
- gEfiAcpi20TableGuid system configuration table.
- 3. If it could be located in RSDT in gEfiAcpi10TableGuid system configuration
- table, then this function will just locate next table in RSDT in
- gEfiAcpi10TableGuid system configuration table.
-
- It's not supported that PreviousTable is not NULL but PreviousTable->Signature
- is not same with Signature, NULL will be returned.
-
- @param Signature ACPI table signature.
- @param PreviousTable Pointer to previous returned table to locate next
- table, or NULL to locate first table.
-
- @return Next ACPI table or NULL if not found.
-
-**/
-EFI_ACPI_COMMON_HEADER *
-EFIAPI
-EfiLocateNextAcpiTable (
- IN UINT32 Signature,
- IN EFI_ACPI_COMMON_HEADER *PreviousTable OPTIONAL
- )
-{
- ASSERT (FALSE);
- return NULL;
-}
-
-/**
- This function locates first ACPI table in XSDT/RSDT based on Signature.
-
- This function will locate the first ACPI table in XSDT/RSDT based on
- Signature in gEfiAcpi20TableGuid system configuration table first, and then
- gEfiAcpi10TableGuid system configuration table.
- This function will locate in XSDT first, and then RSDT.
- For DSDT, this function will locate XDsdt in FADT first, and then Dsdt in
- FADT.
- For FACS, this function will locate XFirmwareCtrl in FADT first, and then
- FirmwareCtrl in FADT.
-
- @param Signature ACPI table signature.
-
- @return First ACPI table or NULL if not found.
-
-**/
-EFI_ACPI_COMMON_HEADER *
-EFIAPI
-EfiLocateFirstAcpiTable (
- IN UINT32 Signature
- )
-{
- return EfiLocateNextAcpiTable (Signature, NULL);
-}
diff --git a/IntelFrameworkPkg/Library/FrameworkUefiLib/Console.c b/IntelFrameworkPkg/Library/FrameworkUefiLib/Console.c
deleted file mode 100644
index d32492f7cd..0000000000
--- a/IntelFrameworkPkg/Library/FrameworkUefiLib/Console.c
+++ /dev/null
@@ -1,476 +0,0 @@
-/** @file
- This module provide help function for displaying unicode string.
-
- Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
- This program and the accompanying materials
- are licensed and made available under the terms and conditions of the BSD License
- which accompanies this distribution. The full text of the license may be found at
- http://opensource.org/licenses/bsd-license.php
-
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-
-
-
-#include "UefiLibInternal.h"
-
-typedef struct {
- CHAR16 WChar;
- UINT32 Width;
-} UNICODE_WIDTH_ENTRY;
-
-GLOBAL_REMOVE_IF_UNREFERENCED CONST UNICODE_WIDTH_ENTRY mUnicodeWidthTable[] = {
- //
- // General script area
- //
- {(CHAR16)0x1FFF, 1},
- /*
- * Merge the blocks and replace them with the above entry as they fall to
- * the same category and they are all narrow glyph. This will reduce search
- * time and table size. The merge will omit the reserved code.
- *
- * Remove the above item if below is un-commented.
- *
- {(CHAR16)0x007F, 1}, // C0 controls and basic Latin. 0x0000-0x007F
- {(CHAR16)0x00FF, 1}, // C1 controls and Latin-1 support. 0x0080-0x00FF
- {(CHAR16)0x017F, 1}, // Latin extended-A. 0x0100-0x017F
- {(CHAR16)0x024F, 1}, // Latin extended-B. 0x0180-0x024F
- {(CHAR16)0x02AF, 1}, // IPA extensions. 0x0250-0x02AF
- {(CHAR16)0x02FF, 1}, // Spacing modifier letters. 0x02B0-0x02FF
- {(CHAR16)0x036F, 1}, // Combining diacritical marks. 0x0300-0x036F
- {(CHAR16)0x03FF, 1}, // Greek. 0x0370-0x03FF
- {(CHAR16)0x04FF, 1}, // Cyrillic. 0x0400-0x04FF
- {(CHAR16)0x052F, 0}, // Unassigned. As Armenian in ver3.0. 0x0500-0x052F
- {(CHAR16)0x058F, 1}, // Armenian. 0x0530-0x058F
- {(CHAR16)0x05FF, 1}, // Hebrew. 0x0590-0x05FF
- {(CHAR16)0x06FF, 1}, // Arabic. 0x0600-0x06FF
- {(CHAR16)0x08FF, 0}, // Unassigned. 0x0700-0x08FF
- {(CHAR16)0x097F, 1}, // Devanagari. 0x0900-0x097F
- {(CHAR16)0x09FF, 1}, // Bengali. 0x0980-0x09FF
- {(CHAR16)0x0A7F, 1}, // Gurmukhi. 0x0A00-0x0A7F
- {(CHAR16)0x0AFF, 1}, // Gujarati. 0x0A80-0x0AFF
- {(CHAR16)0x0B7F, 1}, // Oriya. 0x0B00-0x0B7F
- {(CHAR16)0x0BFF, 1}, // Tamil. (See page 7-92). 0x0B80-0x0BFF
- {(CHAR16)0x0C7F, 1}, // Telugu. 0x0C00-0x0C7F
- {(CHAR16)0x0CFF, 1}, // Kannada. (See page 7-100). 0x0C80-0x0CFF
- {(CHAR16)0x0D7F, 1}, // Malayalam (See page 7-104). 0x0D00-0x0D7F
- {(CHAR16)0x0DFF, 0}, // Unassigned. 0x0D80-0x0DFF
- {(CHAR16)0x0E7F, 1}, // Thai. 0x0E00-0x0E7F
- {(CHAR16)0x0EFF, 1}, // Lao. 0x0E80-0x0EFF
- {(CHAR16)0x0FBF, 1}, // Tibetan. 0x0F00-0x0FBF
- {(CHAR16)0x109F, 0}, // Unassigned. 0x0FC0-0x109F
- {(CHAR16)0x10FF, 1}, // Georgian. 0x10A0-0x10FF
- {(CHAR16)0x11FF, 1}, // Hangul Jamo. 0x1100-0x11FF
- {(CHAR16)0x1DFF, 0}, // Unassigned. 0x1200-0x1DFF
- {(CHAR16)0x1EFF, 1}, // Latin extended additional. 0x1E00-0x1EFF
- {(CHAR16)0x1FFF, 1}, // Greek extended. 0x1F00-0x1FFF
- *
- */
-
- //
- // Symbol area
- //
- {(CHAR16)0x2FFF, 1},
- /*
- * Merge the blocks and replace them with the above entry as they fall to
- * the same category and they are all narrow glyph. This will reduce search
- * time and table size. The merge will omit the reserved code.
- *
- * Remove the above item if below is un-commented.
- *
- {(CHAR16)0x206F, 1}, // General punctuation. (See page7-154). 0x200-0x206F
- {(CHAR16)0x209F, 1}, // Superscripts and subscripts. 0x2070-0x209F
- {(CHAR16)0x20CF, 1}, // Currency symbols. 0x20A0-0x20CF
- {(CHAR16)0x20FF, 1}, // Combining diacritical marks for symbols. 0x20D0-0x20FF
- {(CHAR16)0x214F, 1}, // Letterlike sympbols. 0x2100-0x214F
- {(CHAR16)0x218F, 1}, // Number forms. 0x2150-0x218F
- {(CHAR16)0x21FF, 1}, // Arrows. 0x2190-0x21FF
- {(CHAR16)0x22FF, 1}, // Mathematical operators. 0x2200-0x22FF
- {(CHAR16)0x23FF, 1}, // Miscellaneous technical. 0x2300-0x23FF
- {(CHAR16)0x243F, 1}, // Control pictures. 0x2400-0x243F
- {(CHAR16)0x245F, 1}, // Optical character recognition. 0x2440-0x245F
- {(CHAR16)0x24FF, 1}, // Enclosed alphanumerics. 0x2460-0x24FF
- {(CHAR16)0x257F, 1}, // Box drawing. 0x2500-0x257F
- {(CHAR16)0x259F, 1}, // Block elements. 0x2580-0x259F
- {(CHAR16)0x25FF, 1}, // Geometric shapes. 0x25A0-0x25FF
- {(CHAR16)0x26FF, 1}, // Miscellaneous symbols. 0x2600-0x26FF
- {(CHAR16)0x27BF, 1}, // Dingbats. 0x2700-0x27BF
- {(CHAR16)0x2FFF, 0}, // Reserved. 0x27C0-0x2FFF
- *
- */
-
- //
- // CJK phonetics and symbol area
- //
- {(CHAR16)0x33FF, 2},
- /*
- * Merge the blocks and replace them with the above entry as they fall to
- * the same category and they are all wide glyph. This will reduce search
- * time and table size. The merge will omit the reserved code.
- *
- * Remove the above item if below is un-commented.
- *
- {(CHAR16)0x303F, 2}, // CJK symbols and punctuation. 0x3000-0x303F
- {(CHAR16)0x309F, 2}, // Hiragana. 0x3040-0x309F
- {(CHAR16)0x30FF, 2}, // Katakana. 0x30A0-0x30FF
- {(CHAR16)0x312F, 2}, // Bopomofo. 0x3100-0x312F
- {(CHAR16)0x318F, 2}, // Hangul compatibility jamo. 0x3130-0x318F
- {(CHAR16)0x319F, 2}, // Kanbun. 0x3190-0x319F
- {(CHAR16)0x31FF, 0}, // Reserved. As Bopomofo extended in ver3.0. 0x31A0-0x31FF
- {(CHAR16)0x32FF, 2}, // Enclosed CJK letters and months. 0x3200-0x32FF
- {(CHAR16)0x33FF, 2}, // CJK compatibility. 0x3300-0x33FF
- *
- */
-
- //
- // CJK ideograph area
- //
- {(CHAR16)0x9FFF, 2},
- /*
- * Merge the blocks and replace them with the above entry as they fall to
- * the same category and they are all wide glyph. This will reduce search
- * time and table size. The merge will omit the reserved code.
- *
- * Remove the above item if below is un-commented.
- *
- {(CHAR16)0x4DFF, 0}, // Reserved. 0x3400-0x4DBF as CJK unified ideographs
- // extension A in ver3.0. 0x3400-0x4DFF
- {(CHAR16)0x9FFF, 2}, // CJK unified ideographs. 0x4E00-0x9FFF
- *
- */
-
- //
- // Reserved
- //
- {(CHAR16)0xABFF, 0}, // Reserved. 0xA000-0xA490 as Yi syllables. 0xA490-0xA4D0
- // as Yi radicals in ver3.0. 0xA000-0xABFF
- //
- // Hangul syllables
- //
- {(CHAR16)0xD7FF, 2},
- /*
- * Merge the blocks and replace them with the above entry as they fall to
- * the same category and they are all wide glyph. This will reduce search
- * time and table size. The merge will omit the reserved code.
- *
- * Remove the above item if below is un-commented.
- *
- {(CHAR16)0xD7A3, 2}, // Hangul syllables. 0xAC00-0xD7A3
- {(CHAR16)0xD7FF, 0}, // Reserved. 0xD7A3-0xD7FF
- *
- */
-
- //
- // Surrogates area
- //
- {(CHAR16)0xDFFF, 0}, // Surrogates, not used now. 0xD800-0xDFFF
-
- //
- // Private use area
- //
- {(CHAR16)0xF8FF, 0}, // Private use area. 0xE000-0xF8FF
-
- //
- // Compatibility area and specials
- //
- {(CHAR16)0xFAFF, 2}, // CJK compatibility ideographs. 0xF900-0xFAFF
- {(CHAR16)0xFB4F, 1}, // Alphabetic presentation forms. 0xFB00-0xFB4F
- {(CHAR16)0xFDFF, 1}, // Arabic presentation forms-A. 0xFB50-0xFDFF
- {(CHAR16)0xFE1F, 0}, // Reserved. As variation selectors in ver3.0. 0xFE00-0xFE1F
- {(CHAR16)0xFE2F, 1}, // Combining half marks. 0xFE20-0xFE2F
- {(CHAR16)0xFE4F, 2}, // CJK compatibility forms. 0xFE30-0xFE4F
- {(CHAR16)0xFE6F, 1}, // Small Form Variants. 0xFE50-0xFE6F
- {(CHAR16)0xFEFF, 1}, // Arabic presentation forms-B. 0xFE70-0xFEFF
- {(CHAR16)0xFFEF, 1}, // Half width and full width forms. 0xFF00-0xFFEF
- {(CHAR16)0xFFFF, 0}, // Speicials. 0xFFF0-0xFFFF
-};
-
-/**
- Retrieves the width of a Unicode character.
-
- This function computes and returns the width of the Unicode character specified
- by UnicodeChar.
-
- @param UnicodeChar A Unicode character.
-
- @retval 0 The width if UnicodeChar could not be determined.
- @retval 1 UnicodeChar is a narrow glyph.
- @retval 2 UnicodeChar is a wide glyph.
-
-**/
-UINTN
-EFIAPI
-GetGlyphWidth (
- IN CHAR16 UnicodeChar
- )
-{
- UINTN Index;
- UINTN Low;
- UINTN High;
- CONST UNICODE_WIDTH_ENTRY *Item;
-
- Item = NULL;
- Low = 0;
- High = (sizeof (mUnicodeWidthTable)) / (sizeof (UNICODE_WIDTH_ENTRY)) - 1;
- while (Low <= High) {
- Index = (Low + High) >> 1;
- Item = &(mUnicodeWidthTable[Index]);
- if (Index == 0) {
- if (UnicodeChar <= Item->WChar) {
- break;
- }
-
- return 0;
- }
-
- if (UnicodeChar > Item->WChar) {
- Low = Index + 1;
- } else if (UnicodeChar <= mUnicodeWidthTable[Index - 1].WChar) {
- High = Index - 1;
- } else {
- //
- // Index - 1 < UnicodeChar <= Index. Found
- //
- break;
- }
- }
-
- if (Low <= High) {
- return Item->Width;
- }
-
- return 0;
-}
-
-/**
- Computes the display length of a Null-terminated Unicode String.
-
- This function computes and returns the display length of the Null-terminated Unicode
- string specified by String. If String is NULL then 0 is returned. If any of the widths
- of the Unicode characters in String can not be determined, then 0 is returned. The display
- width of String can be computed by summing the display widths of each Unicode character
- in String. Unicode characters that are narrow glyphs have a width of 1, and Unicode
- characters that are width glyphs have a width of 2.
- If String is not aligned on a 16-bit boundary, then ASSERT().
-
- @param String A pointer to a Null-terminated Unicode string.
-
- @return The display length of the Null-terminated Unicode string specified by String.
-
-**/
-UINTN
-EFIAPI
-UnicodeStringDisplayLength (
- IN CONST CHAR16 *String
- )
-{
- UINTN Length;
- UINTN Width;
-
- if (String == NULL) {
- return 0;
- }
-
- Length = 0;
- while (*String != 0) {
- Width = GetGlyphWidth (*String);
- if (Width == 0) {
- return 0;
- }
-
- Length += Width;
- String++;
- }
-
- return Length;
-}
-
-/**
- Draws a dialog box to the console output device specified by
- ConOut defined in the EFI_SYSTEM_TABLE and waits for a keystroke
- from the console input device specified by ConIn defined in the
- EFI_SYSTEM_TABLE.
-
- If there are no strings in the variable argument list, then ASSERT().
- If all the strings in the variable argument list are empty, then ASSERT().
-
- @param[in] Attribute Specifies the foreground and background color of the popup.
- @param[out] Key A pointer to the EFI_KEY value of the key that was
- pressed. This is an optional parameter that may be NULL.
- If it is NULL then no wait for a keypress will be performed.
- @param[in] ... The variable argument list that contains pointers to Null-
- terminated Unicode strings to display in the dialog box.
- The variable argument list is terminated by a NULL.
-
-**/
-VOID
-EFIAPI
-CreatePopUp (
- IN UINTN Attribute,
- OUT EFI_INPUT_KEY *Key, OPTIONAL
- ...
- )
-{
- EFI_STATUS Status;
- VA_LIST Args;
- EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *ConOut;
- EFI_SIMPLE_TEXT_OUTPUT_MODE SavedConsoleMode;
- UINTN Columns;
- UINTN Rows;
- UINTN Column;
- UINTN Row;
- UINTN NumberOfLines;
- UINTN MaxLength;
- CHAR16 *String;
- UINTN Length;
- CHAR16 *Line;
- UINTN EventIndex;
-
- //
- // Determine the length of the longest line in the popup and the the total
- // number of lines in the popup
- //
- VA_START (Args, Key);
- MaxLength = 0;
- NumberOfLines = 0;
- while ((String = VA_ARG (Args, CHAR16 *)) != NULL) {
- MaxLength = MAX (MaxLength, StrLen (String));
- NumberOfLines++;
- }
- VA_END (Args);
-
- //
- // If the total number of lines in the popup is zero, then ASSERT()
- //
- ASSERT (NumberOfLines != 0);
-
- //
- // If the maximum length of all the strings is zero, then ASSERT()
- //
- ASSERT (MaxLength != 0);
-
- //
- // Cache a pointer to the Simple Text Output Protocol in the EFI System Table
- //
- ConOut = gST->ConOut;
-
- //
- // Save the current console cursor position and attributes
- //
- CopyMem (&SavedConsoleMode, ConOut->Mode, sizeof (SavedConsoleMode));
-
- //
- // Retrieve the number of columns and rows in the current console mode
- //
- ConOut->QueryMode (ConOut, SavedConsoleMode.Mode, &Columns, &Rows);
-
- //
- // Disable cursor and set the foreground and background colors specified by Attribute
- //
- ConOut->EnableCursor (ConOut, FALSE);
- ConOut->SetAttribute (ConOut, Attribute);
-
- //
- // Limit NumberOfLines to height of the screen minus 3 rows for the box itself
- //
- NumberOfLines = MIN (NumberOfLines, Rows - 3);
-
- //
- // Limit MaxLength to width of the screen minus 2 columns for the box itself
- //
- MaxLength = MIN (MaxLength, Columns - 2);
-
- //
- // Compute the starting row and starting column for the popup
- //
- Row = (Rows - (NumberOfLines + 3)) / 2;
- Column = (Columns - (MaxLength + 2)) / 2;
-
- //
- // Allocate a buffer for a single line of the popup with borders and a Null-terminator
- //
- Line = AllocateZeroPool ((MaxLength + 3) * sizeof (CHAR16));
- ASSERT (Line != NULL);
-
- //
- // Draw top of popup box
- //
- SetMem16 (Line, (MaxLength + 2) * 2, BOXDRAW_HORIZONTAL);
- Line[0] = BOXDRAW_DOWN_RIGHT;
- Line[MaxLength + 1] = BOXDRAW_DOWN_LEFT;
- Line[MaxLength + 2] = L'\0';
- ConOut->SetCursorPosition (ConOut, Column, Row++);
- ConOut->OutputString (ConOut, Line);
-
- //
- // Draw middle of the popup with strings
- //
- VA_START (Args, Key);
- while ((String = VA_ARG (Args, CHAR16 *)) != NULL && NumberOfLines > 0) {
- Length = StrLen (String);
- SetMem16 (Line, (MaxLength + 2) * 2, L' ');
- if (Length <= MaxLength) {
- //
- // Length <= MaxLength
- //
- CopyMem (Line + 1 + (MaxLength - Length) / 2, String , Length * sizeof (CHAR16));
- } else {
- //
- // Length > MaxLength
- //
- CopyMem (Line + 1, String + (Length - MaxLength) / 2 , MaxLength * sizeof (CHAR16));
- }
- Line[0] = BOXDRAW_VERTICAL;
- Line[MaxLength + 1] = BOXDRAW_VERTICAL;
- Line[MaxLength + 2] = L'\0';
- ConOut->SetCursorPosition (ConOut, Column, Row++);
- ConOut->OutputString (ConOut, Line);
- NumberOfLines--;
- }
- VA_END (Args);
-
- //
- // Draw bottom of popup box
- //
- SetMem16 (Line, (MaxLength + 2) * 2, BOXDRAW_HORIZONTAL);
- Line[0] = BOXDRAW_UP_RIGHT;
- Line[MaxLength + 1] = BOXDRAW_UP_LEFT;
- Line[MaxLength + 2] = L'\0';
- ConOut->SetCursorPosition (ConOut, Column, Row++);
- ConOut->OutputString (ConOut, Line);
-
- //
- // Free the allocated line buffer
- //
- FreePool (Line);
-
- //
- // Restore the cursor visibility, position, and attributes
- //
- ConOut->EnableCursor (ConOut, SavedConsoleMode.CursorVisible);
- ConOut->SetCursorPosition (ConOut, SavedConsoleMode.CursorColumn, SavedConsoleMode.CursorRow);
- ConOut->SetAttribute (ConOut, SavedConsoleMode.Attribute);
-
- //
- // Wait for a keystroke
- //
- if (Key != NULL) {
- while (TRUE) {
- Status = gST->ConIn->ReadKeyStroke (gST->ConIn, Key);
- if (!EFI_ERROR (Status)) {
- break;
- }
-
- //
- // If we encounter error, continue to read another key in.
- //
- if (Status != EFI_NOT_READY) {
- continue;
- }
- gBS->WaitForEvent (1, &gST->ConIn->WaitForKey, &EventIndex);
- }
- }
-}
diff --git a/IntelFrameworkPkg/Library/FrameworkUefiLib/FrameworkUefiLib.inf b/IntelFrameworkPkg/Library/FrameworkUefiLib/FrameworkUefiLib.inf
deleted file mode 100644
index 086d898ee7..0000000000
--- a/IntelFrameworkPkg/Library/FrameworkUefiLib/FrameworkUefiLib.inf
+++ /dev/null
@@ -1,84 +0,0 @@
-## @file
-# Library to abstract Framework extensions that conflict with UEFI 2.0 Specification.
-#
-# This library is helpful to port Framework/Tinao code that has conflicts with UEFI 2.0.
-# It hides the old conflicts with library functions and supporting implementations of
-# the old (EDK/EFI 1.10) and new (EDK II/UEFI 2.0) way.
-#
-# Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
-#
-# This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-#
-##
-
-[Defines]
- INF_VERSION = 0x00010005
- BASE_NAME = FrameworkUefiLib
- MODULE_UNI_FILE = FrameworkUefiLib.uni
- FILE_GUID = B2F0D71A-A39F-4094-854B-0C6BA6910CCE
- MODULE_TYPE = UEFI_DRIVER
- VERSION_STRING = 1.0
- LIBRARY_CLASS = UefiLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
-
-#
-# VALID_ARCHITECTURES = IA32 X64 EBC
-#
-
-[Sources]
- UefiLibPrint.c
- UefiNotTiano.c
- UefiDriverModel.c
- Console.c
- UefiLib.c
- UefiLibInternal.h
- Acpi.c
-
-[Packages]
- MdePkg/MdePkg.dec
- IntelFrameworkPkg/IntelFrameworkPkg.dec
-
-[LibraryClasses]
- PrintLib
- PcdLib
- MemoryAllocationLib
- DebugLib
- BaseMemoryLib
- BaseLib
- UefiBootServicesTableLib
- DevicePathLib
-
-[Guids]
- gEfiEventReadyToBootGuid ## SOMETIMES_CONSUMES ## Event
- gEfiEventLegacyBootGuid ## SOMETIMES_CONSUMES ## Event
-
-[Protocols]
- gEfiDriverBindingProtocolGuid ## SOMETIMES_PRODUCES
- gEfiSimpleTextOutProtocolGuid ## SOMETIMES_CONSUMES
- gEfiGraphicsOutputProtocolGuid ## SOMETIMES_CONSUMES
- gEfiHiiFontProtocolGuid ## SOMETIMES_CONSUMES
- gEfiSimpleFileSystemProtocolGuid ## SOMETIMES_CONSUMES
- gEfiComponentNameProtocolGuid ## SOMETIMES_PRODUCES
- gEfiComponentName2ProtocolGuid ## SOMETIMES_PRODUCES
- gEfiDriverConfigurationProtocolGuid ## SOMETIMES_PRODUCES
- gEfiDriverConfiguration2ProtocolGuid ## SOMETIMES_PRODUCES
- gEfiDriverDiagnosticsProtocolGuid ## SOMETIMES_PRODUCES
- gEfiDriverDiagnostics2ProtocolGuid ## SOMETIMES_PRODUCES
- gEfiUgaDrawProtocolGuid ## SOMETIMES_CONSUMES
-
-
-[Pcd]
- gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize ## SOMETIMES_CONSUMES
-
-[FeaturePcd]
- gEfiMdePkgTokenSpaceGuid.PcdDriverDiagnosticsDisable ## CONSUMES
- gEfiMdePkgTokenSpaceGuid.PcdComponentNameDisable ## CONSUMES
- gEfiMdePkgTokenSpaceGuid.PcdDriverDiagnostics2Disable ## CONSUMES
- gEfiMdePkgTokenSpaceGuid.PcdComponentName2Disable ## CONSUMES
- gEfiMdePkgTokenSpaceGuid.PcdUgaConsumeSupport ## CONSUMES
-
diff --git a/IntelFrameworkPkg/Library/FrameworkUefiLib/FrameworkUefiLib.uni b/IntelFrameworkPkg/Library/FrameworkUefiLib/FrameworkUefiLib.uni
deleted file mode 100644
index 8643521eff..0000000000
--- a/IntelFrameworkPkg/Library/FrameworkUefiLib/FrameworkUefiLib.uni
+++ /dev/null
@@ -1,23 +0,0 @@
-// /** @file
-// Library to abstract Framework extensions that conflict with UEFI 2.0 Specification.
-//
-// This library is helpful to port Framework/Tinao code that has conflicts with UEFI 2.0.
-// It hides the old conflicts with library functions and supporting implementations of
-// the old (EDK/EFI 1.10) and new (EDK II/UEFI 2.0) way.
-//
-// Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
-//
-// This program and the accompanying materials
-// are licensed and made available under the terms and conditions of the BSD License
-// which accompanies this distribution. The full text of the license may be found at
-// http://opensource.org/licenses/bsd-license.php
-// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-//
-// **/
-
-
-#string STR_MODULE_ABSTRACT #language en-US "Library to abstract Framework extensions that conflict with the UEFI 2.0 Specification"
-
-#string STR_MODULE_DESCRIPTION #language en-US "This library is helpful to port Framework/Tiano code that has conflicts with UEFI 2.0. It hides the old conflicts with library functions and supporting implementations of the old (EDK/EFI 1.10) and new (EDK II/UEFI 2.0) methods."
-
diff --git a/IntelFrameworkPkg/Library/FrameworkUefiLib/UefiDriverModel.c b/IntelFrameworkPkg/Library/FrameworkUefiLib/UefiDriverModel.c
deleted file mode 100644
index 83482dad1c..0000000000
--- a/IntelFrameworkPkg/Library/FrameworkUefiLib/UefiDriverModel.c
+++ /dev/null
@@ -1,1056 +0,0 @@
-/** @file
- Library functions that abstract driver model protocols
- installation.
-
- Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
- This program and the accompanying materials are
- licensed and made available under the terms and conditions of the BSD License
- which accompanies this distribution. The full text of the license may be found at
- http://opensource.org/licenses/bsd-license.php
-
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-
-#include "UefiLibInternal.h"
-
-/**
- Installs and completes the initialization of a Driver Binding Protocol instance.
-
- Installs the Driver Binding Protocol specified by DriverBinding onto the handle
- specified by DriverBindingHandle. If DriverBindingHandle is NULL, then DriverBinding
- is installed onto a newly created handle. DriverBindingHandle is typically the same
- as the driver's ImageHandle, but it can be different if the driver produces multiple
- Driver Binding Protocols.
- If DriverBinding is NULL, then ASSERT().
- If DriverBinding can not be installed onto a handle, then ASSERT().
-
- @param ImageHandle The image handle of the driver.
- @param SystemTable The EFI System Table that was passed to the driver's entry point.
- @param DriverBinding A Driver Binding Protocol instance that this driver is producing.
- @param DriverBindingHandle The handle that DriverBinding is to be installed onto. If this
- parameter is NULL, then a new handle is created.
-
- @retval EFI_SUCCESS The protocol installation is completed successfully.
- @retval EFI_OUT_OF_RESOURCES There was not enough system resources to install the protocol.
- @retval Others Status from gBS->InstallMultipleProtocolInterfaces().
-
-**/
-EFI_STATUS
-EFIAPI
-EfiLibInstallDriverBinding (
- IN CONST EFI_HANDLE ImageHandle,
- IN CONST EFI_SYSTEM_TABLE *SystemTable,
- IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding,
- IN EFI_HANDLE DriverBindingHandle
- )
-{
- EFI_STATUS Status;
-
- ASSERT (DriverBinding != NULL);
-
- //
- // Update the ImageHandle and DriverBindingHandle fields of the Driver Binding Protocol
- //
- DriverBinding->ImageHandle = ImageHandle;
- DriverBinding->DriverBindingHandle = DriverBindingHandle;
-
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- NULL
- );
- //
- // ASSERT if the call to InstallMultipleProtocolInterfaces() failed
- //
- ASSERT_EFI_ERROR (Status);
-
- return Status;
-}
-
-
-/**
- Installs and completes the initialization of a Driver Binding Protocol instance and
- optionally installs the Component Name, Driver Configuration and Driver Diagnostics Protocols.
-
- Initializes a driver by installing the Driver Binding Protocol together with the
- optional Component Name, optional Driver Configure and optional Driver Diagnostic
- Protocols onto the driver's DriverBindingHandle. If DriverBindingHandle is NULL,
- then the protocols are installed onto a newly created handle. DriverBindingHandle
- is typically the same as the driver's ImageHandle, but it can be different if the
- driver produces multiple Driver Binding Protocols.
- If DriverBinding is NULL, then ASSERT().
- If the installation fails, then ASSERT().
-
- @param ImageHandle The image handle of the driver.
- @param SystemTable The EFI System Table that was passed to the driver's entry point.
- @param DriverBinding A Driver Binding Protocol instance that this driver is producing.
- @param DriverBindingHandle The handle that DriverBinding is to be installed onto. If this
- parameter is NULL, then a new handle is created.
- @param ComponentName A Component Name Protocol instance that this driver is producing.
- @param DriverConfiguration A Driver Configuration Protocol instance that this driver is producing.
- @param DriverDiagnostics A Driver Diagnostics Protocol instance that this driver is producing.
-
- @retval EFI_SUCCESS The protocol installation is completed successfully.
- @retval EFI_OUT_OF_RESOURCES There was not enough memory in pool to install all the protocols.
-
-**/
-EFI_STATUS
-EFIAPI
-EfiLibInstallAllDriverProtocols (
- IN CONST EFI_HANDLE ImageHandle,
- IN CONST EFI_SYSTEM_TABLE *SystemTable,
- IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding,
- IN EFI_HANDLE DriverBindingHandle,
- IN CONST EFI_COMPONENT_NAME_PROTOCOL *ComponentName, OPTIONAL
- IN CONST EFI_DRIVER_CONFIGURATION_PROTOCOL *DriverConfiguration, OPTIONAL
- IN CONST EFI_DRIVER_DIAGNOSTICS_PROTOCOL *DriverDiagnostics OPTIONAL
- )
-{
- EFI_STATUS Status;
-
- ASSERT (DriverBinding != NULL);
-
- //
- // Update the ImageHandle and DriverBindingHandle fields of the Driver Binding Protocol
- //
- DriverBinding->ImageHandle = ImageHandle;
- DriverBinding->DriverBindingHandle = DriverBindingHandle;
-
- if (DriverDiagnostics == NULL || FeaturePcdGet(PcdDriverDiagnosticsDisable)) {
- if (DriverConfiguration == NULL) {
- if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- NULL
- );
- } else {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentNameProtocolGuid, ComponentName,
- NULL
- );
- }
- } else {
- if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
- NULL
- );
- } else {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentNameProtocolGuid, ComponentName,
- &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
- NULL
- );
- }
- }
- } else {
- if (DriverConfiguration == NULL) {
- if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
- NULL
- );
- } else {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentNameProtocolGuid, ComponentName,
- &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
- NULL
- );
- }
- } else {
- if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
- &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
- NULL
- );
- } else {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentNameProtocolGuid, ComponentName,
- &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
- &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
- NULL
- );
- }
- }
- }
-
- //
- // ASSERT if the call to InstallMultipleProtocolInterfaces() failed
- //
- ASSERT_EFI_ERROR (Status);
-
- return Status;
-}
-
-
-
-/**
- Installs Driver Binding Protocol with optional Component Name and Component Name 2 Protocols.
-
- Initializes a driver by installing the Driver Binding Protocol together with the
- optional Component Name and optional Component Name 2 protocols onto the driver's
- DriverBindingHandle. If DriverBindingHandle is NULL, then the protocols are installed
- onto a newly created handle. DriverBindingHandle is typically the same as the driver's
- ImageHandle, but it can be different if the driver produces multiple Driver Binding Protocols.
- If DriverBinding is NULL, then ASSERT().
- If the installation fails, then ASSERT().
-
- @param ImageHandle The image handle of the driver.
- @param SystemTable The EFI System Table that was passed to the driver's entry point.
- @param DriverBinding A Driver Binding Protocol instance that this driver is producing.
- @param DriverBindingHandle The handle that DriverBinding is to be installed onto. If this
- parameter is NULL, then a new handle is created.
- @param ComponentName A Component Name Protocol instance that this driver is producing.
- @param ComponentName2 A Component Name 2 Protocol instance that this driver is producing.
-
- @retval EFI_SUCCESS The protocol installation is completed successfully.
- @retval EFI_OUT_OF_RESOURCES There was not enough memory in pool to install all the protocols.
-
-**/
-EFI_STATUS
-EFIAPI
-EfiLibInstallDriverBindingComponentName2 (
- IN CONST EFI_HANDLE ImageHandle,
- IN CONST EFI_SYSTEM_TABLE *SystemTable,
- IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding,
- IN EFI_HANDLE DriverBindingHandle,
- IN CONST EFI_COMPONENT_NAME_PROTOCOL *ComponentName, OPTIONAL
- IN CONST EFI_COMPONENT_NAME2_PROTOCOL *ComponentName2 OPTIONAL
- )
-{
- EFI_STATUS Status;
-
- ASSERT (DriverBinding != NULL);
-
- //
- // Update the ImageHandle and DriverBindingHandle fields of the Driver Binding Protocol
- //
- DriverBinding->ImageHandle = ImageHandle;
- DriverBinding->DriverBindingHandle = DriverBindingHandle;
-
- if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
- if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- NULL
- );
- } else {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentName2ProtocolGuid, ComponentName2,
- NULL
- );
- }
- } else {
- if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentNameProtocolGuid, ComponentName,
- NULL
- );
- } else {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentNameProtocolGuid, ComponentName,
- &gEfiComponentName2ProtocolGuid, ComponentName2,
- NULL
- );
- }
- }
-
- //
- // ASSERT if the call to InstallMultipleProtocolInterfaces() failed
- //
- ASSERT_EFI_ERROR (Status);
-
- return Status;
-}
-
-
-
-/**
- Installs Driver Binding Protocol with optional Component Name, Component Name 2, Driver
- Configuration, Driver Configuration 2, Driver Diagnostics, and Driver Diagnostics 2 Protocols.
-
- Initializes a driver by installing the Driver Binding Protocol together with the optional
- Component Name, optional Component Name 2, optional Driver Configuration, optional Driver Configuration 2,
- optional Driver Diagnostic, and optional Driver Diagnostic 2 Protocols onto the driver's DriverBindingHandle.
- DriverBindingHandle is typically the same as the driver's ImageHandle, but it can be different if the driver
- produces multiple Driver Binding Protocols.
- If DriverBinding is NULL, then ASSERT().
- If the installation fails, then ASSERT().
-
-
- @param ImageHandle The image handle of the driver.
- @param SystemTable The EFI System Table that was passed to the driver's entry point.
- @param DriverBinding A Driver Binding Protocol instance that this driver is producing.
- @param DriverBindingHandle The handle that DriverBinding is to be installed onto. If this
- parameter is NULL, then a new handle is created.
- @param ComponentName A Component Name Protocol instance that this driver is producing.
- @param ComponentName2 A Component Name 2 Protocol instance that this driver is producing.
- @param DriverConfiguration A Driver Configuration Protocol instance that this driver is producing.
- @param DriverConfiguration2 A Driver Configuration Protocol 2 instance that this driver is producing.
- @param DriverDiagnostics A Driver Diagnostics Protocol instance that this driver is producing.
- @param DriverDiagnostics2 A Driver Diagnostics Protocol 2 instance that this driver is producing.
-
- @retval EFI_SUCCESS The protocol installation is completed successfully.
- @retval EFI_OUT_OF_RESOURCES There was not enough memory in pool to install all the protocols.
-
-**/
-EFI_STATUS
-EFIAPI
-EfiLibInstallAllDriverProtocols2 (
- IN CONST EFI_HANDLE ImageHandle,
- IN CONST EFI_SYSTEM_TABLE *SystemTable,
- IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding,
- IN EFI_HANDLE DriverBindingHandle,
- IN CONST EFI_COMPONENT_NAME_PROTOCOL *ComponentName, OPTIONAL
- IN CONST EFI_COMPONENT_NAME2_PROTOCOL *ComponentName2, OPTIONAL
- IN CONST EFI_DRIVER_CONFIGURATION_PROTOCOL *DriverConfiguration, OPTIONAL
- IN CONST EFI_DRIVER_CONFIGURATION2_PROTOCOL *DriverConfiguration2, OPTIONAL
- IN CONST EFI_DRIVER_DIAGNOSTICS_PROTOCOL *DriverDiagnostics, OPTIONAL
- IN CONST EFI_DRIVER_DIAGNOSTICS2_PROTOCOL *DriverDiagnostics2 OPTIONAL
- )
-{
- EFI_STATUS Status;
-
- ASSERT (DriverBinding != NULL);
-
- //
- // Update the ImageHandle and DriverBindingHandle fields of the Driver Binding Protocol
- //
- DriverBinding->ImageHandle = ImageHandle;
- DriverBinding->DriverBindingHandle = DriverBindingHandle;
-
- if (DriverConfiguration2 == NULL) {
- if (DriverConfiguration == NULL) {
- if (DriverDiagnostics == NULL || FeaturePcdGet(PcdDriverDiagnosticsDisable)) {
- if (DriverDiagnostics2 == NULL || FeaturePcdGet(PcdDriverDiagnostics2Disable)) {
- if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
- if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- NULL
- );
- } else {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentName2ProtocolGuid, ComponentName2,
- NULL
- );
- }
- } else {
- if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentNameProtocolGuid, ComponentName,
- NULL
- );
- } else {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentNameProtocolGuid, ComponentName,
- &gEfiComponentName2ProtocolGuid, ComponentName2,
- NULL
- );
- }
- }
- } else {
- if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
- if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
- NULL
- );
- } else {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentName2ProtocolGuid, ComponentName2,
- &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
- NULL
- );
- }
- } else {
- if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentNameProtocolGuid, ComponentName,
- &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
- NULL
- );
- } else {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentNameProtocolGuid, ComponentName,
- &gEfiComponentName2ProtocolGuid, ComponentName2,
- &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
- NULL
- );
- }
- }
- }
- } else {
- if (DriverDiagnostics2 == NULL || FeaturePcdGet(PcdDriverDiagnostics2Disable)) {
- if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
- if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
- NULL
- );
- } else {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentName2ProtocolGuid, ComponentName2,
- &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
- NULL
- );
- }
- } else {
- if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentNameProtocolGuid, ComponentName,
- &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
- NULL
- );
- } else {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentNameProtocolGuid, ComponentName,
- &gEfiComponentName2ProtocolGuid, ComponentName2,
- &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
- NULL
- );
- }
- }
- } else {
- if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
- if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
- &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
- NULL
- );
- } else {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentName2ProtocolGuid, ComponentName2,
- &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
- &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
- NULL
- );
- }
- } else {
- if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentNameProtocolGuid, ComponentName,
- &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
- &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
- NULL
- );
- } else {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentNameProtocolGuid, ComponentName,
- &gEfiComponentName2ProtocolGuid, ComponentName2,
- &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
- &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
- NULL
- );
- }
- }
- }
- }
- } else {
- if (DriverDiagnostics == NULL || FeaturePcdGet(PcdDriverDiagnosticsDisable)) {
- if (DriverDiagnostics2 == NULL || FeaturePcdGet(PcdDriverDiagnostics2Disable)) {
- if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
- if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
- NULL
- );
- } else {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentName2ProtocolGuid, ComponentName2,
- &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
- NULL
- );
- }
- } else {
- if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentNameProtocolGuid, ComponentName,
- &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
- NULL
- );
- } else {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentNameProtocolGuid, ComponentName,
- &gEfiComponentName2ProtocolGuid, ComponentName2,
- &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
- NULL
- );
- }
- }
- } else {
- if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
- if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
- &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
- NULL
- );
- } else {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentName2ProtocolGuid, ComponentName2,
- &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
- &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
- NULL
- );
- }
- } else {
- if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentNameProtocolGuid, ComponentName,
- &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
- &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
- NULL
- );
- } else {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentNameProtocolGuid, ComponentName,
- &gEfiComponentName2ProtocolGuid, ComponentName2,
- &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
- &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
- NULL
- );
- }
- }
- }
- } else {
- if (DriverDiagnostics2 == NULL || FeaturePcdGet(PcdDriverDiagnostics2Disable)) {
- if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
- if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
- &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
- NULL
- );
- } else {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentName2ProtocolGuid, ComponentName2,
- &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
- &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
- NULL
- );
- }
- } else {
- if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentNameProtocolGuid, ComponentName,
- &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
- &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
- NULL
- );
- } else {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentNameProtocolGuid, ComponentName,
- &gEfiComponentName2ProtocolGuid, ComponentName2,
- &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
- &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
- NULL
- );
- }
- }
- } else {
- if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
- if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
- &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
- &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
- NULL
- );
- } else {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentName2ProtocolGuid, ComponentName2,
- &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
- &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
- &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
- NULL
- );
- }
- } else {
- if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentNameProtocolGuid, ComponentName,
- &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
- &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
- &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
- NULL
- );
- } else {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentNameProtocolGuid, ComponentName,
- &gEfiComponentName2ProtocolGuid, ComponentName2,
- &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
- &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
- &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
- NULL
- );
- }
- }
- }
- }
- }
- } else {
- if (DriverConfiguration == NULL) {
- if (DriverDiagnostics == NULL || FeaturePcdGet(PcdDriverDiagnosticsDisable)) {
- if (DriverDiagnostics2 == NULL || FeaturePcdGet(PcdDriverDiagnostics2Disable)) {
- if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
- if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
- NULL
- );
- } else {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentName2ProtocolGuid, ComponentName2,
- &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
- NULL
- );
- }
- } else {
- if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentNameProtocolGuid, ComponentName,
- &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
- NULL
- );
- } else {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentNameProtocolGuid, ComponentName,
- &gEfiComponentName2ProtocolGuid, ComponentName2,
- &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
- NULL
- );
- }
- }
- } else {
- if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
- if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
- &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
- NULL
- );
- } else {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentName2ProtocolGuid, ComponentName2,
- &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
- &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
- NULL
- );
- }
- } else {
- if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentNameProtocolGuid, ComponentName,
- &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
- &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
- NULL
- );
- } else {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentNameProtocolGuid, ComponentName,
- &gEfiComponentName2ProtocolGuid, ComponentName2,
- &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
- &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
- NULL
- );
- }
- }
- }
- } else {
- if (DriverDiagnostics2 == NULL || FeaturePcdGet(PcdDriverDiagnostics2Disable)) {
- if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
- if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
- &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
- NULL
- );
- } else {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentName2ProtocolGuid, ComponentName2,
- &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
- &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
- NULL
- );
- }
- } else {
- if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentNameProtocolGuid, ComponentName,
- &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
- &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
- NULL
- );
- } else {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentNameProtocolGuid, ComponentName,
- &gEfiComponentName2ProtocolGuid, ComponentName2,
- &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
- &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
- NULL
- );
- }
- }
- } else {
- if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
- if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
- &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
- &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
- NULL
- );
- } else {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentName2ProtocolGuid, ComponentName2,
- &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
- &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
- &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
- NULL
- );
- }
- } else {
- if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentNameProtocolGuid, ComponentName,
- &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
- &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
- &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
- NULL
- );
- } else {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentNameProtocolGuid, ComponentName,
- &gEfiComponentName2ProtocolGuid, ComponentName2,
- &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
- &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
- &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
- NULL
- );
- }
- }
- }
- }
- } else {
- if (DriverDiagnostics == NULL || FeaturePcdGet(PcdDriverDiagnosticsDisable)) {
- if (DriverDiagnostics2 == NULL || FeaturePcdGet(PcdDriverDiagnostics2Disable)) {
- if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
- if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
- &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
- NULL
- );
- } else {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentName2ProtocolGuid, ComponentName2,
- &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
- &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
- NULL
- );
- }
- } else {
- if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentNameProtocolGuid, ComponentName,
- &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
- &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
- NULL
- );
- } else {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentNameProtocolGuid, ComponentName,
- &gEfiComponentName2ProtocolGuid, ComponentName2,
- &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
- &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
- NULL
- );
- }
- }
- } else {
- if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
- if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
- &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
- &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
- NULL
- );
- } else {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentName2ProtocolGuid, ComponentName2,
- &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
- &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
- &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
- NULL
- );
- }
- } else {
- if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentNameProtocolGuid, ComponentName,
- &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
- &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
- &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
- NULL
- );
- } else {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentNameProtocolGuid, ComponentName,
- &gEfiComponentName2ProtocolGuid, ComponentName2,
- &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
- &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
- &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
- NULL
- );
- }
- }
- }
- } else {
- if (DriverDiagnostics2 == NULL || FeaturePcdGet(PcdDriverDiagnostics2Disable)) {
- if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
- if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
- &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
- &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
- NULL
- );
- } else {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentName2ProtocolGuid, ComponentName2,
- &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
- &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
- &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
- NULL
- );
- }
- } else {
- if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentNameProtocolGuid, ComponentName,
- &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
- &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
- &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
- NULL
- );
- } else {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentNameProtocolGuid, ComponentName,
- &gEfiComponentName2ProtocolGuid, ComponentName2,
- &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
- &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
- &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
- NULL
- );
- }
- }
- } else {
- if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {
- if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
- &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
- &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
- &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
- NULL
- );
- } else {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentName2ProtocolGuid, ComponentName2,
- &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
- &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
- &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
- &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
- NULL
- );
- }
- } else {
- if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentNameProtocolGuid, ComponentName,
- &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
- &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
- &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
- &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
- NULL
- );
- } else {
- Status = gBS->InstallMultipleProtocolInterfaces (
- &DriverBinding->DriverBindingHandle,
- &gEfiDriverBindingProtocolGuid, DriverBinding,
- &gEfiComponentNameProtocolGuid, ComponentName,
- &gEfiComponentName2ProtocolGuid, ComponentName2,
- &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,
- &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,
- &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,
- &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,
- NULL
- );
- }
- }
- }
- }
- }
- }
-
- //
- // ASSERT if the call to InstallMultipleProtocolInterfaces() failed
- //
- ASSERT_EFI_ERROR (Status);
-
- return Status;
-}
diff --git a/IntelFrameworkPkg/Library/FrameworkUefiLib/UefiLib.c b/IntelFrameworkPkg/Library/FrameworkUefiLib/UefiLib.c
deleted file mode 100644
index 45bf4b17c5..0000000000
--- a/IntelFrameworkPkg/Library/FrameworkUefiLib/UefiLib.c
+++ /dev/null
@@ -1,1892 +0,0 @@
-/** @file
- The UEFI Library provides functions and macros that simplify the development of
- UEFI Drivers and UEFI Applications. These functions and macros help manage EFI
- events, build simple locks utilizing EFI Task Priority Levels (TPLs), install
- EFI Driver Model related protocols, manage Unicode string tables for UEFI Drivers,
- and print messages on the console output and standard error devices.
-
- Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
- This program and the accompanying materials
- are licensed and made available under the terms and conditions of the BSD License
- which accompanies this distribution. The full text of the license may be found at
- http://opensource.org/licenses/bsd-license.php
-
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-
-#include "UefiLibInternal.h"
-
-/**
- Compare whether two names of languages are identical.
-
- @param Language1 Name of language 1.
- @param Language2 Name of language 2.
-
- @retval TRUE Language 1 and language 2 are the same.
- @retval FALSE Language 1 and language 2 are not the same.
-
-**/
-BOOLEAN
-CompareIso639LanguageCode (
- IN CONST CHAR8 *Language1,
- IN CONST CHAR8 *Language2
- )
-{
- UINT32 Name1;
- UINT32 Name2;
-
- Name1 = ReadUnaligned24 ((CONST UINT32 *) Language1);
- Name2 = ReadUnaligned24 ((CONST UINT32 *) Language2);
-
- return (BOOLEAN) (Name1 == Name2);
-}
-
-/**
- Retrieves a pointer to the system configuration table from the EFI System Table
- based on a specified GUID.
-
- This function searches the list of configuration tables stored in the EFI System Table
- for a table with a GUID that matches TableGuid. If a match is found, then a pointer to
- the configuration table is returned in Table., and EFI_SUCCESS is returned. If a matching GUID
- is not found, then EFI_NOT_FOUND is returned.
- If TableGuid is NULL, then ASSERT().
- If Table is NULL, then ASSERT().
-
- @param TableGuid Pointer to table's GUID type..
- @param Table Pointer to the table associated with TableGuid in the EFI System Table.
-
- @retval EFI_SUCCESS A configuration table matching TableGuid was found.
- @retval EFI_NOT_FOUND A configuration table matching TableGuid could not be found.
-
-**/
-EFI_STATUS
-EFIAPI
-EfiGetSystemConfigurationTable (
- IN EFI_GUID *TableGuid,
- OUT VOID **Table
- )
-{
- EFI_SYSTEM_TABLE *SystemTable;
- UINTN Index;
-
- ASSERT (TableGuid != NULL);
- ASSERT (Table != NULL);
-
- SystemTable = gST;
- *Table = NULL;
- for (Index = 0; Index < SystemTable->NumberOfTableEntries; Index++) {
- if (CompareGuid (TableGuid, &(SystemTable->ConfigurationTable[Index].VendorGuid))) {
- *Table = SystemTable->ConfigurationTable[Index].VendorTable;
- return EFI_SUCCESS;
- }
- }
-
- return EFI_NOT_FOUND;
-}
-
-/**
- Creates and returns a notification event and registers that event with all the protocol
- instances specified by ProtocolGuid.
-
- This function causes the notification function to be executed for every protocol of type
- ProtocolGuid instance that exists in the system when this function is invoked. If there are
- no instances of ProtocolGuid in the handle database at the time this function is invoked,
- then the notification function is still executed one time. In addition, every time a protocol
- of type ProtocolGuid instance is installed or reinstalled, the notification function is also
- executed. This function returns the notification event that was created.
- If ProtocolGuid is NULL, then ASSERT().
- If NotifyTpl is not a legal TPL value, then ASSERT().
- If NotifyFunction is NULL, then ASSERT().
- If Registration is NULL, then ASSERT().
-
-
- @param ProtocolGuid Supplies GUID of the protocol upon whose installation the event is fired.
- @param NotifyTpl Supplies the task priority level of the event notifications.
- @param NotifyFunction Supplies the function to notify when the event is signaled.
- @param NotifyContext The context parameter to pass to NotifyFunction.
- @param Registration A pointer to a memory location to receive the registration value.
- This value is passed to LocateHandle() to obtain new handles that
- have been added that support the ProtocolGuid-specified protocol.
-
- @return The notification event that was created.
-
-**/
-EFI_EVENT
-EFIAPI
-EfiCreateProtocolNotifyEvent(
- IN EFI_GUID *ProtocolGuid,
- IN EFI_TPL NotifyTpl,
- IN EFI_EVENT_NOTIFY NotifyFunction,
- IN VOID *NotifyContext, OPTIONAL
- OUT VOID **Registration
- )
-{
- EFI_STATUS Status;
- EFI_EVENT Event;
-
- ASSERT (ProtocolGuid != NULL);
- ASSERT (NotifyFunction != NULL);
- ASSERT (Registration != NULL);
-
- //
- // Create the event
- //
-
- Status = gBS->CreateEvent (
- EVT_NOTIFY_SIGNAL,
- NotifyTpl,
- NotifyFunction,
- NotifyContext,
- &Event
- );
- ASSERT_EFI_ERROR (Status);
-
- //
- // Register for protocol notifications on this event
- //
-
- Status = gBS->RegisterProtocolNotify (
- ProtocolGuid,
- Event,
- Registration
- );
-
- ASSERT_EFI_ERROR (Status);
-
- //
- // Kick the event so we will perform an initial pass of
- // current installed drivers
- //
-
- gBS->SignalEvent (Event);
- return Event;
-}
-
-/**
- Creates a named event that can be signaled with EfiNamedEventSignal().
-
- This function creates an event using NotifyTpl, NoifyFunction, and NotifyContext.
- This event is signaled with EfiNamedEventSignal(). This provides the ability for one or more
- listeners on the same event named by the GUID specified by Name.
- If Name is NULL, then ASSERT().
- If NotifyTpl is not a legal TPL value, then ASSERT().
- If NotifyFunction is NULL, then ASSERT().
-
- @param Name Supplies GUID name of the event.
- @param NotifyTpl Supplies the task priority level of the event notifications.
- @param NotifyFunction Supplies the function to notify when the event is signaled.
- @param NotifyContext The context parameter to pass to NotifyFunction.
- @param Registration A pointer to a memory location to receive the registration value.
-
- @retval EFI_SUCCESS A named event was created.
- @retval EFI_OUT_OF_RESOURCES There are not enough resource to create the named event.
-
-**/
-EFI_STATUS
-EFIAPI
-EfiNamedEventListen (
- IN CONST EFI_GUID *Name,
- IN EFI_TPL NotifyTpl,
- IN EFI_EVENT_NOTIFY NotifyFunction,
- IN CONST VOID *NotifyContext, OPTIONAL
- OUT VOID *Registration OPTIONAL
- )
-{
- EFI_STATUS Status;
- EFI_EVENT Event;
- VOID *RegistrationLocal;
-
- ASSERT (Name != NULL);
- ASSERT (NotifyFunction != NULL);
- ASSERT (NotifyTpl <= TPL_HIGH_LEVEL);
-
- //
- // Create event
- //
- Status = gBS->CreateEvent (
- EVT_NOTIFY_SIGNAL,
- NotifyTpl,
- NotifyFunction,
- (VOID *) NotifyContext,
- &Event
- );
- ASSERT_EFI_ERROR (Status);
-
- //
- // The Registration is not optional to RegisterProtocolNotify().
- // To make it optional to EfiNamedEventListen(), may need to substitute with a local.
- //
- if (Registration != NULL) {
- RegistrationLocal = Registration;
- } else {
- RegistrationLocal = &RegistrationLocal;
- }
-
- //
- // Register for an installation of protocol interface
- //
-
- Status = gBS->RegisterProtocolNotify (
- (EFI_GUID *) Name,
- Event,
- RegistrationLocal
- );
- ASSERT_EFI_ERROR (Status);
-
- return Status;
-}
-
-/**
- Signals a named event created with EfiNamedEventListen().
-
- This function signals the named event specified by Name. The named event must have been
- created with EfiNamedEventListen().
- If Name is NULL, then ASSERT().
-
- @param Name Supplies GUID name of the event.
-
- @retval EFI_SUCCESS A named event was signaled.
- @retval EFI_OUT_OF_RESOURCES There are not enough resource to signal the named event.
-
-**/
-EFI_STATUS
-EFIAPI
-EfiNamedEventSignal (
- IN CONST EFI_GUID *Name
- )
-{
- EFI_STATUS Status;
- EFI_HANDLE Handle;
-
- ASSERT(Name != NULL);
-
- Handle = NULL;
- Status = gBS->InstallProtocolInterface (
- &Handle,
- (EFI_GUID *) Name,
- EFI_NATIVE_INTERFACE,
- NULL
- );
- ASSERT_EFI_ERROR (Status);
-
- Status = gBS->UninstallProtocolInterface (
- Handle,
- (EFI_GUID *) Name,
- NULL
- );
- ASSERT_EFI_ERROR (Status);
-
- return Status;
-}
-
-/**
- Signals an event group by placing a new event in the group temporarily and
- signaling it.
-
- @param[in] EventGroup Supplies the unique identifier of the event
- group to signal.
-
- @retval EFI_SUCCESS The event group was signaled successfully.
- @retval EFI_INVALID_PARAMETER EventGroup is NULL.
- @return Error codes that report problems about event
- creation or signaling.
-**/
-EFI_STATUS
-EFIAPI
-EfiEventGroupSignal (
- IN CONST EFI_GUID *EventGroup
- )
-{
- EFI_STATUS Status;
- EFI_EVENT Event;
-
- if (EventGroup == NULL) {
- return EFI_INVALID_PARAMETER;
- }
-
- Status = gBS->CreateEventEx (
- EVT_NOTIFY_SIGNAL,
- TPL_CALLBACK,
- EfiEventEmptyFunction,
- NULL,
- EventGroup,
- &Event
- );
- if (EFI_ERROR (Status)) {
- return Status;
- }
-
- Status = gBS->SignalEvent (Event);
- gBS->CloseEvent (Event);
-
- return Status;
-}
-
-/**
- An empty function that can be used as NotifyFunction parameter of
- CreateEvent() or CreateEventEx().
-
- @param Event Event whose notification function is being invoked.
- @param Context The pointer to the notification function's context,
- which is implementation-dependent.
-
-**/
-VOID
-EFIAPI
-EfiEventEmptyFunction (
- IN EFI_EVENT Event,
- IN VOID *Context
- )
-{
-}
-
-/**
- Returns the current TPL.
-
- This function returns the current TPL. There is no EFI service to directly
- retrieve the current TPL. Instead, the RaiseTPL() function is used to raise
- the TPL to TPL_HIGH_LEVEL. This will return the current TPL. The TPL level
- can then immediately be restored back to the current TPL level with a call
- to RestoreTPL().
-
- @return The current TPL.
-
-**/
-EFI_TPL
-EFIAPI
-EfiGetCurrentTpl (
- VOID
- )
-{
- EFI_TPL Tpl;
-
- Tpl = gBS->RaiseTPL (TPL_HIGH_LEVEL);
- gBS->RestoreTPL (Tpl);
-
- return Tpl;
-}
-
-
-/**
- Initializes a basic mutual exclusion lock.
-
- This function initializes a basic mutual exclusion lock to the released state
- and returns the lock. Each lock provides mutual exclusion access at its task
- priority level. Since there is no preemption or multiprocessor support in EFI,
- acquiring the lock only consists of raising to the locks TPL.
- If Lock is NULL, then ASSERT().
- If Priority is not a valid TPL value, then ASSERT().
-
- @param Lock A pointer to the lock data structure to initialize.
- @param Priority EFI TPL associated with the lock.
-
- @return The lock.
-
-**/
-EFI_LOCK *
-EFIAPI
-EfiInitializeLock (
- IN OUT EFI_LOCK *Lock,
- IN EFI_TPL Priority
- )
-{
- ASSERT (Lock != NULL);
- ASSERT (Priority <= TPL_HIGH_LEVEL);
-
- Lock->Tpl = Priority;
- Lock->OwnerTpl = TPL_APPLICATION;
- Lock->Lock = EfiLockReleased ;
- return Lock;
-}
-
-/**
- Acquires ownership of a lock.
-
- This function raises the system's current task priority level to the task
- priority level of the mutual exclusion lock. Then, it places the lock in the
- acquired state.
- If Lock is NULL, then ASSERT().
- If Lock is not initialized, then ASSERT().
- If Lock is already in the acquired state, then ASSERT().
-
- @param Lock A pointer to the lock to acquire.
-
-**/
-VOID
-EFIAPI
-EfiAcquireLock (
- IN EFI_LOCK *Lock
- )
-{
- ASSERT (Lock != NULL);
- ASSERT (Lock->Lock == EfiLockReleased);
-
- Lock->OwnerTpl = gBS->RaiseTPL (Lock->Tpl);
- Lock->Lock = EfiLockAcquired;
-}
-
-/**
- Acquires ownership of a lock.
-
- This function raises the system's current task priority level to the task priority
- level of the mutual exclusion lock. Then, it attempts to place the lock in the acquired state.
- If the lock is already in the acquired state, then EFI_ACCESS_DENIED is returned.
- Otherwise, EFI_SUCCESS is returned.
- If Lock is NULL, then ASSERT().
- If Lock is not initialized, then ASSERT().
-
- @param Lock A pointer to the lock to acquire.
-
- @retval EFI_SUCCESS The lock was acquired.
- @retval EFI_ACCESS_DENIED The lock could not be acquired because it is already owned.
-
-**/
-EFI_STATUS
-EFIAPI
-EfiAcquireLockOrFail (
- IN EFI_LOCK *Lock
- )
-{
-
- ASSERT (Lock != NULL);
- ASSERT (Lock->Lock != EfiLockUninitialized);
-
- if (Lock->Lock == EfiLockAcquired) {
- //
- // Lock is already owned, so bail out
- //
- return EFI_ACCESS_DENIED;
- }
-
- Lock->OwnerTpl = gBS->RaiseTPL (Lock->Tpl);
-
- Lock->Lock = EfiLockAcquired;
-
- return EFI_SUCCESS;
-}
-
-/**
- Releases ownership of a lock.
-
- This function transitions a mutual exclusion lock from the acquired state to
- the released state, and restores the system's task priority level to its
- previous level.
- If Lock is NULL, then ASSERT().
- If Lock is not initialized, then ASSERT().
- If Lock is already in the released state, then ASSERT().
-
- @param Lock A pointer to the lock to release.
-
-**/
-VOID
-EFIAPI
-EfiReleaseLock (
- IN EFI_LOCK *Lock
- )
-{
- EFI_TPL Tpl;
-
- ASSERT (Lock != NULL);
- ASSERT (Lock->Lock == EfiLockAcquired);
-
- Tpl = Lock->OwnerTpl;
-
- Lock->Lock = EfiLockReleased;
-
- gBS->RestoreTPL (Tpl);
-}
-
-/**
- Tests whether a controller handle is being managed by a specific driver.
-
- This function tests whether the driver specified by DriverBindingHandle is
- currently managing the controller specified by ControllerHandle. This test
- is performed by evaluating if the the protocol specified by ProtocolGuid is
- present on ControllerHandle and is was opened by DriverBindingHandle with an
- attribute of EFI_OPEN_PROTOCOL_BY_DRIVER.
- If ProtocolGuid is NULL, then ASSERT().
-
- @param ControllerHandle A handle for a controller to test.
- @param DriverBindingHandle Specifies the driver binding handle for the
- driver.
- @param ProtocolGuid Specifies the protocol that the driver specified
- by DriverBindingHandle opens in its Start()
- function.
-
- @retval EFI_SUCCESS ControllerHandle is managed by the driver
- specified by DriverBindingHandle.
- @retval EFI_UNSUPPORTED ControllerHandle is not managed by the driver
- specified by DriverBindingHandle.
-
-**/
-EFI_STATUS
-EFIAPI
-EfiTestManagedDevice (
- IN CONST EFI_HANDLE ControllerHandle,
- IN CONST EFI_HANDLE DriverBindingHandle,
- IN CONST EFI_GUID *ProtocolGuid
- )
-{
- EFI_STATUS Status;
- VOID *ManagedInterface;
-
- ASSERT (ProtocolGuid != NULL);
-
- Status = gBS->OpenProtocol (
- ControllerHandle,
- (EFI_GUID *) ProtocolGuid,
- &ManagedInterface,
- DriverBindingHandle,
- ControllerHandle,
- EFI_OPEN_PROTOCOL_BY_DRIVER
- );
- if (!EFI_ERROR (Status)) {
- gBS->CloseProtocol (
- ControllerHandle,
- (EFI_GUID *) ProtocolGuid,
- DriverBindingHandle,
- ControllerHandle
- );
- return EFI_UNSUPPORTED;
- }
-
- if (Status != EFI_ALREADY_STARTED) {
- return EFI_UNSUPPORTED;
- }
-
- return EFI_SUCCESS;
-}
-
-/**
- Tests whether a child handle is a child device of the controller.
-
- This function tests whether ChildHandle is one of the children of
- ControllerHandle. This test is performed by checking to see if the protocol
- specified by ProtocolGuid is present on ControllerHandle and opened by
- ChildHandle with an attribute of EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER.
- If ProtocolGuid is NULL, then ASSERT().
-
- @param ControllerHandle A handle for a (parent) controller to test.
- @param ChildHandle A child handle to test.
- @param ProtocolGuid Supplies the protocol that the child controller
- opens on its parent controller.
-
- @retval EFI_SUCCESS ChildHandle is a child of the ControllerHandle.
- @retval EFI_UNSUPPORTED ChildHandle is not a child of the
- ControllerHandle.
-
-**/
-EFI_STATUS
-EFIAPI
-EfiTestChildHandle (
- IN CONST EFI_HANDLE ControllerHandle,
- IN CONST EFI_HANDLE ChildHandle,
- IN CONST EFI_GUID *ProtocolGuid
- )
-{
- EFI_STATUS Status;
- EFI_OPEN_PROTOCOL_INFORMATION_ENTRY *OpenInfoBuffer;
- UINTN EntryCount;
- UINTN Index;
-
- ASSERT (ProtocolGuid != NULL);
-
- //
- // Retrieve the list of agents that are consuming the specific protocol
- // on ControllerHandle.
- //
- Status = gBS->OpenProtocolInformation (
- ControllerHandle,
- (EFI_GUID *) ProtocolGuid,
- &OpenInfoBuffer,
- &EntryCount
- );
- if (EFI_ERROR (Status)) {
- return EFI_UNSUPPORTED;
- }
-
- //
- // Inspect if ChildHandle is one of the agents.
- //
- Status = EFI_UNSUPPORTED;
- for (Index = 0; Index < EntryCount; Index++) {
- if ((OpenInfoBuffer[Index].ControllerHandle == ChildHandle) &&
- (OpenInfoBuffer[Index].Attributes & EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER) != 0) {
- Status = EFI_SUCCESS;
- break;
- }
- }
-
- FreePool (OpenInfoBuffer);
- return Status;
-}
-
-/**
- This function looks up a Unicode string in UnicodeStringTable.
-
- If Language is a member of SupportedLanguages and a Unicode string is found in
- UnicodeStringTable that matches the language code specified by Language, then it
- is returned in UnicodeString.
-
- @param Language A pointer to the ISO 639-2 language code for the
- Unicode string to look up and return.
- @param SupportedLanguages A pointer to the set of ISO 639-2 language codes
- that the Unicode string table supports. Language
- must be a member of this set.
- @param UnicodeStringTable A pointer to the table of Unicode strings.
- @param UnicodeString A pointer to the Unicode string from UnicodeStringTable
- that matches the language specified by Language.
-
- @retval EFI_SUCCESS The Unicode string that matches the language
- specified by Language was found
- in the table of Unicode strings UnicodeStringTable,
- and it was returned in UnicodeString.
- @retval EFI_INVALID_PARAMETER Language is NULL.
- @retval EFI_INVALID_PARAMETER UnicodeString is NULL.
- @retval EFI_UNSUPPORTED SupportedLanguages is NULL.
- @retval EFI_UNSUPPORTED UnicodeStringTable is NULL.
- @retval EFI_UNSUPPORTED The language specified by Language is not a
- member of SupportedLanguages.
- @retval EFI_UNSUPPORTED The language specified by Language is not
- supported by UnicodeStringTable.
-
-**/
-EFI_STATUS
-EFIAPI
-LookupUnicodeString (
- IN CONST CHAR8 *Language,
- IN CONST CHAR8 *SupportedLanguages,
- IN CONST EFI_UNICODE_STRING_TABLE *UnicodeStringTable,
- OUT CHAR16 **UnicodeString
- )
-{
- //
- // Make sure the parameters are valid
- //
- if (Language == NULL || UnicodeString == NULL) {
- return EFI_INVALID_PARAMETER;
- }
-
- //
- // If there are no supported languages, or the Unicode String Table is empty, then the
- // Unicode String specified by Language is not supported by this Unicode String Table
- //
- if (SupportedLanguages == NULL || UnicodeStringTable == NULL) {
- return EFI_UNSUPPORTED;
- }
-
- //
- // Make sure Language is in the set of Supported Languages
- //
- while (*SupportedLanguages != 0) {
- if (CompareIso639LanguageCode (Language, SupportedLanguages)) {
-
- //
- // Search the Unicode String Table for the matching Language specifier
- //
- while (UnicodeStringTable->Language != NULL) {
- if (CompareIso639LanguageCode (Language, UnicodeStringTable->Language)) {
-
- //
- // A matching string was found, so return it
- //
- *UnicodeString = UnicodeStringTable->UnicodeString;
- return EFI_SUCCESS;
- }
-
- UnicodeStringTable++;
- }
-
- return EFI_UNSUPPORTED;
- }
-
- SupportedLanguages += 3;
- }
-
- return EFI_UNSUPPORTED;
-}
-
-
-
-/**
- This function looks up a Unicode string in UnicodeStringTable.
-
- If Language is a member of SupportedLanguages and a Unicode string is found in
- UnicodeStringTable that matches the language code specified by Language, then
- it is returned in UnicodeString.
-
- @param Language A pointer to an ASCII string containing the ISO 639-2 or the
- RFC 4646 language code for the Unicode string to look up and
- return. If Iso639Language is TRUE, then this ASCII string is
- not assumed to be Null-terminated, and only the first three
- characters are used. If Iso639Language is FALSE, then this ASCII
- string must be Null-terminated.
- @param SupportedLanguages A pointer to a Null-terminated ASCII string that contains a
- set of ISO 639-2 or RFC 4646 language codes that the Unicode
- string table supports. Language must be a member of this set.
- If Iso639Language is TRUE, then this string contains one or more
- ISO 639-2 language codes with no separator characters. If Iso639Language
- is FALSE, then is string contains one or more RFC 4646 language
- codes separated by ';'.
- @param UnicodeStringTable A pointer to the table of Unicode strings. Type EFI_UNICODE_STRING_TABLE
- is defined in "Related Definitions".
- @param UnicodeString A pointer to the Null-terminated Unicode string from UnicodeStringTable
- that matches the language specified by Language.
- @param Iso639Language Specifies the supported language code format. If it is TRUE, then
- Language and SupportedLanguages follow ISO 639-2 language code format.
- Otherwise, they follow RFC 4646 language code format.
-
-
- @retval EFI_SUCCESS The Unicode string that matches the language specified by Language
- was found in the table of Unicode strings UnicodeStringTable, and
- it was returned in UnicodeString.
- @retval EFI_INVALID_PARAMETER Language is NULL.
- @retval EFI_INVALID_PARAMETER UnicodeString is NULL.
- @retval EFI_UNSUPPORTED SupportedLanguages is NULL.
- @retval EFI_UNSUPPORTED UnicodeStringTable is NULL.
- @retval EFI_UNSUPPORTED The language specified by Language is not a member of SupportedLanguages.
- @retval EFI_UNSUPPORTED The language specified by Language is not supported by UnicodeStringTable.
-
-**/
-EFI_STATUS
-EFIAPI
-LookupUnicodeString2 (
- IN CONST CHAR8 *Language,
- IN CONST CHAR8 *SupportedLanguages,
- IN CONST EFI_UNICODE_STRING_TABLE *UnicodeStringTable,
- OUT CHAR16 **UnicodeString,
- IN BOOLEAN Iso639Language
- )
-{
- BOOLEAN Found;
- UINTN Index;
- CHAR8 *LanguageString;
-
- //
- // Make sure the parameters are valid
- //
- if (Language == NULL || UnicodeString == NULL) {
- return EFI_INVALID_PARAMETER;
- }
-
- //
- // If there are no supported languages, or the Unicode String Table is empty, then the
- // Unicode String specified by Language is not supported by this Unicode String Table
- //
- if (SupportedLanguages == NULL || UnicodeStringTable == NULL) {
- return EFI_UNSUPPORTED;
- }
-
- //
- // Make sure Language is in the set of Supported Languages
- //
- Found = FALSE;
- while (*SupportedLanguages != 0) {
- if (Iso639Language) {
- if (CompareIso639LanguageCode (Language, SupportedLanguages)) {
- Found = TRUE;
- break;
- }
- SupportedLanguages += 3;
- } else {
- for (Index = 0; SupportedLanguages[Index] != 0 && SupportedLanguages[Index] != ';'; Index++);
- if ((AsciiStrnCmp(SupportedLanguages, Language, Index) == 0) && (Language[Index] == 0)) {
- Found = TRUE;
- break;
- }
- SupportedLanguages += Index;
- for (; *SupportedLanguages != 0 && *SupportedLanguages == ';'; SupportedLanguages++);
- }
- }
-
- //
- // If Language is not a member of SupportedLanguages, then return EFI_UNSUPPORTED
- //
- if (!Found) {
- return EFI_UNSUPPORTED;
- }
-
- //
- // Search the Unicode String Table for the matching Language specifier
- //
- while (UnicodeStringTable->Language != NULL) {
- LanguageString = UnicodeStringTable->Language;
- while (0 != *LanguageString) {
- for (Index = 0 ;LanguageString[Index] != 0 && LanguageString[Index] != ';'; Index++);
- if (AsciiStrnCmp(LanguageString, Language, Index) == 0) {
- *UnicodeString = UnicodeStringTable->UnicodeString;
- return EFI_SUCCESS;
- }
- LanguageString += Index;
- for (Index = 0 ;LanguageString[Index] != 0 && LanguageString[Index] == ';'; Index++);
- }
- UnicodeStringTable++;
- }
-
- return EFI_UNSUPPORTED;
-}
-
-
-/**
- This function adds a Unicode string to UnicodeStringTable.
-
- If Language is a member of SupportedLanguages then UnicodeString is added to
- UnicodeStringTable. New buffers are allocated for both Language and
- UnicodeString. The contents of Language and UnicodeString are copied into
- these new buffers. These buffers are automatically freed when
- FreeUnicodeStringTable() is called.
-
- @param Language A pointer to the ISO 639-2 language code for the Unicode
- string to add.
- @param SupportedLanguages A pointer to the set of ISO 639-2 language codes
- that the Unicode string table supports.
- Language must be a member of this set.
- @param UnicodeStringTable A pointer to the table of Unicode strings.
- @param UnicodeString A pointer to the Unicode string to add.
-
- @retval EFI_SUCCESS The Unicode string that matches the language
- specified by Language was found in the table of
- Unicode strings UnicodeStringTable, and it was
- returned in UnicodeString.
- @retval EFI_INVALID_PARAMETER Language is NULL.
- @retval EFI_INVALID_PARAMETER UnicodeString is NULL.
- @retval EFI_INVALID_PARAMETER UnicodeString is an empty string.
- @retval EFI_UNSUPPORTED SupportedLanguages is NULL.
- @retval EFI_ALREADY_STARTED A Unicode string with language Language is
- already present in UnicodeStringTable.
- @retval EFI_OUT_OF_RESOURCES There is not enough memory to add another
- Unicode string to UnicodeStringTable.
- @retval EFI_UNSUPPORTED The language specified by Language is not a
- member of SupportedLanguages.
-
-**/
-EFI_STATUS
-EFIAPI
-AddUnicodeString (
- IN CONST CHAR8 *Language,
- IN CONST CHAR8 *SupportedLanguages,
- IN OUT EFI_UNICODE_STRING_TABLE **UnicodeStringTable,
- IN CONST CHAR16 *UnicodeString
- )
-{
- UINTN NumberOfEntries;
- EFI_UNICODE_STRING_TABLE *OldUnicodeStringTable;
- EFI_UNICODE_STRING_TABLE *NewUnicodeStringTable;
- UINTN UnicodeStringLength;
-
- //
- // Make sure the parameter are valid
- //
- if (Language == NULL || UnicodeString == NULL || UnicodeStringTable == NULL) {
- return EFI_INVALID_PARAMETER;
- }
-
- //
- // If there are no supported languages, then a Unicode String can not be added
- //
- if (SupportedLanguages == NULL) {
- return EFI_UNSUPPORTED;
- }
-
- //
- // If the Unicode String is empty, then a Unicode String can not be added
- //
- if (UnicodeString[0] == 0) {
- return EFI_INVALID_PARAMETER;
- }
-
- //
- // Make sure Language is a member of SupportedLanguages
- //
- while (*SupportedLanguages != 0) {
- if (CompareIso639LanguageCode (Language, SupportedLanguages)) {
-
- //
- // Determine the size of the Unicode String Table by looking for a NULL Language entry
- //
- NumberOfEntries = 0;
- if (*UnicodeStringTable != NULL) {
- OldUnicodeStringTable = *UnicodeStringTable;
- while (OldUnicodeStringTable->Language != NULL) {
- if (CompareIso639LanguageCode (Language, OldUnicodeStringTable->Language)) {
- return EFI_ALREADY_STARTED;
- }
-
- OldUnicodeStringTable++;
- NumberOfEntries++;
- }
- }
-
- //
- // Allocate space for a new Unicode String Table. It must hold the current number of
- // entries, plus 1 entry for the new Unicode String, plus 1 entry for the end of table
- // marker
- //
- NewUnicodeStringTable = AllocatePool ((NumberOfEntries + 2) * sizeof (EFI_UNICODE_STRING_TABLE));
- if (NewUnicodeStringTable == NULL) {
- return EFI_OUT_OF_RESOURCES;
- }
-
- //
- // If the current Unicode String Table contains any entries, then copy them to the
- // newly allocated Unicode String Table.
- //
- if (*UnicodeStringTable != NULL) {
- CopyMem (
- NewUnicodeStringTable,
- *UnicodeStringTable,
- NumberOfEntries * sizeof (EFI_UNICODE_STRING_TABLE)
- );
- }
-
- //
- // Allocate space for a copy of the Language specifier
- //
- NewUnicodeStringTable[NumberOfEntries].Language = AllocateCopyPool (3, Language);
- if (NewUnicodeStringTable[NumberOfEntries].Language == NULL) {
- gBS->FreePool (NewUnicodeStringTable);
- return EFI_OUT_OF_RESOURCES;
- }
-
- //
- // Compute the length of the Unicode String
- //
- for (UnicodeStringLength = 0; UnicodeString[UnicodeStringLength] != 0; UnicodeStringLength++)
- ;
-
- //
- // Allocate space for a copy of the Unicode String
- //
- NewUnicodeStringTable[NumberOfEntries].UnicodeString = AllocateCopyPool (
- (UnicodeStringLength + 1) * sizeof (CHAR16),
- UnicodeString
- );
- if (NewUnicodeStringTable[NumberOfEntries].UnicodeString == NULL) {
- gBS->FreePool (NewUnicodeStringTable[NumberOfEntries].Language);
- gBS->FreePool (NewUnicodeStringTable);
- return EFI_OUT_OF_RESOURCES;
- }
-
- //
- // Mark the end of the Unicode String Table
- //
- NewUnicodeStringTable[NumberOfEntries + 1].Language = NULL;
- NewUnicodeStringTable[NumberOfEntries + 1].UnicodeString = NULL;
-
- //
- // Free the old Unicode String Table
- //
- if (*UnicodeStringTable != NULL) {
- gBS->FreePool (*UnicodeStringTable);
- }
-
- //
- // Point UnicodeStringTable at the newly allocated Unicode String Table
- //
- *UnicodeStringTable = NewUnicodeStringTable;
-
- return EFI_SUCCESS;
- }
-
- SupportedLanguages += 3;
- }
-
- return EFI_UNSUPPORTED;
-}
-
-
-/**
- This function adds the Null-terminated Unicode string specified by UnicodeString
- to UnicodeStringTable.
-
- If Language is a member of SupportedLanguages then UnicodeString is added to
- UnicodeStringTable. New buffers are allocated for both Language and UnicodeString.
- The contents of Language and UnicodeString are copied into these new buffers.
- These buffers are automatically freed when EfiLibFreeUnicodeStringTable() is called.
-
- @param Language A pointer to an ASCII string containing the ISO 639-2 or
- the RFC 4646 language code for the Unicode string to add.
- If Iso639Language is TRUE, then this ASCII string is not
- assumed to be Null-terminated, and only the first three
- chacters are used. If Iso639Language is FALSE, then this
- ASCII string must be Null-terminated.
- @param SupportedLanguages A pointer to a Null-terminated ASCII string that contains
- a set of ISO 639-2 or RFC 4646 language codes that the Unicode
- string table supports. Language must be a member of this set.
- If Iso639Language is TRUE, then this string contains one or more
- ISO 639-2 language codes with no separator characters.
- If Iso639Language is FALSE, then is string contains one or more
- RFC 4646 language codes separated by ';'.
- @param UnicodeStringTable A pointer to the table of Unicode strings. Type EFI_UNICODE_STRING_TABLE
- is defined in "Related Definitions".
- @param UnicodeString A pointer to the Unicode string to add.
- @param Iso639Language Specifies the supported language code format. If it is TRUE,
- then Language and SupportedLanguages follow ISO 639-2 language code format.
- Otherwise, they follow RFC 4646 language code format.
-
- @retval EFI_SUCCESS The Unicode string that matches the language specified by
- Language was found in the table of Unicode strings UnicodeStringTable,
- and it was returned in UnicodeString.
- @retval EFI_INVALID_PARAMETER Language is NULL.
- @retval EFI_INVALID_PARAMETER UnicodeString is NULL.
- @retval EFI_INVALID_PARAMETER UnicodeString is an empty string.
- @retval EFI_UNSUPPORTED SupportedLanguages is NULL.
- @retval EFI_ALREADY_STARTED A Unicode string with language Language is already present in
- UnicodeStringTable.
- @retval EFI_OUT_OF_RESOURCES There is not enough memory to add another Unicode string UnicodeStringTable.
- @retval EFI_UNSUPPORTED The language specified by Language is not a member of SupportedLanguages.
-
-**/
-EFI_STATUS
-EFIAPI
-AddUnicodeString2 (
- IN CONST CHAR8 *Language,
- IN CONST CHAR8 *SupportedLanguages,
- IN OUT EFI_UNICODE_STRING_TABLE **UnicodeStringTable,
- IN CONST CHAR16 *UnicodeString,
- IN BOOLEAN Iso639Language
- )
-{
- UINTN NumberOfEntries;
- EFI_UNICODE_STRING_TABLE *OldUnicodeStringTable;
- EFI_UNICODE_STRING_TABLE *NewUnicodeStringTable;
- UINTN UnicodeStringLength;
- BOOLEAN Found;
- UINTN Index;
- CHAR8 *LanguageString;
-
- //
- // Make sure the parameter are valid
- //
- if (Language == NULL || UnicodeString == NULL || UnicodeStringTable == NULL) {
- return EFI_INVALID_PARAMETER;
- }
-
- //
- // If there are no supported languages, then a Unicode String can not be added
- //
- if (SupportedLanguages == NULL) {
- return EFI_UNSUPPORTED;
- }
-
- //
- // If the Unicode String is empty, then a Unicode String can not be added
- //
- if (UnicodeString[0] == 0) {
- return EFI_INVALID_PARAMETER;
- }
-
- //
- // Make sure Language is a member of SupportedLanguages
- //
- Found = FALSE;
- while (*SupportedLanguages != 0) {
- if (Iso639Language) {
- if (CompareIso639LanguageCode (Language, SupportedLanguages)) {
- Found = TRUE;
- break;
- }
- SupportedLanguages += 3;
- } else {
- for (Index = 0; SupportedLanguages[Index] != 0 && SupportedLanguages[Index] != ';'; Index++);
- if (AsciiStrnCmp(SupportedLanguages, Language, Index) == 0) {
- Found = TRUE;
- break;
- }
- SupportedLanguages += Index;
- for (; *SupportedLanguages != 0 && *SupportedLanguages == ';'; SupportedLanguages++);
- }
- }
-
- //
- // If Language is not a member of SupportedLanguages, then return EFI_UNSUPPORTED
- //
- if (!Found) {
- return EFI_UNSUPPORTED;
- }
-
- //
- // Determine the size of the Unicode String Table by looking for a NULL Language entry
- //
- NumberOfEntries = 0;
- if (*UnicodeStringTable != NULL) {
- OldUnicodeStringTable = *UnicodeStringTable;
- while (OldUnicodeStringTable->Language != NULL) {
- LanguageString = OldUnicodeStringTable->Language;
-
- while (*LanguageString != 0) {
- for (Index = 0; LanguageString[Index] != 0 && LanguageString[Index] != ';'; Index++);
-
- if (AsciiStrnCmp (Language, LanguageString, Index) == 0) {
- return EFI_ALREADY_STARTED;
- }
- LanguageString += Index;
- for (; *LanguageString != 0 && *LanguageString == ';'; LanguageString++);
- }
- OldUnicodeStringTable++;
- NumberOfEntries++;
- }
- }
-
- //
- // Allocate space for a new Unicode String Table. It must hold the current number of
- // entries, plus 1 entry for the new Unicode String, plus 1 entry for the end of table
- // marker
- //
- NewUnicodeStringTable = AllocatePool ((NumberOfEntries + 2) * sizeof (EFI_UNICODE_STRING_TABLE));
- if (NewUnicodeStringTable == NULL) {
- return EFI_OUT_OF_RESOURCES;
- }
-
- //
- // If the current Unicode String Table contains any entries, then copy them to the
- // newly allocated Unicode String Table.
- //
- if (*UnicodeStringTable != NULL) {
- CopyMem (
- NewUnicodeStringTable,
- *UnicodeStringTable,
- NumberOfEntries * sizeof (EFI_UNICODE_STRING_TABLE)
- );
- }
-
- //
- // Allocate space for a copy of the Language specifier
- //
- NewUnicodeStringTable[NumberOfEntries].Language = AllocateCopyPool (AsciiStrSize(Language), Language);
- if (NewUnicodeStringTable[NumberOfEntries].Language == NULL) {
- gBS->FreePool (NewUnicodeStringTable);
- return EFI_OUT_OF_RESOURCES;
- }
-
- //
- // Compute the length of the Unicode String
- //
- for (UnicodeStringLength = 0; UnicodeString[UnicodeStringLength] != 0; UnicodeStringLength++);
-
- //
- // Allocate space for a copy of the Unicode String
- //
- NewUnicodeStringTable[NumberOfEntries].UnicodeString = AllocateCopyPool (StrSize (UnicodeString), UnicodeString);
- if (NewUnicodeStringTable[NumberOfEntries].UnicodeString == NULL) {
- gBS->FreePool (NewUnicodeStringTable[NumberOfEntries].Language);
- gBS->FreePool (NewUnicodeStringTable);
- return EFI_OUT_OF_RESOURCES;
- }
-
- //
- // Mark the end of the Unicode String Table
- //
- NewUnicodeStringTable[NumberOfEntries + 1].Language = NULL;
- NewUnicodeStringTable[NumberOfEntries + 1].UnicodeString = NULL;
-
- //
- // Free the old Unicode String Table
- //
- if (*UnicodeStringTable != NULL) {
- gBS->FreePool (*UnicodeStringTable);
- }
-
- //
- // Point UnicodeStringTable at the newly allocated Unicode String Table
- //
- *UnicodeStringTable = NewUnicodeStringTable;
-
- return EFI_SUCCESS;
-}
-
-/**
- This function frees the table of Unicode strings in UnicodeStringTable.
-
- If UnicodeStringTable is NULL, then EFI_SUCCESS is returned.
- Otherwise, each language code, and each Unicode string in the Unicode string
- table are freed, and EFI_SUCCESS is returned.
-
- @param UnicodeStringTable A pointer to the table of Unicode strings.
-
- @retval EFI_SUCCESS The Unicode string table was freed.
-
-**/
-EFI_STATUS
-EFIAPI
-FreeUnicodeStringTable (
- IN EFI_UNICODE_STRING_TABLE *UnicodeStringTable
- )
-{
- UINTN Index;
-
- //
- // If the Unicode String Table is NULL, then it is already freed
- //
- if (UnicodeStringTable == NULL) {
- return EFI_SUCCESS;
- }
-
- //
- // Loop through the Unicode String Table until we reach the end of table marker
- //
- for (Index = 0; UnicodeStringTable[Index].Language != NULL; Index++) {
-
- //
- // Free the Language string from the Unicode String Table
- //
- gBS->FreePool (UnicodeStringTable[Index].Language);
-
- //
- // Free the Unicode String from the Unicode String Table
- //
- if (UnicodeStringTable[Index].UnicodeString != NULL) {
- gBS->FreePool (UnicodeStringTable[Index].UnicodeString);
- }
- }
-
- //
- // Free the Unicode String Table itself
- //
- gBS->FreePool (UnicodeStringTable);
-
- return EFI_SUCCESS;
-}
-
-/**
- Returns a pointer to an allocated buffer that contains the contents of a
- variable retrieved through the UEFI Runtime Service GetVariable(). The
- returned buffer is allocated using AllocatePool(). The caller is responsible
- for freeing this buffer with FreePool().
-
- If Name is NULL, then ASSERT().
- If Guid is NULL, then ASSERT().
-
- @param[in] Name Pointer to a Null-terminated Unicode string.
- @param[in] Guid Pointer to an EFI_GUID structure
-
- @retval NULL The variable could not be retrieved.
- @retval NULL There are not enough resources available for the variable contents.
- @retval Other A pointer to allocated buffer containing the variable contents.
-
-**/
-VOID *
-EFIAPI
-GetVariable (
- IN CONST CHAR16 *Name,
- IN CONST EFI_GUID *Guid
- )
-{
- EFI_STATUS Status;
- UINTN Size;
- VOID *Value;
-
- ASSERT (Name != NULL);
- ASSERT (Guid != NULL);
-
- //
- // Try to get the variable size.
- //
- Value = NULL;
- Size = 0;
- Status = gRT->GetVariable ((CHAR16 *) Name, (EFI_GUID *) Guid, NULL, &Size, Value);
- if (Status != EFI_BUFFER_TOO_SMALL) {
- return NULL;
- }
-
- //
- // Allocate buffer to get the variable.
- //
- Value = AllocatePool (Size);
- if (Value == NULL) {
- return NULL;
- }
-
- //
- // Get the variable data.
- //
- Status = gRT->GetVariable ((CHAR16 *) Name, (EFI_GUID *) Guid, NULL, &Size, Value);
- if (EFI_ERROR (Status)) {
- FreePool(Value);
- return NULL;
- }
-
- return Value;
-}
-
-
-/**
- Returns a pointer to an allocated buffer that contains the contents of a
- variable retrieved through the UEFI Runtime Service GetVariable(). This
- function always uses the EFI_GLOBAL_VARIABLE GUID to retrieve variables.
- The returned buffer is allocated using AllocatePool(). The caller is
- responsible for freeing this buffer with FreePool().
-
- If Name is NULL, then ASSERT().
-
- @param[in] Name Pointer to a Null-terminated Unicode string.
-
- @retval NULL The variable could not be retrieved.
- @retval NULL There are not enough resources available for the variable contents.
- @retval Other A pointer to allocated buffer containing the variable contents.
-
-**/
-VOID *
-EFIAPI
-GetEfiGlobalVariable (
- IN CONST CHAR16 *Name
- )
-{
- return GetVariable (Name, &gEfiGlobalVariableGuid);
-}
-
-/**
- Returns the status whether get the variable success. The function retrieves
- variable through the UEFI Runtime Service GetVariable(). The
- returned buffer is allocated using AllocatePool(). The caller is responsible
- for freeing this buffer with FreePool().
-
- If Name is NULL, then ASSERT().
- If Guid is NULL, then ASSERT().
- If Value is NULL, then ASSERT().
-
- @param[in] Name The pointer to a Null-terminated Unicode string.
- @param[in] Guid The pointer to an EFI_GUID structure
- @param[out] Value The buffer point saved the variable info.
- @param[out] Size The buffer size of the variable.
-
- @return EFI_OUT_OF_RESOURCES Allocate buffer failed.
- @return EFI_SUCCESS Find the specified variable.
- @return Others Errors Return errors from call to gRT->GetVariable.
-
-**/
-EFI_STATUS
-EFIAPI
-GetVariable2 (
- IN CONST CHAR16 *Name,
- IN CONST EFI_GUID *Guid,
- OUT VOID **Value,
- OUT UINTN *Size OPTIONAL
- )
-{
- EFI_STATUS Status;
- UINTN BufferSize;
-
- ASSERT (Name != NULL && Guid != NULL && Value != NULL);
-
- //
- // Try to get the variable size.
- //
- BufferSize = 0;
- *Value = NULL;
- if (Size != NULL) {
- *Size = 0;
- }
-
- Status = gRT->GetVariable ((CHAR16 *) Name, (EFI_GUID *) Guid, NULL, &BufferSize, *Value);
- if (Status != EFI_BUFFER_TOO_SMALL) {
- return Status;
- }
-
- //
- // Allocate buffer to get the variable.
- //
- *Value = AllocatePool (BufferSize);
- ASSERT (*Value != NULL);
- if (*Value == NULL) {
- return EFI_OUT_OF_RESOURCES;
- }
-
- //
- // Get the variable data.
- //
- Status = gRT->GetVariable ((CHAR16 *) Name, (EFI_GUID *) Guid, NULL, &BufferSize, *Value);
- if (EFI_ERROR (Status)) {
- FreePool(*Value);
- *Value = NULL;
- }
-
- if (Size != NULL) {
- *Size = BufferSize;
- }
-
- return Status;
-}
-
-/**
- Returns a pointer to an allocated buffer that contains the contents of a
- variable retrieved through the UEFI Runtime Service GetVariable(). This
- function always uses the EFI_GLOBAL_VARIABLE GUID to retrieve variables.
- The returned buffer is allocated using AllocatePool(). The caller is
- responsible for freeing this buffer with FreePool().
-
- If Name is NULL, then ASSERT().
- If Value is NULL, then ASSERT().
-
- @param[in] Name The pointer to a Null-terminated Unicode string.
- @param[out] Value The buffer point saved the variable info.
- @param[out] Size The buffer size of the variable.
-
- @return EFI_OUT_OF_RESOURCES Allocate buffer failed.
- @return EFI_SUCCESS Find the specified variable.
- @return Others Errors Return errors from call to gRT->GetVariable.
-
-**/
-EFI_STATUS
-EFIAPI
-GetEfiGlobalVariable2 (
- IN CONST CHAR16 *Name,
- OUT VOID **Value,
- OUT UINTN *Size OPTIONAL
- )
-{
- return GetVariable2 (Name, &gEfiGlobalVariableGuid, Value, Size);
-}
-
-/**
- Returns a pointer to an allocated buffer that contains the best matching language
- from a set of supported languages.
-
- This function supports both ISO 639-2 and RFC 4646 language codes, but language
- code types may not be mixed in a single call to this function. The language
- code returned is allocated using AllocatePool(). The caller is responsible for
- freeing the allocated buffer using FreePool(). This function supports a variable
- argument list that allows the caller to pass in a prioritized list of language
- codes to test against all the language codes in SupportedLanguages.
-
- If SupportedLanguages is NULL, then ASSERT().
-
- @param[in] SupportedLanguages A pointer to a Null-terminated ASCII string that
- contains a set of language codes in the format
- specified by Iso639Language.
- @param[in] Iso639Language If not zero, then all language codes are assumed to be
- in ISO 639-2 format. If zero, then all language
- codes are assumed to be in RFC 4646 language format
- @param[in] ... A variable argument list that contains pointers to
- Null-terminated ASCII strings that contain one or more
- language codes in the format specified by Iso639Language.
- The first language code from each of these language
- code lists is used to determine if it is an exact or
- close match to any of the language codes in
- SupportedLanguages. Close matches only apply to RFC 4646
- language codes, and the matching algorithm from RFC 4647
- is used to determine if a close match is present. If
- an exact or close match is found, then the matching
- language code from SupportedLanguages is returned. If
- no matches are found, then the next variable argument
- parameter is evaluated. The variable argument list
- is terminated by a NULL.
-
- @retval NULL The best matching language could not be found in SupportedLanguages.
- @retval NULL There are not enough resources available to return the best matching
- language.
- @retval Other A pointer to a Null-terminated ASCII string that is the best matching
- language in SupportedLanguages.
-
-**/
-CHAR8 *
-EFIAPI
-GetBestLanguage (
- IN CONST CHAR8 *SupportedLanguages,
- IN UINTN Iso639Language,
- ...
- )
-{
- VA_LIST Args;
- CHAR8 *Language;
- UINTN CompareLength;
- UINTN LanguageLength;
- CONST CHAR8 *Supported;
- CHAR8 *BestLanguage;
-
- ASSERT (SupportedLanguages != NULL);
-
- VA_START (Args, Iso639Language);
- while ((Language = VA_ARG (Args, CHAR8 *)) != NULL) {
- //
- // Default to ISO 639-2 mode
- //
- CompareLength = 3;
- LanguageLength = MIN (3, AsciiStrLen (Language));
-
- //
- // If in RFC 4646 mode, then determine the length of the first RFC 4646 language code in Language
- //
- if (Iso639Language == 0) {
- for (LanguageLength = 0; Language[LanguageLength] != 0 && Language[LanguageLength] != ';'; LanguageLength++);
- }
-
- //
- // Trim back the length of Language used until it is empty
- //
- while (LanguageLength > 0) {
- //
- // Loop through all language codes in SupportedLanguages
- //
- for (Supported = SupportedLanguages; *Supported != '\0'; Supported += CompareLength) {
- //
- // In RFC 4646 mode, then Loop through all language codes in SupportedLanguages
- //
- if (Iso639Language == 0) {
- //
- // Skip ';' characters in Supported
- //
- for (; *Supported != '\0' && *Supported == ';'; Supported++);
- //
- // Determine the length of the next language code in Supported
- //
- for (CompareLength = 0; Supported[CompareLength] != 0 && Supported[CompareLength] != ';'; CompareLength++);
- //
- // If Language is longer than the Supported, then skip to the next language
- //
- if (LanguageLength > CompareLength) {
- continue;
- }
- }
- //
- // See if the first LanguageLength characters in Supported match Language
- //
- if (AsciiStrnCmp (Supported, Language, LanguageLength) == 0) {
- VA_END (Args);
- //
- // Allocate, copy, and return the best matching language code from SupportedLanguages
- //
- BestLanguage = AllocateZeroPool (CompareLength + 1);
- if (BestLanguage == NULL) {
- return NULL;
- }
- return CopyMem (BestLanguage, Supported, CompareLength);
- }
- }
-
- if (Iso639Language != 0) {
- //
- // If ISO 639 mode, then each language can only be tested once
- //
- LanguageLength = 0;
- } else {
- //
- // If RFC 4646 mode, then trim Language from the right to the next '-' character
- //
- for (LanguageLength--; LanguageLength > 0 && Language[LanguageLength] != '-'; LanguageLength--);
- }
- }
- }
- VA_END (Args);
-
- //
- // No matches were found
- //
- return NULL;
-}
-
-/**
- Returns an array of protocol instance that matches the given protocol.
-
- @param[in] Protocol Provides the protocol to search for.
- @param[out] NoProtocols The number of protocols returned in Buffer.
- @param[out] Buffer A pointer to the buffer to return the requested
- array of protocol instances that match Protocol.
- The returned buffer is allocated using
- EFI_BOOT_SERVICES.AllocatePool(). The caller is
- responsible for freeing this buffer with
- EFI_BOOT_SERVICES.FreePool().
-
- @retval EFI_SUCCESS The array of protocols was returned in Buffer,
- and the number of protocols in Buffer was
- returned in NoProtocols.
- @retval EFI_NOT_FOUND No protocols found.
- @retval EFI_OUT_OF_RESOURCES There is not enough pool memory to store the
- matching results.
- @retval EFI_INVALID_PARAMETER Protocol is NULL.
- @retval EFI_INVALID_PARAMETER NoProtocols is NULL.
- @retval EFI_INVALID_PARAMETER Buffer is NULL.
-
-**/
-EFI_STATUS
-EFIAPI
-EfiLocateProtocolBuffer (
- IN EFI_GUID *Protocol,
- OUT UINTN *NoProtocols,
- OUT VOID ***Buffer
- )
-{
- EFI_STATUS Status;
- UINTN NoHandles;
- EFI_HANDLE *HandleBuffer;
- UINTN Index;
-
- //
- // Check input parameters
- //
- if (Protocol == NULL || NoProtocols == NULL || Buffer == NULL) {
- return EFI_INVALID_PARAMETER;
- }
-
- //
- // Initialze output parameters
- //
- *NoProtocols = 0;
- *Buffer = NULL;
-
- //
- // Retrieve the array of handles that support Protocol
- //
- Status = gBS->LocateHandleBuffer (
- ByProtocol,
- Protocol,
- NULL,
- &NoHandles,
- &HandleBuffer
- );
- if (EFI_ERROR (Status)) {
- return Status;
- }
-
- //
- // Allocate array of protocol instances
- //
- Status = gBS->AllocatePool (
- EfiBootServicesData,
- NoHandles * sizeof (VOID *),
- (VOID **)Buffer
- );
- if (EFI_ERROR (Status)) {
- //
- // Free the handle buffer
- //
- gBS->FreePool (HandleBuffer);
- return EFI_OUT_OF_RESOURCES;
- }
- ZeroMem (*Buffer, NoHandles * sizeof (VOID *));
-
- //
- // Lookup Protocol on each handle in HandleBuffer to fill in the array of
- // protocol instances. Handle case where protocol instance was present when
- // LocateHandleBuffer() was called, but is not present when HandleProtocol()
- // is called.
- //
- for (Index = 0, *NoProtocols = 0; Index < NoHandles; Index++) {
- Status = gBS->HandleProtocol (
- HandleBuffer[Index],
- Protocol,
- &((*Buffer)[*NoProtocols])
- );
- if (!EFI_ERROR (Status)) {
- (*NoProtocols)++;
- }
- }
-
- //
- // Free the handle buffer
- //
- gBS->FreePool (HandleBuffer);
-
- //
- // Make sure at least one protocol instance was found
- //
- if (*NoProtocols == 0) {
- gBS->FreePool (*Buffer);
- *Buffer = NULL;
- return EFI_NOT_FOUND;
- }
-
- return EFI_SUCCESS;
-}
-
-/**
- Open or create a file or directory, possibly creating the chain of
- directories leading up to the directory.
-
- EfiOpenFileByDevicePath() first locates EFI_SIMPLE_FILE_SYSTEM_PROTOCOL on
- FilePath, and opens the root directory of that filesystem with
- EFI_SIMPLE_FILE_SYSTEM_PROTOCOL.OpenVolume().
-
- On the remaining device path, the longest initial sequence of
- FILEPATH_DEVICE_PATH nodes is node-wise traversed with
- EFI_FILE_PROTOCOL.Open().
-
- (As a consequence, if OpenMode includes EFI_FILE_MODE_CREATE, and Attributes
- includes EFI_FILE_DIRECTORY, and each FILEPATH_DEVICE_PATH specifies a single
- pathname component, then EfiOpenFileByDevicePath() ensures that the specified
- series of subdirectories exist on return.)
-
- The EFI_FILE_PROTOCOL identified by the last FILEPATH_DEVICE_PATH node is
- output to the caller; intermediate EFI_FILE_PROTOCOL instances are closed. If
- there are no FILEPATH_DEVICE_PATH nodes past the node that identifies the
- filesystem, then the EFI_FILE_PROTOCOL of the root directory of the
- filesystem is output to the caller. If a device path node that is different
- from FILEPATH_DEVICE_PATH is encountered relative to the filesystem, the
- traversal is stopped with an error, and a NULL EFI_FILE_PROTOCOL is output.
-
- @param[in,out] FilePath On input, the device path to the file or directory
- to open or create. The caller is responsible for
- ensuring that the device path pointed-to by FilePath
- is well-formed. On output, FilePath points one past
- the last node in the original device path that has
- been successfully processed. FilePath is set on
- output even if EfiOpenFileByDevicePath() returns an
- error.
-
- @param[out] File On error, File is set to NULL. On success, File is
- set to the EFI_FILE_PROTOCOL of the root directory
- of the filesystem, if there are no
- FILEPATH_DEVICE_PATH nodes in FilePath; otherwise,
- File is set to the EFI_FILE_PROTOCOL identified by
- the last node in FilePath.
-
- @param[in] OpenMode The OpenMode parameter to pass to
- EFI_FILE_PROTOCOL.Open().
-
- @param[in] Attributes The Attributes parameter to pass to
- EFI_FILE_PROTOCOL.Open().
-
- @retval EFI_SUCCESS The file or directory has been opened or
- created.
-
- @retval EFI_INVALID_PARAMETER FilePath is NULL; or File is NULL; or FilePath
- contains a device path node, past the node
- that identifies
- EFI_SIMPLE_FILE_SYSTEM_PROTOCOL, that is not a
- FILEPATH_DEVICE_PATH node.
-
- @retval EFI_OUT_OF_RESOURCES Memory allocation failed.
-
- @return Error codes propagated from the
- LocateDevicePath() and OpenProtocol() boot
- services, and from the
- EFI_SIMPLE_FILE_SYSTEM_PROTOCOL.OpenVolume()
- and EFI_FILE_PROTOCOL.Open() member functions.
-**/
-EFI_STATUS
-EFIAPI
-EfiOpenFileByDevicePath (
- IN OUT EFI_DEVICE_PATH_PROTOCOL **FilePath,
- OUT EFI_FILE_PROTOCOL **File,
- IN UINT64 OpenMode,
- IN UINT64 Attributes
- )
-{
- EFI_STATUS Status;
- EFI_HANDLE FileSystemHandle;
- EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *FileSystem;
- EFI_FILE_PROTOCOL *LastFile;
- FILEPATH_DEVICE_PATH *FilePathNode;
- CHAR16 *AlignedPathName;
- CHAR16 *PathName;
- EFI_FILE_PROTOCOL *NextFile;
-
- if (File == NULL) {
- return EFI_INVALID_PARAMETER;
- }
- *File = NULL;
-
- if (FilePath == NULL) {
- return EFI_INVALID_PARAMETER;
- }
-
- //
- // Look up the filesystem.
- //
- Status = gBS->LocateDevicePath (
- &gEfiSimpleFileSystemProtocolGuid,
- FilePath,
- &FileSystemHandle
- );
- if (EFI_ERROR (Status)) {
- return Status;
- }
- Status = gBS->OpenProtocol (
- FileSystemHandle,
- &gEfiSimpleFileSystemProtocolGuid,
- (VOID **)&FileSystem,
- gImageHandle,
- NULL,
- EFI_OPEN_PROTOCOL_GET_PROTOCOL
- );
- if (EFI_ERROR (Status)) {
- return Status;
- }
-
- //
- // Open the root directory of the filesystem. After this operation succeeds,
- // we have to release LastFile on error.
- //
- Status = FileSystem->OpenVolume (FileSystem, &LastFile);
- if (EFI_ERROR (Status)) {
- return Status;
- }
-
- //
- // Traverse the device path nodes relative to the filesystem.
- //
- while (!IsDevicePathEnd (*FilePath)) {
- if (DevicePathType (*FilePath) != MEDIA_DEVICE_PATH ||
- DevicePathSubType (*FilePath) != MEDIA_FILEPATH_DP) {
- Status = EFI_INVALID_PARAMETER;
- goto CloseLastFile;
- }
- FilePathNode = (FILEPATH_DEVICE_PATH *)*FilePath;
-
- //
- // FilePathNode->PathName may be unaligned, and the UEFI specification
- // requires pointers that are passed to protocol member functions to be
- // aligned. Create an aligned copy of the pathname if necessary.
- //
- if ((UINTN)FilePathNode->PathName % sizeof *FilePathNode->PathName == 0) {
- AlignedPathName = NULL;
- PathName = FilePathNode->PathName;
- } else {
- AlignedPathName = AllocateCopyPool (
- (DevicePathNodeLength (FilePathNode) -
- SIZE_OF_FILEPATH_DEVICE_PATH),
- FilePathNode->PathName
- );
- if (AlignedPathName == NULL) {
- Status = EFI_OUT_OF_RESOURCES;
- goto CloseLastFile;
- }
- PathName = AlignedPathName;
- }
-
- //
- // Open or create the file corresponding to the next pathname fragment.
- //
- Status = LastFile->Open (
- LastFile,
- &NextFile,
- PathName,
- OpenMode,
- Attributes
- );
-
- //
- // Release any AlignedPathName on both error and success paths; PathName is
- // no longer needed.
- //
- if (AlignedPathName != NULL) {
- FreePool (AlignedPathName);
- }
- if (EFI_ERROR (Status)) {
- goto CloseLastFile;
- }
-
- //
- // Advance to the next device path node.
- //
- LastFile->Close (LastFile);
- LastFile = NextFile;
- *FilePath = NextDevicePathNode (FilePathNode);
- }
-
- *File = LastFile;
- return EFI_SUCCESS;
-
-CloseLastFile:
- LastFile->Close (LastFile);
-
- //
- // We are on the error path; we must have set an error Status for returning
- // to the caller.
- //
- ASSERT (EFI_ERROR (Status));
- return Status;
-}
diff --git a/IntelFrameworkPkg/Library/FrameworkUefiLib/UefiLibInternal.h b/IntelFrameworkPkg/Library/FrameworkUefiLib/UefiLibInternal.h
deleted file mode 100644
index 51f58176de..0000000000
--- a/IntelFrameworkPkg/Library/FrameworkUefiLib/UefiLibInternal.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/** @file
- Internal include file for UefiLib.
-
- Copyright (c) 2007 - 2017, Intel Corporation. All rights reserved.<BR>
- This program and the accompanying materials
- are licensed and made available under the terms and conditions of the BSD License
- which accompanies this distribution. The full text of the license may be found at
- http://opensource.org/licenses/bsd-license.php
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-**/
-
-#ifndef __UEFI_LIB_INTERNAL_H_
-#define __UEFI_LIB_INTERNAL_H_
-
-
-#include <FrameworkDxe.h>
-#include <Protocol/DriverBinding.h>
-#include <Protocol/ComponentName.h>
-#include <Protocol/ComponentName2.h>
-#include <Protocol/DriverConfiguration.h>
-#include <Protocol/DriverConfiguration2.h>
-#include <Protocol/DriverDiagnostics.h>
-#include <Protocol/DriverDiagnostics2.h>
-#include <Protocol/LoadedImage.h>
-#include <Protocol/GraphicsOutput.h>
-#include <Protocol/UgaDraw.h>
-#include <Protocol/HiiFont.h>
-
-#include <Guid/EventGroup.h>
-#include <Guid/EventLegacyBios.h>
-#include <Guid/GlobalVariable.h>
-#include <Library/UefiLib.h>
-#include <Library/UefiBootServicesTableLib.h>
-#include <Library/UefiRuntimeServicesTableLib.h>
-#include <Library/BaseLib.h>
-#include <Library/BaseMemoryLib.h>
-#include <Library/DebugLib.h>
-#include <Library/MemoryAllocationLib.h>
-#include <Library/PcdLib.h>
-#include <Library/PrintLib.h>
-#include <Library/DevicePathLib.h>
-
-#endif
diff --git a/IntelFrameworkPkg/Library/FrameworkUefiLib/UefiLibPrint.c b/IntelFrameworkPkg/Library/FrameworkUefiLib/UefiLibPrint.c
deleted file mode 100644
index 28b0817557..0000000000
--- a/IntelFrameworkPkg/Library/FrameworkUefiLib/UefiLibPrint.c
+++ /dev/null
@@ -1,822 +0,0 @@
-/** @file
- Mde UEFI library API implementation.
- Print to StdErr or ConOut defined in EFI_SYSTEM_TABLE
-
- Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
- This program and the accompanying materials
- are licensed and made available under the terms and conditions of the BSD License
- which accompanies this distribution. The full text of the license may be found at
- http://opensource.org/licenses/bsd-license.php
-
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-#include "UefiLibInternal.h"
-
-GLOBAL_REMOVE_IF_UNREFERENCED EFI_GRAPHICS_OUTPUT_BLT_PIXEL mEfiColors[16] = {
- { 0x00, 0x00, 0x00, 0x00 },
- { 0x98, 0x00, 0x00, 0x00 },
- { 0x00, 0x98, 0x00, 0x00 },
- { 0x98, 0x98, 0x00, 0x00 },
- { 0x00, 0x00, 0x98, 0x00 },
- { 0x98, 0x00, 0x98, 0x00 },
- { 0x00, 0x98, 0x98, 0x00 },
- { 0x98, 0x98, 0x98, 0x00 },
- { 0x10, 0x10, 0x10, 0x00 },
- { 0xff, 0x10, 0x10, 0x00 },
- { 0x10, 0xff, 0x10, 0x00 },
- { 0xff, 0xff, 0x10, 0x00 },
- { 0x10, 0x10, 0xff, 0x00 },
- { 0xf0, 0x10, 0xff, 0x00 },
- { 0x10, 0xff, 0xff, 0x00 },
- { 0xff, 0xff, 0xff, 0x00 }
-};
-
-/**
- Internal function which prints a formatted Unicode string to the console output device
- specified by Console
-
- This function prints a formatted Unicode string to the console output device
- specified by Console and returns the number of Unicode characters that printed
- to it. If the length of the formatted Unicode string is greater than PcdUefiLibMaxPrintBufferSize,
- then only the first PcdUefiLibMaxPrintBufferSize characters are sent to Console.
- If Format is NULL, then ASSERT().
- If Format is not aligned on a 16-bit boundary, then ASSERT().
-
- @param Format Null-terminated Unicode format string.
- @param Console The output console.
- @param Marker VA_LIST marker for the variable argument list.
-
- @return The number of Unicode characters in the produced
- output buffer not including the Null-terminator.
-**/
-UINTN
-InternalPrint (
- IN CONST CHAR16 *Format,
- IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *Console,
- IN VA_LIST Marker
- )
-{
- EFI_STATUS Status;
- UINTN Return;
- CHAR16 *Buffer;
- UINTN BufferSize;
-
- ASSERT (Format != NULL);
- ASSERT (((UINTN) Format & BIT0) == 0);
- ASSERT (Console != NULL);
-
- BufferSize = (PcdGet32 (PcdUefiLibMaxPrintBufferSize) + 1) * sizeof (CHAR16);
-
- Buffer = (CHAR16 *) AllocatePool(BufferSize);
- ASSERT (Buffer != NULL);
-
- Return = UnicodeVSPrint (Buffer, BufferSize, Format, Marker);
-
- if (Console != NULL && Return > 0) {
- //
- // To be extra safe make sure Console has been initialized
- //
- Status = Console->OutputString (Console, Buffer);
- if (EFI_ERROR (Status)) {
- Return = 0;
- }
- }
-
- FreePool (Buffer);
-
- return Return;
-}
-
-/**
- Prints a formatted Unicode string to the console output device specified by
- ConOut defined in the EFI_SYSTEM_TABLE.
-
- This function prints a formatted Unicode string to the console output device
- specified by ConOut in EFI_SYSTEM_TABLE and returns the number of Unicode
- characters that printed to ConOut. If the length of the formatted Unicode
- string is greater than PcdUefiLibMaxPrintBufferSize, then only the first
- PcdUefiLibMaxPrintBufferSize characters are sent to ConOut.
- If Format is NULL, then ASSERT().
- If Format is not aligned on a 16-bit boundary, then ASSERT().
- If gST->ConOut is NULL, then ASSERT().
-
- @param Format Null-terminated Unicode format string.
- @param ... Variable argument list whose contents are accessed based
- on the format string specified by Format.
-
- @return Number of Unicode characters printed to ConOut.
-
-**/
-UINTN
-EFIAPI
-Print (
- IN CONST CHAR16 *Format,
- ...
- )
-{
- VA_LIST Marker;
- UINTN Return;
-
- VA_START (Marker, Format);
-
- Return = InternalPrint (Format, gST->ConOut, Marker);
-
- VA_END (Marker);
-
- return Return;
-}
-
-/**
- Prints a formatted Unicode string to the console output device specified by
- StdErr defined in the EFI_SYSTEM_TABLE.
-
- This function prints a formatted Unicode string to the console output device
- specified by StdErr in EFI_SYSTEM_TABLE and returns the number of Unicode
- characters that printed to StdErr. If the length of the formatted Unicode
- string is greater than PcdUefiLibMaxPrintBufferSize, then only the first
- PcdUefiLibMaxPrintBufferSize characters are sent to StdErr.
- If Format is NULL, then ASSERT().
- If Format is not aligned on a 16-bit boundary, then ASSERT().
- If gST->StdErr is NULL, then ASSERT().
-
- @param Format Null-terminated Unicode format string.
- @param ... Variable argument list whose contents are accessed based
- on the format string specified by Format.
-
- @return Number of Unicode characters printed to StdErr.
-
-**/
-UINTN
-EFIAPI
-ErrorPrint (
- IN CONST CHAR16 *Format,
- ...
- )
-{
- VA_LIST Marker;
- UINTN Return;
-
- VA_START (Marker, Format);
-
- Return = InternalPrint( Format, gST->StdErr, Marker);
-
- VA_END (Marker);
-
- return Return;
-}
-
-
-/**
- Internal function which prints a formatted ASCII string to the console output device
- specified by Console
-
- This function prints a formatted ASCII string to the console output device
- specified by Console and returns the number of ASCII characters that printed
- to it. If the length of the formatted ASCII string is greater than PcdUefiLibMaxPrintBufferSize,
- then only the first PcdUefiLibMaxPrintBufferSize characters are sent to Console.
-
- If Format is NULL, then ASSERT().
-
- @param Format Null-terminated ASCII format string.
- @param Console The output console.
- @param Marker VA_LIST marker for the variable argument list.
-
- @return The number of Unicode characters in the produced
- output buffer not including the Null-terminator.
-
-**/
-UINTN
-AsciiInternalPrint (
- IN CONST CHAR8 *Format,
- IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *Console,
- IN VA_LIST Marker
- )
-{
- EFI_STATUS Status;
- UINTN Return;
- CHAR16 *Buffer;
- UINTN BufferSize;
-
- ASSERT (Format != NULL);
- ASSERT (Console != NULL);
-
- BufferSize = (PcdGet32 (PcdUefiLibMaxPrintBufferSize) + 1) * sizeof (CHAR16);
-
- Buffer = (CHAR16 *) AllocatePool(BufferSize);
- ASSERT (Buffer != NULL);
-
- Return = UnicodeVSPrintAsciiFormat (Buffer, BufferSize, Format, Marker);
-
- if (Console != NULL) {
- //
- // To be extra safe make sure Console has been initialized
- //
- Status = Console->OutputString (Console, Buffer);
- if (EFI_ERROR (Status)) {
- Return = 0;
- }
- }
-
- FreePool (Buffer);
-
- return Return;
-}
-
-/**
- Prints a formatted ASCII string to the console output device specified by
- ConOut defined in the EFI_SYSTEM_TABLE.
-
- This function prints a formatted ASCII string to the console output device
- specified by ConOut in EFI_SYSTEM_TABLE and returns the number of ASCII
- characters that printed to ConOut. If the length of the formatted ASCII
- string is greater than PcdUefiLibMaxPrintBufferSize, then only the first
- PcdUefiLibMaxPrintBufferSize characters are sent to ConOut.
- If Format is NULL, then ASSERT().
- If gST->ConOut is NULL, then ASSERT().
-
- @param Format Null-terminated ASCII format string.
- @param ... Variable argument list whose contents are accessed based
- on the format string specified by Format.
-
- @return Number of ASCII characters printed to ConOut.
-
-**/
-UINTN
-EFIAPI
-AsciiPrint (
- IN CONST CHAR8 *Format,
- ...
- )
-{
- VA_LIST Marker;
- UINTN Return;
- ASSERT (Format != NULL);
-
- VA_START (Marker, Format);
-
- Return = AsciiInternalPrint( Format, gST->ConOut, Marker);
-
- VA_END (Marker);
-
- return Return;
-}
-
-/**
- Prints a formatted ASCII string to the console output device specified by
- StdErr defined in the EFI_SYSTEM_TABLE.
-
- This function prints a formatted ASCII string to the console output device
- specified by StdErr in EFI_SYSTEM_TABLE and returns the number of ASCII
- characters that printed to StdErr. If the length of the formatted ASCII
- string is greater than PcdUefiLibMaxPrintBufferSize, then only the first
- PcdUefiLibMaxPrintBufferSize characters are sent to StdErr.
- If Format is NULL, then ASSERT().
- If gST->StdErr is NULL, then ASSERT().
-
- @param Format Null-terminated ASCII format string.
- @param ... Variable argument list whose contents are accessed based
- on the format string specified by Format.
-
- @return Number of ASCII characters printed to ConErr.
-
-**/
-UINTN
-EFIAPI
-AsciiErrorPrint (
- IN CONST CHAR8 *Format,
- ...
- )
-{
- VA_LIST Marker;
- UINTN Return;
-
- ASSERT (Format != NULL);
-
- VA_START (Marker, Format);
-
- Return = AsciiInternalPrint( Format, gST->StdErr, Marker);
-
- VA_END (Marker);
-
- return Return;
-}
-
-/**
- Internal function to print a formatted Unicode string to a graphics console device specified by
- ConsoleOutputHandle defined in the EFI_SYSTEM_TABLE at the given (X,Y) coordinates.
-
- This function prints a formatted Unicode string to the graphics console device
- specified by ConsoleOutputHandle in EFI_SYSTEM_TABLE and returns the number of
- Unicode characters printed. The EFI_HII_FONT_PROTOCOL is used to convert the
- string to a bitmap using the glyphs registered with the
- HII database. No wrapping is performed, so any portions of the string the fall
- outside the active display region will not be displayed.
-
- If a graphics console device is not associated with the ConsoleOutputHandle
- defined in the EFI_SYSTEM_TABLE then no string is printed, and 0 is returned.
- If the EFI_HII_FONT_PROTOCOL is not present in the handle database, then no
- string is printed, and 0 is returned.
-
- @param PointX X coordinate to print the string.
- @param PointY Y coordinate to print the string.
- @param Foreground The foreground color of the string being printed. This is
- an optional parameter that may be NULL. If it is NULL,
- then the foreground color of the current ConOut device
- in the EFI_SYSTEM_TABLE is used.
- @param Background The background color of the string being printed. This is
- an optional parameter that may be NULL. If it is NULL,
- then the background color of the current ConOut device
- in the EFI_SYSTEM_TABLE is used.
- @param Buffer Null-terminated Unicode formatted string.
- @param PrintNum The number of Unicode formatted string to be printed.
-
- @return Number of Unicode Characters printed. Zero means no any character
- displayed successfully.
-
-**/
-UINTN
-InternalPrintGraphic (
- IN UINTN PointX,
- IN UINTN PointY,
- IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *Foreground,
- IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *Background,
- IN CHAR16 *Buffer,
- IN UINTN PrintNum
- )
-{
- EFI_STATUS Status;
- UINT32 HorizontalResolution;
- UINT32 VerticalResolution;
- UINT32 ColorDepth;
- UINT32 RefreshRate;
- EFI_HII_FONT_PROTOCOL *HiiFont;
- EFI_IMAGE_OUTPUT *Blt;
- EFI_FONT_DISPLAY_INFO FontInfo;
- EFI_HII_ROW_INFO *RowInfoArray;
- UINTN RowInfoArraySize;
- EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput;
- EFI_UGA_DRAW_PROTOCOL *UgaDraw;
- EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *Sto;
- EFI_HANDLE ConsoleHandle;
- UINTN Width;
- UINTN Height;
- UINTN Delta;
-
- HorizontalResolution = 0;
- VerticalResolution = 0;
- Blt = NULL;
- RowInfoArray = NULL;
-
- ConsoleHandle = gST->ConsoleOutHandle;
-
- ASSERT( ConsoleHandle != NULL);
-
- Status = gBS->HandleProtocol (
- ConsoleHandle,
- &gEfiGraphicsOutputProtocolGuid,
- (VOID **) &GraphicsOutput
- );
-
- UgaDraw = NULL;
- if (EFI_ERROR (Status) && FeaturePcdGet (PcdUgaConsumeSupport)) {
- //
- // If no GOP available, try to open UGA Draw protocol if supported.
- //
- GraphicsOutput = NULL;
-
- Status = gBS->HandleProtocol (
- ConsoleHandle,
- &gEfiUgaDrawProtocolGuid,
- (VOID **) &UgaDraw
- );
- }
- if (EFI_ERROR (Status)) {
- goto Error;
- }
-
- Status = gBS->HandleProtocol (
- ConsoleHandle,
- &gEfiSimpleTextOutProtocolGuid,
- (VOID **) &Sto
- );
-
- if (EFI_ERROR (Status)) {
- goto Error;
- }
-
- if (GraphicsOutput != NULL) {
- HorizontalResolution = GraphicsOutput->Mode->Info->HorizontalResolution;
- VerticalResolution = GraphicsOutput->Mode->Info->VerticalResolution;
- } else if (UgaDraw != NULL && FeaturePcdGet (PcdUgaConsumeSupport)) {
- UgaDraw->GetMode (UgaDraw, &HorizontalResolution, &VerticalResolution, &ColorDepth, &RefreshRate);
- } else {
- goto Error;
- }
-
- ASSERT ((HorizontalResolution != 0) && (VerticalResolution !=0));
-
- Status = gBS->LocateProtocol (&gEfiHiiFontProtocolGuid, NULL, (VOID **) &HiiFont);
- if (EFI_ERROR (Status)) {
- goto Error;
- }
-
- Blt = (EFI_IMAGE_OUTPUT *) AllocateZeroPool (sizeof (EFI_IMAGE_OUTPUT));
- ASSERT (Blt != NULL);
-
- Blt->Width = (UINT16) (HorizontalResolution);
- Blt->Height = (UINT16) (VerticalResolution);
-
- ZeroMem (&FontInfo, sizeof (EFI_FONT_DISPLAY_INFO));
-
- if (Foreground != NULL) {
- CopyMem (&FontInfo.ForegroundColor, Foreground, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL));
- } else {
- CopyMem (
- &FontInfo.ForegroundColor,
- &mEfiColors[Sto->Mode->Attribute & 0x0f],
- sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL)
- );
- }
- if (Background != NULL) {
- CopyMem (&FontInfo.BackgroundColor, Background, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL));
- } else {
- CopyMem (
- &FontInfo.BackgroundColor,
- &mEfiColors[Sto->Mode->Attribute >> 4],
- sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL)
- );
- }
-
- if (GraphicsOutput != NULL) {
- Blt->Image.Screen = GraphicsOutput;
-
- Status = HiiFont->StringToImage (
- HiiFont,
- EFI_HII_IGNORE_IF_NO_GLYPH | EFI_HII_OUT_FLAG_CLIP |
- EFI_HII_OUT_FLAG_CLIP_CLEAN_X | EFI_HII_OUT_FLAG_CLIP_CLEAN_Y |
- EFI_HII_IGNORE_LINE_BREAK | EFI_HII_DIRECT_TO_SCREEN,
- Buffer,
- &FontInfo,
- &Blt,
- PointX,
- PointY,
- &RowInfoArray,
- &RowInfoArraySize,
- NULL
- );
- if (EFI_ERROR (Status)) {
- goto Error;
- }
-
- } else if (FeaturePcdGet (PcdUgaConsumeSupport)) {
- ASSERT (UgaDraw!= NULL);
-
- //
- // Ensure Width * Height * sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL) doesn't overflow.
- //
- if (Blt->Width > DivU64x32 (MAX_UINTN, Blt->Height * sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL))) {
- goto Error;
- }
-
- Blt->Image.Bitmap = AllocateZeroPool ((UINT32) Blt->Width * Blt->Height * sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL));
- ASSERT (Blt->Image.Bitmap != NULL);
-
- //
- // StringToImage only support blt'ing image to device using GOP protocol. If GOP is not supported in this platform,
- // we ask StringToImage to print the string to blt buffer, then blt to device using UgaDraw.
- //
- Status = HiiFont->StringToImage (
- HiiFont,
- EFI_HII_IGNORE_IF_NO_GLYPH | EFI_HII_OUT_FLAG_CLIP |
- EFI_HII_OUT_FLAG_CLIP_CLEAN_X | EFI_HII_OUT_FLAG_CLIP_CLEAN_Y |
- EFI_HII_IGNORE_LINE_BREAK,
- Buffer,
- &FontInfo,
- &Blt,
- PointX,
- PointY,
- &RowInfoArray,
- &RowInfoArraySize,
- NULL
- );
-
- if (!EFI_ERROR (Status)) {
- ASSERT (RowInfoArray != NULL);
- //
- // Explicit Line break characters are ignored, so the updated parameter RowInfoArraySize by StringToImage will
- // always be 1 or 0 (if there is no valid Unicode Char can be printed). ASSERT here to make sure.
- //
- ASSERT (RowInfoArraySize <= 1);
-
- if (RowInfoArraySize != 0) {
- Width = RowInfoArray[0].LineWidth;
- Height = RowInfoArray[0].LineHeight;
- Delta = Blt->Width * sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL);
- } else {
- Width = 0;
- Height = 0;
- Delta = 0;
- }
- Status = UgaDraw->Blt (
- UgaDraw,
- (EFI_UGA_PIXEL *) Blt->Image.Bitmap,
- EfiUgaBltBufferToVideo,
- PointX,
- PointY,
- PointX,
- PointY,
- Width,
- Height,
- Delta
- );
- } else {
- goto Error;
- }
- FreePool (Blt->Image.Bitmap);
- } else {
- goto Error;
- }
- //
- // Calculate the number of actual printed characters
- //
- if (RowInfoArraySize != 0) {
- PrintNum = RowInfoArray[0].EndIndex - RowInfoArray[0].StartIndex + 1;
- } else {
- PrintNum = 0;
- }
-
- FreePool (RowInfoArray);
- FreePool (Blt);
- return PrintNum;
-
-Error:
- if (Blt != NULL) {
- FreePool (Blt);
- }
- return 0;
-}
-
-/**
- Prints a formatted Unicode string to a graphics console device specified by
- ConsoleOutputHandle defined in the EFI_SYSTEM_TABLE at the given (X,Y) coordinates.
-
- This function prints a formatted Unicode string to the graphics console device
- specified by ConsoleOutputHandle in EFI_SYSTEM_TABLE and returns the number of
- Unicode characters displayed, not including partial characters that may be clipped
- by the right edge of the display. If the length of the formatted Unicode string is
- greater than PcdUefiLibMaxPrintBufferSize, then at most the first
- PcdUefiLibMaxPrintBufferSize characters are printed.The EFI_HII_FONT_PROTOCOL
- StringToImage() service is used to convert the string to a bitmap using the glyphs
- registered with the HII database. No wrapping is performed, so any portions of the
- string the fall outside the active display region will not be displayed. Please see
- Section 27.2.6 of the UEFI Specification for a description of the supported string
- format including the set of control codes supported by the StringToImage() service.
-
- If a graphics console device is not associated with the ConsoleOutputHandle
- defined in the EFI_SYSTEM_TABLE then no string is printed, and 0 is returned.
- If the EFI_HII_FONT_PROTOCOL is not present in the handle database, then no
- string is printed, and 0 is returned.
- If Format is NULL, then ASSERT().
- If Format is not aligned on a 16-bit boundary, then ASSERT().
- If gST->ConsoleOutputHandle is NULL, then ASSERT().
-
- @param PointX X coordinate to print the string.
- @param PointY Y coordinate to print the string.
- @param ForeGround The foreground color of the string being printed. This is
- an optional parameter that may be NULL. If it is NULL,
- then the foreground color of the current ConOut device
- in the EFI_SYSTEM_TABLE is used.
- @param BackGround The background color of the string being printed. This is
- an optional parameter that may be NULL. If it is NULL,
- then the background color of the current ConOut device
- in the EFI_SYSTEM_TABLE is used.
- @param Format Null-terminated Unicode format string. See Print Library
- for the supported format string syntax.
- @param ... Variable argument list whose contents are accessed based on
- the format string specified by Format.
-
- @return The number of Unicode characters printed.
-
-**/
-UINTN
-EFIAPI
-PrintXY (
- IN UINTN PointX,
- IN UINTN PointY,
- IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *ForeGround, OPTIONAL
- IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BackGround, OPTIONAL
- IN CONST CHAR16 *Format,
- ...
- )
-{
- VA_LIST Marker;
- CHAR16 *Buffer;
- UINTN BufferSize;
- UINTN PrintNum;
- UINTN ReturnNum;
-
- ASSERT (Format != NULL);
- ASSERT (((UINTN) Format & BIT0) == 0);
-
- VA_START (Marker, Format);
-
- BufferSize = (PcdGet32 (PcdUefiLibMaxPrintBufferSize) + 1) * sizeof (CHAR16);
-
- Buffer = (CHAR16 *) AllocatePool (BufferSize);
- ASSERT (Buffer != NULL);
-
- PrintNum = UnicodeVSPrint (Buffer, BufferSize, Format, Marker);
-
- VA_END (Marker);
-
- ReturnNum = InternalPrintGraphic (PointX, PointY, ForeGround, BackGround, Buffer, PrintNum);
-
- FreePool (Buffer);
-
- return ReturnNum;
-}
-
-/**
- Prints a formatted ASCII string to a graphics console device specified by
- ConsoleOutputHandle defined in the EFI_SYSTEM_TABLE at the given (X,Y) coordinates.
-
- This function prints a formatted ASCII string to the graphics console device
- specified by ConsoleOutputHandle in EFI_SYSTEM_TABLE and returns the number of
- ASCII characters displayed, not including partial characters that may be clipped
- by the right edge of the display. If the length of the formatted ASCII string is
- greater than PcdUefiLibMaxPrintBufferSize, then at most the first
- PcdUefiLibMaxPrintBufferSize characters are printed.The EFI_HII_FONT_PROTOCOL
- StringToImage() service is used to convert the string to a bitmap using the glyphs
- registered with the HII database. No wrapping is performed, so any portions of the
- string the fall outside the active display region will not be displayed. Please see
- Section 27.2.6 of the UEFI Specification for a description of the supported string
- format including the set of control codes supported by the StringToImage() service.
-
- If a graphics console device is not associated with the ConsoleOutputHandle
- defined in the EFI_SYSTEM_TABLE then no string is printed, and 0 is returned.
- If the EFI_HII_FONT_PROTOCOL is not present in the handle database, then no
- string is printed, and 0 is returned.
- If Format is NULL, then ASSERT().
- If gST->ConsoleOutputHandle is NULL, then ASSERT().
-
- @param PointX X coordinate to print the string.
- @param PointY Y coordinate to print the string.
- @param ForeGround The foreground color of the string being printed. This is
- an optional parameter that may be NULL. If it is NULL,
- then the foreground color of the current ConOut device
- in the EFI_SYSTEM_TABLE is used.
- @param BackGround The background color of the string being printed. This is
- an optional parameter that may be NULL. If it is NULL,
- then the background color of the current ConOut device
- in the EFI_SYSTEM_TABLE is used.
- @param Format Null-terminated ASCII format string. See Print Library
- for the supported format string syntax.
- @param ... Variable argument list whose contents are accessed based on
- the format string specified by Format.
-
- @return The number of ASCII characters printed.
-
-**/
-UINTN
-EFIAPI
-AsciiPrintXY (
- IN UINTN PointX,
- IN UINTN PointY,
- IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *ForeGround, OPTIONAL
- IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BackGround, OPTIONAL
- IN CONST CHAR8 *Format,
- ...
- )
-{
- VA_LIST Marker;
- CHAR16 *Buffer;
- UINTN BufferSize;
- UINTN PrintNum;
- UINTN ReturnNum;
-
- ASSERT (Format != NULL);
-
- VA_START (Marker, Format);
-
- BufferSize = (PcdGet32 (PcdUefiLibMaxPrintBufferSize) + 1) * sizeof (CHAR16);
-
- Buffer = (CHAR16 *) AllocatePool (BufferSize);
- ASSERT (Buffer != NULL);
-
- PrintNum = UnicodeSPrintAsciiFormat (Buffer, BufferSize, Format, Marker);
-
- VA_END (Marker);
-
- ReturnNum = InternalPrintGraphic (PointX, PointY, ForeGround, BackGround, Buffer, PrintNum);
-
- FreePool (Buffer);
-
- return ReturnNum;
-}
-
-/**
- Appends a formatted Unicode string to a Null-terminated Unicode string
-
- This function appends a formatted Unicode string to the Null-terminated
- Unicode string specified by String. String is optional and may be NULL.
- Storage for the formatted Unicode string returned is allocated using
- AllocatePool(). The pointer to the appended string is returned. The caller
- is responsible for freeing the returned string.
-
- If String is not NULL and not aligned on a 16-bit boundary, then ASSERT().
- If FormatString is NULL, then ASSERT().
- If FormatString is not aligned on a 16-bit boundary, then ASSERT().
-
- @param[in] String A Null-terminated Unicode string.
- @param[in] FormatString A Null-terminated Unicode format string.
- @param[in] Marker VA_LIST marker for the variable argument list.
-
- @retval NULL There was not enough available memory.
- @return Null-terminated Unicode string is that is the formatted
- string appended to String.
-**/
-CHAR16*
-EFIAPI
-CatVSPrint (
- IN CHAR16 *String, OPTIONAL
- IN CONST CHAR16 *FormatString,
- IN VA_LIST Marker
- )
-{
- UINTN CharactersRequired;
- UINTN SizeRequired;
- CHAR16 *BufferToReturn;
- VA_LIST ExtraMarker;
-
- VA_COPY (ExtraMarker, Marker);
- CharactersRequired = SPrintLength(FormatString, ExtraMarker);
- VA_END (ExtraMarker);
-
- if (String != NULL) {
- SizeRequired = StrSize(String) + (CharactersRequired * sizeof(CHAR16));
- } else {
- SizeRequired = sizeof(CHAR16) + (CharactersRequired * sizeof(CHAR16));
- }
-
- BufferToReturn = AllocatePool(SizeRequired);
-
- if (BufferToReturn == NULL) {
- return NULL;
- } else {
- BufferToReturn[0] = L'\0';
- }
-
- if (String != NULL) {
- StrCpyS(BufferToReturn, SizeRequired / sizeof(CHAR16), String);
- }
-
- UnicodeVSPrint(BufferToReturn + StrLen(BufferToReturn), (CharactersRequired+1) * sizeof(CHAR16), FormatString, Marker);
-
- ASSERT(StrSize(BufferToReturn)==SizeRequired);
-
- return (BufferToReturn);
-}
-
-/**
- Appends a formatted Unicode string to a Null-terminated Unicode string
-
- This function appends a formatted Unicode string to the Null-terminated
- Unicode string specified by String. String is optional and may be NULL.
- Storage for the formatted Unicode string returned is allocated using
- AllocatePool(). The pointer to the appended string is returned. The caller
- is responsible for freeing the returned string.
-
- If String is not NULL and not aligned on a 16-bit boundary, then ASSERT().
- If FormatString is NULL, then ASSERT().
- If FormatString is not aligned on a 16-bit boundary, then ASSERT().
-
- @param[in] String A Null-terminated Unicode string.
- @param[in] FormatString A Null-terminated Unicode format string.
- @param[in] ... The variable argument list whose contents are
- accessed based on the format string specified by
- FormatString.
-
- @retval NULL There was not enough available memory.
- @return Null-terminated Unicode string is that is the formatted
- string appended to String.
-**/
-CHAR16 *
-EFIAPI
-CatSPrint (
- IN CHAR16 *String, OPTIONAL
- IN CONST CHAR16 *FormatString,
- ...
- )
-{
- VA_LIST Marker;
- CHAR16 *NewString;
-
- VA_START (Marker, FormatString);
- NewString = CatVSPrint(String, FormatString, Marker);
- VA_END (Marker);
- return NewString;
-}
-
diff --git a/IntelFrameworkPkg/Library/FrameworkUefiLib/UefiNotTiano.c b/IntelFrameworkPkg/Library/FrameworkUefiLib/UefiNotTiano.c
deleted file mode 100644
index b4937bab1f..0000000000
--- a/IntelFrameworkPkg/Library/FrameworkUefiLib/UefiNotTiano.c
+++ /dev/null
@@ -1,327 +0,0 @@
-/** @file
- Library functions that abstract areas of conflict between framework and UEFI 2.0.
-
- Help Port Framework code that has conflicts with UEFI 2.0 by hiding the
- old conflicts with library functions and supporting implementations of the old
- (EDK/EFI 1.10) and new (EDK II/UEFI 2.0) way. This module is a DXE driver as
- it contains DXE enum extensions for EFI event services.
-
-Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials
-are licensed and made available under the terms and conditions of the BSD License
-which accompanies this distribution. The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-
-
-#include "UefiLibInternal.h"
-
-/**
- Create a Legacy Boot Event.
-
- Tiano extended the CreateEvent Type enum to add a legacy boot event type.
- This was bad as Tiano did not own the enum. In UEFI 2.0 CreateEventEx was
- added and now it's possible to not voilate the UEFI specification by
- declaring a GUID for the legacy boot event class. This library supports
- the EDK/EFI 1.10 form and EDK II/UEFI 2.0 form and allows common code to
- work both ways.
-
- @param LegacyBootEvent Returns the EFI event returned from gBS->CreateEvent(Ex).
-
- @retval EFI_SUCCESS Event was created.
- @retval Other Event was not created.
-
-**/
-EFI_STATUS
-EFIAPI
-EfiCreateEventLegacyBoot (
- OUT EFI_EVENT *LegacyBootEvent
- )
-{
- return EfiCreateEventLegacyBootEx (
- TPL_CALLBACK,
- EfiEventEmptyFunction,
- NULL,
- LegacyBootEvent
- );
-}
-
-/**
- Create an EFI event in the Legacy Boot Event Group and allows
- the caller to specify a notification function.
-
- This function abstracts the creation of the Legacy Boot Event.
- The Framework moved from a proprietary to UEFI 2.0 based mechanism.
- This library abstracts the caller from how this event is created to prevent
- to code form having to change with the version of the specification supported.
- If LegacyBootEvent is NULL, then ASSERT().
-
- @param NotifyTpl The task priority level of the event.
- @param NotifyFunction The notification function to call when the event is signaled.
- @param NotifyContext The content to pass to NotifyFunction when the event is signaled.
- @param LegacyBootEvent Returns the EFI event returned from gBS->CreateEvent(Ex).
-
- @retval EFI_SUCCESS Event was created.
- @retval Other Event was not created.
-
-**/
-EFI_STATUS
-EFIAPI
-EfiCreateEventLegacyBootEx (
- IN EFI_TPL NotifyTpl,
- IN EFI_EVENT_NOTIFY NotifyFunction, OPTIONAL
- IN VOID *NotifyContext, OPTIONAL
- OUT EFI_EVENT *LegacyBootEvent
- )
-{
- EFI_STATUS Status;
-
- ASSERT (LegacyBootEvent != NULL);
-
- if (gST->Hdr.Revision < 0x00020000) {
- //
- // prior to UEFI 2.0 use Tiano extension to EFI
- //
- Status = gBS->CreateEvent (
- EFI_EVENT_SIGNAL_LEGACY_BOOT | EVT_NOTIFY_SIGNAL,
- NotifyTpl,
- NotifyFunction,
- NotifyContext,
- LegacyBootEvent
- );
- } else {
- //
- // For UEFI 2.0 and the future use an Event Group
- //
- Status = gBS->CreateEventEx (
- EVT_NOTIFY_SIGNAL,
- NotifyTpl,
- NotifyFunction,
- NotifyContext,
- &gEfiEventLegacyBootGuid,
- LegacyBootEvent
- );
- }
-
- return Status;
-}
-
-/**
- Create a Read to Boot Event.
-
- Tiano extended the CreateEvent Type enum to add a ready to boot event type.
- This was bad as Tiano did not own the enum. In UEFI 2.0 CreateEventEx was
- added and now it's possible to not voilate the UEFI specification and use
- the ready to boot event class defined in UEFI 2.0. This library supports
- the EDK/EFI 1.10 form and EDK II/UEFI 2.0 form and allows common code to
- work both ways.
-
- @param ReadyToBootEvent Returns the EFI event returned from gBS->CreateEvent(Ex).
-
- @retval EFI_SUCCESS Event was created.
- @retval Other Event was not created.
-
-**/
-EFI_STATUS
-EFIAPI
-EfiCreateEventReadyToBoot (
- OUT EFI_EVENT *ReadyToBootEvent
- )
-{
- return EfiCreateEventReadyToBootEx (
- TPL_CALLBACK,
- EfiEventEmptyFunction,
- NULL,
- ReadyToBootEvent
- );
-}
-
-/**
- Create an EFI event in the Ready To Boot Event Group and allows
- the caller to specify a notification function.
-
- This function abstracts the creation of the Ready to Boot Event.
- The Framework moved from a proprietary to UEFI 2.0 based mechanism.
- This library abstracts the caller from how this event is created to prevent
- to code form having to change with the version of the specification supported.
- If ReadyToBootEvent is NULL, then ASSERT().
-
- @param NotifyTpl The task priority level of the event.
- @param NotifyFunction The notification function to call when the event is signaled.
- @param NotifyContext The content to pass to NotifyFunction when the event is signaled.
- @param ReadyToBootEvent Returns the EFI event returned from gBS->CreateEvent(Ex).
-
- @retval EFI_SUCCESS Event was created.
- @retval Other Event was not created.
-
-**/
-EFI_STATUS
-EFIAPI
-EfiCreateEventReadyToBootEx (
- IN EFI_TPL NotifyTpl,
- IN EFI_EVENT_NOTIFY NotifyFunction, OPTIONAL
- IN VOID *NotifyContext, OPTIONAL
- OUT EFI_EVENT *ReadyToBootEvent
- )
-{
- EFI_STATUS Status;
-
- ASSERT (ReadyToBootEvent != NULL);
-
- if (gST->Hdr.Revision < 0x00020000) {
- //
- // prior to UEFI 2.0 use Tiano extension to EFI
- //
- Status = gBS->CreateEvent (
- EFI_EVENT_SIGNAL_READY_TO_BOOT | EFI_EVENT_NOTIFY_SIGNAL_ALL,
- NotifyTpl,
- NotifyFunction,
- NotifyContext,
- ReadyToBootEvent
- );
- } else {
- //
- // For UEFI 2.0 and the future use an Event Group
- //
- Status = gBS->CreateEventEx (
- EVT_NOTIFY_SIGNAL,
- NotifyTpl,
- NotifyFunction,
- NotifyContext,
- &gEfiEventReadyToBootGuid,
- ReadyToBootEvent
- );
- }
-
- return Status;
-}
-
-
-/**
- Signal a Ready to Boot Event.
-
- Create a Ready to Boot Event. Signal it and close it. This causes other
- events of the same event group to be signaled in other modules.
-
-**/
-VOID
-EFIAPI
-EfiSignalEventReadyToBoot (
- VOID
- )
-{
- EFI_STATUS Status;
- EFI_EVENT ReadyToBootEvent;
-
- Status = EfiCreateEventReadyToBoot (&ReadyToBootEvent);
- if (!EFI_ERROR (Status)) {
- gBS->SignalEvent (ReadyToBootEvent);
- gBS->CloseEvent (ReadyToBootEvent);
- }
-}
-
-/**
- Signal a Legacy Boot Event.
-
- Create a legacy Boot Event. Signal it and close it. This causes other
- events of the same event group to be signaled in other modules.
-
-**/
-VOID
-EFIAPI
-EfiSignalEventLegacyBoot (
- VOID
- )
-{
- EFI_STATUS Status;
- EFI_EVENT LegacyBootEvent;
-
- Status = EfiCreateEventLegacyBoot (&LegacyBootEvent);
- if (!EFI_ERROR (Status)) {
- gBS->SignalEvent (LegacyBootEvent);
- gBS->CloseEvent (LegacyBootEvent);
- }
-}
-
-
-/**
- Check to see if the Firmware Volume (FV) Media Device Path is valid
-
- Tiano extended the EFI 1.10 device path nodes. Tiano does not own this enum
- so as we move to UEFI 2.0 support we must use a mechanism that conforms with
- the UEFI 2.0 specification to define the FV device path. An UEFI GUIDed
- device path is defined for Tiano extensions of device path. If the code
- is compiled to conform with the UEFI 2.0 specification use the new device path
- else use the old form for backwards compatability. The return value to this
- function points to a location in FvDevicePathNode and it does not allocate
- new memory for the GUID pointer that is returned.
-
- @param FvDevicePathNode Pointer to FV device path to check.
-
- @retval NULL FvDevicePathNode is not valid.
- @retval Other FvDevicePathNode is valid and pointer to NameGuid was returned.
-
-**/
-EFI_GUID *
-EFIAPI
-EfiGetNameGuidFromFwVolDevicePathNode (
- IN CONST MEDIA_FW_VOL_FILEPATH_DEVICE_PATH *FvDevicePathNode
- )
-{
- ASSERT (FvDevicePathNode != NULL);
-
- //
- // EFI Specification extension on Media Device Path. MEDIA_FW_VOL_FILEPATH_DEVICE_PATH is adopted by UEFI later and added in UEFI2.10.
- // In EdkCompatibility Package, we only support MEDIA_FW_VOL_FILEPATH_DEVICE_PATH that complies with
- // EFI 1.10 and UEFI 2.10.
- //
- if (DevicePathType (&FvDevicePathNode->Header) == MEDIA_DEVICE_PATH &&
- DevicePathSubType (&FvDevicePathNode->Header) == MEDIA_PIWG_FW_FILE_DP) {
- return (EFI_GUID *) &FvDevicePathNode->FvFileName;
- }
-
- return NULL;
-}
-
-
-/**
- Initialize a Firmware Volume (FV) Media Device Path node.
-
- Tiano extended the EFI 1.10 device path nodes. Tiano does not own this enum
- so as we move to UEFI 2.0 support we must use a mechanism that conforms with
- the UEFI 2.0 specification to define the FV device path. An UEFI GUIDed
- device path is defined for Tiano extensions of device path. If the code
- is compiled to conform with the UEFI 2.0 specification use the new device path
- else use the old form for backwards compatability.
-
- @param FvDevicePathNode Pointer to a FV device path node to initialize
- @param NameGuid FV file name to use in FvDevicePathNode
-
-**/
-VOID
-EFIAPI
-EfiInitializeFwVolDevicepathNode (
- IN OUT MEDIA_FW_VOL_FILEPATH_DEVICE_PATH *FvDevicePathNode,
- IN CONST EFI_GUID *NameGuid
- )
-{
- ASSERT (FvDevicePathNode != NULL);
- ASSERT (NameGuid != NULL);
-
- //
- // EFI Specification extension on Media Device Path. MEDIA_FW_VOL_FILEPATH_DEVICE_PATH is adopted by UEFI later and added in UEFI2.10.
- // In EdkCompatibility Package, we only support MEDIA_FW_VOL_FILEPATH_DEVICE_PATH that complies with
- // EFI 1.10 and UEFI 2.10.
- //
- FvDevicePathNode->Header.Type = MEDIA_DEVICE_PATH;
- FvDevicePathNode->Header.SubType = MEDIA_PIWG_FW_FILE_DP;
- SetDevicePathNodeLength (&FvDevicePathNode->Header, sizeof (MEDIA_FW_VOL_FILEPATH_DEVICE_PATH));
-
- CopyGuid (&FvDevicePathNode->FvFileName, NameGuid);
-}
-
--
2.18.0.windows.1
next prev parent reply other threads:[~2018-11-13 8:35 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-13 8:35 [PATCH 0/8] IntelFrameworkPkg: Remove unused library instances Shenglei Zhang
2018-11-13 8:35 ` [PATCH 1/8] IntelFrameworkPkg/DxeIoLibCpuIo: Remove DxeIoLibCpuIo Shenglei Zhang
2018-11-13 8:35 ` [PATCH 2/8] IntelFrameworkPkg/Library: Remove DxeSmmDriverEntryPoint Shenglei Zhang
2018-11-13 8:35 ` Shenglei Zhang [this message]
2018-11-13 8:35 ` [PATCH 4/8] IntelFrameworkPkg/PeiHobLibFramework: Remove PeiHobLibFramework Shenglei Zhang
2018-11-13 8:35 ` [PATCH 5/8] IntelFrameworkPkg/PeiSmbusLibSmbusPpi: Remove PeiSmbusLibSmbusPpi Shenglei Zhang
2018-11-13 8:35 ` [PATCH 6/8] IntelFrameworkPkg: Remove the redundant INFs Shenglei Zhang
2018-11-14 3:12 ` Ni, Ruiyu
2018-11-14 3:32 ` Zhang, Shenglei
2018-11-14 5:18 ` Kinney, Michael D
2018-11-19 5:15 ` Gao, Liming
2018-11-19 20:05 ` Kinney, Michael D
2018-11-13 8:35 ` [PATCH 7/8] MdePkg: Remove DxeIoLibCpuIo in comments Shenglei Zhang
2018-11-13 8:35 ` [PATCH 8/8] Vlv2TbltDevicePkg: Remove DxeSmmDriverEntryPoint in DSCs Shenglei Zhang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20181113083518.6824-4-shenglei.zhang@intel.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox