BaseTools: Add DevicePath support for PCD values
Use C code parse device path to output hex string, and Python run command when PCD Value need device path parse. https://bugzilla.tianocore.org/show_bug.cgi?id=541 Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Yunhua Feng <yunhuax.feng@intel.com> Signed-off-by: Yonghong Zhu <yonghong.zhu@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
/** @file
|
||||
Common library assistance routines.
|
||||
|
||||
Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2004 - 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
|
||||
@@ -17,10 +17,31 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
#include <Common/UefiBaseTypes.h>
|
||||
#include <Common/BuildVersion.h>
|
||||
#include <assert.h>
|
||||
#define PRINTED_GUID_BUFFER_SIZE 37 // including null-termination
|
||||
|
||||
#define MAX_LONG_FILE_PATH 500
|
||||
|
||||
#define MAX_UINTN MAX_ADDRESS
|
||||
#define MAX_UINT64 ((UINT64)0xFFFFFFFFFFFFFFFFULL)
|
||||
#define MAX_UINT16 ((UINT16)0xFFFF)
|
||||
#define MAX_UINT8 ((UINT8)0xFF)
|
||||
#define ARRAY_SIZE(Array) (sizeof (Array) / sizeof ((Array)[0]))
|
||||
#define ASCII_RSIZE_MAX 1000000
|
||||
#ifndef RSIZE_MAX
|
||||
#define RSIZE_MAX 1000000
|
||||
#endif
|
||||
|
||||
#define IS_COMMA(a) ((a) == L',')
|
||||
#define IS_HYPHEN(a) ((a) == L'-')
|
||||
#define IS_DOT(a) ((a) == L'.')
|
||||
#define IS_LEFT_PARENTH(a) ((a) == L'(')
|
||||
#define IS_RIGHT_PARENTH(a) ((a) == L')')
|
||||
#define IS_SLASH(a) ((a) == L'/')
|
||||
#define IS_NULL(a) ((a) == L'\0')
|
||||
|
||||
#define ASSERT(x) assert(x)
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
@@ -149,6 +170,285 @@ CHAR8 *
|
||||
LongFilePath (
|
||||
IN CHAR8 *FileName
|
||||
);
|
||||
|
||||
UINTN
|
||||
StrLen (
|
||||
CONST CHAR16 *String
|
||||
);
|
||||
|
||||
VOID *
|
||||
AllocateCopyPool (
|
||||
UINTN AllocationSize,
|
||||
CONST VOID *Buffer
|
||||
);
|
||||
|
||||
INTN
|
||||
StrnCmp (
|
||||
CONST CHAR16 *FirstString,
|
||||
CONST CHAR16 *SecondString,
|
||||
UINTN Length
|
||||
);
|
||||
|
||||
RETURN_STATUS
|
||||
StrToGuid (
|
||||
CONST CHAR16 *String,
|
||||
EFI_GUID *Guid
|
||||
);
|
||||
|
||||
RETURN_STATUS
|
||||
StrHexToBytes (
|
||||
CONST CHAR16 *String,
|
||||
UINTN Length,
|
||||
UINT8 *Buffer,
|
||||
UINTN MaxBufferSize
|
||||
);
|
||||
|
||||
UINTN
|
||||
InternalHexCharToUintn (
|
||||
CHAR16 Char
|
||||
);
|
||||
|
||||
VOID *
|
||||
InternalAllocateCopyPool (
|
||||
UINTN AllocationSize,
|
||||
CONST VOID *Buffer
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
InternalIsDecimalDigitCharacter (
|
||||
CHAR16 Char
|
||||
);
|
||||
|
||||
UINT32
|
||||
SwapBytes32 (
|
||||
UINT32 Value
|
||||
);
|
||||
|
||||
UINT16
|
||||
SwapBytes16 (
|
||||
UINT16 Value
|
||||
);
|
||||
|
||||
EFI_GUID *
|
||||
CopyGuid (
|
||||
EFI_GUID *DestinationGuid,
|
||||
CONST EFI_GUID *SourceGuid
|
||||
);
|
||||
|
||||
UINT64
|
||||
WriteUnaligned64 (
|
||||
UINT64 *Buffer,
|
||||
UINT64 Value
|
||||
);
|
||||
|
||||
UINT64
|
||||
ReadUnaligned64 (
|
||||
CONST UINT64 *Buffer
|
||||
);
|
||||
|
||||
UINTN
|
||||
StrSize (
|
||||
CONST CHAR16 *String
|
||||
);
|
||||
|
||||
UINTN
|
||||
StrHexToUintn (
|
||||
CONST CHAR16 *String
|
||||
);
|
||||
|
||||
UINTN
|
||||
StrDecimalToUintn (
|
||||
CONST CHAR16 *String
|
||||
);
|
||||
|
||||
UINT64
|
||||
StrHexToUint64 (
|
||||
CONST CHAR16 *String
|
||||
);
|
||||
|
||||
UINT64
|
||||
StrDecimalToUint64 (
|
||||
CONST CHAR16 *String
|
||||
);
|
||||
|
||||
RETURN_STATUS
|
||||
StrHexToUint64S (
|
||||
CONST CHAR16 *String,
|
||||
CHAR16 **EndPointer,
|
||||
UINT64 *Data
|
||||
);
|
||||
|
||||
RETURN_STATUS
|
||||
StrHexToUintnS (
|
||||
CONST CHAR16 *String,
|
||||
CHAR16 **EndPointer, OPTIONAL
|
||||
UINTN *Data
|
||||
);
|
||||
|
||||
RETURN_STATUS
|
||||
StrDecimalToUint64S (
|
||||
CONST CHAR16 *String,
|
||||
CHAR16 **EndPointer, OPTIONAL
|
||||
UINT64 *Data
|
||||
);
|
||||
|
||||
RETURN_STATUS
|
||||
StrDecimalToUintnS (
|
||||
CONST CHAR16 *String,
|
||||
CHAR16 **EndPointer, OPTIONAL
|
||||
UINTN *Data
|
||||
);
|
||||
|
||||
VOID *
|
||||
ReallocatePool (
|
||||
UINTN OldSize,
|
||||
UINTN NewSize,
|
||||
VOID *OldBuffer OPTIONAL
|
||||
);
|
||||
|
||||
VOID *
|
||||
InternalReallocatePool (
|
||||
UINTN OldSize,
|
||||
UINTN NewSize,
|
||||
VOID *OldBuffer OPTIONAL
|
||||
);
|
||||
|
||||
VOID *
|
||||
InternalAllocateZeroPool (
|
||||
UINTN AllocationSize
|
||||
) ;
|
||||
|
||||
VOID *
|
||||
InternalAllocatePool (
|
||||
UINTN AllocationSize
|
||||
);
|
||||
|
||||
UINTN
|
||||
StrnLenS (
|
||||
CONST CHAR16 *String,
|
||||
UINTN MaxSize
|
||||
);
|
||||
|
||||
CHAR16
|
||||
InternalCharToUpper (
|
||||
CHAR16 Char
|
||||
);
|
||||
|
||||
INTN
|
||||
StrCmp (
|
||||
CONST CHAR16 *FirstString,
|
||||
CONST CHAR16 *SecondString
|
||||
);
|
||||
|
||||
UINT64
|
||||
SwapBytes64 (
|
||||
UINT64 Value
|
||||
);
|
||||
|
||||
UINT64
|
||||
InternalMathSwapBytes64 (
|
||||
UINT64 Operand
|
||||
);
|
||||
|
||||
RETURN_STATUS
|
||||
StrToIpv4Address (
|
||||
CONST CHAR16 *String,
|
||||
CHAR16 **EndPointer,
|
||||
EFI_IPv4_ADDRESS *Address,
|
||||
UINT8 *PrefixLength
|
||||
);
|
||||
|
||||
RETURN_STATUS
|
||||
StrToIpv6Address (
|
||||
CONST CHAR16 *String,
|
||||
CHAR16 **EndPointer,
|
||||
EFI_IPv6_ADDRESS *Address,
|
||||
UINT8 *PrefixLength
|
||||
);
|
||||
|
||||
RETURN_STATUS
|
||||
StrCpyS (
|
||||
CHAR16 *Destination,
|
||||
UINTN DestMax,
|
||||
CONST CHAR16 *Source
|
||||
);
|
||||
|
||||
RETURN_STATUS
|
||||
UnicodeStrToAsciiStrS (
|
||||
CONST CHAR16 *Source,
|
||||
CHAR8 *Destination,
|
||||
UINTN DestMax
|
||||
);
|
||||
VOID *
|
||||
AllocatePool (
|
||||
UINTN AllocationSize
|
||||
);
|
||||
|
||||
UINT16
|
||||
WriteUnaligned16 (
|
||||
UINT16 *Buffer,
|
||||
UINT16 Value
|
||||
);
|
||||
|
||||
UINT16
|
||||
ReadUnaligned16 (
|
||||
CONST UINT16 *Buffer
|
||||
);
|
||||
|
||||
VOID *
|
||||
AllocateZeroPool (
|
||||
UINTN AllocationSize
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
InternalIsHexaDecimalDigitCharacter (
|
||||
CHAR16 Char
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
InternalSafeStringIsOverlap (
|
||||
IN VOID *Base1,
|
||||
IN UINTN Size1,
|
||||
IN VOID *Base2,
|
||||
IN UINTN Size2
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
InternalSafeStringNoStrOverlap (
|
||||
IN CHAR16 *Str1,
|
||||
IN UINTN Size1,
|
||||
IN CHAR16 *Str2,
|
||||
IN UINTN Size2
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
IsHexStr (
|
||||
CHAR16 *Str
|
||||
);
|
||||
|
||||
UINTN
|
||||
Strtoi (
|
||||
CHAR16 *Str
|
||||
);
|
||||
|
||||
VOID
|
||||
Strtoi64 (
|
||||
CHAR16 *Str,
|
||||
UINT64 *Data
|
||||
);
|
||||
|
||||
VOID
|
||||
StrToAscii (
|
||||
CHAR16 *Str,
|
||||
CHAR8 **AsciiStr
|
||||
);
|
||||
|
||||
CHAR16 *
|
||||
SplitStr (
|
||||
CHAR16 **List,
|
||||
CHAR16 Separator
|
||||
);
|
||||
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
@@ -166,8 +466,6 @@ Returns:
|
||||
}
|
||||
#endif
|
||||
|
||||
#define ASSERT(x) assert(x)
|
||||
|
||||
#ifdef __GNUC__
|
||||
#include <stdio.h>
|
||||
#include <sys/stat.h>
|
||||
|
Reference in New Issue
Block a user