mirror of
https://github.com/CloverHackyColor/CloverBootloader.git
synced 2024-12-23 16:17:40 +01:00
159 lines
4.2 KiB
C
159 lines
4.2 KiB
C
|
/** @file
|
||
|
|
||
|
Various helper functions.
|
||
|
|
||
|
By dmazar, 26/09/2012
|
||
|
|
||
|
**/
|
||
|
|
||
|
#ifndef __DMP_LIB_H__
|
||
|
#define __DMP_LIB_H__
|
||
|
|
||
|
|
||
|
/** Memory type to string conversion */
|
||
|
extern CHAR16 *EfiMemoryTypeDesc[EfiMaxMemoryType];
|
||
|
|
||
|
/** Allocation type to string conversion */
|
||
|
extern CHAR16 *EfiAllocateTypeDesc[MaxAllocateType];
|
||
|
|
||
|
/** Locate search type to string conversion */
|
||
|
extern CHAR16 *EfiLocateSearchType[];
|
||
|
|
||
|
/** Reset type to string conversion */
|
||
|
extern CHAR16 *EfiResetType[];
|
||
|
|
||
|
extern EFI_GUID mEfiApplePlatformInfoGuid;
|
||
|
|
||
|
|
||
|
//
|
||
|
// MemMap reversed scan
|
||
|
//
|
||
|
#define PREV_MEMORY_DESCRIPTOR(MemoryDescriptor, Size) \
|
||
|
((EFI_MEMORY_DESCRIPTOR *)((UINT8 *)(MemoryDescriptor) - (Size)))
|
||
|
|
||
|
|
||
|
/** GUID - friendly name mapping */
|
||
|
typedef struct {
|
||
|
EFI_GUID *Guid;
|
||
|
CHAR16 *Str;
|
||
|
} MAP_EFI_GUID_STR;
|
||
|
|
||
|
/** Print buffer for unknown GUID printing. Allocated as RT mem
|
||
|
* and gets converted in RuntimeServices.c VirtualAddressChangeEvent().
|
||
|
*/
|
||
|
extern CHAR16 *GuidPrintBuffer;
|
||
|
|
||
|
|
||
|
/** Buffer for RT variable names. Allocated as RT mem
|
||
|
* and gets converted in RuntimeServices.c VirtualAddressChangeEvent().
|
||
|
*/
|
||
|
extern CHAR16 *gVariableNameBuffer;
|
||
|
|
||
|
/** Buffer for RT variable data. Allocated as RT mem
|
||
|
* and gets converted in RuntimeServices.c VirtualAddressChangeEvent().
|
||
|
*/
|
||
|
extern CHAR8 *gVariableDataBuffer;
|
||
|
|
||
|
|
||
|
|
||
|
/** Returns GUID as string, with friendly name for known guids. */
|
||
|
CHAR16*
|
||
|
EFIAPI
|
||
|
GuidStr(IN EFI_GUID *Guid);
|
||
|
|
||
|
/** Prints series of bytes. */
|
||
|
VOID
|
||
|
EFIAPI
|
||
|
PrintBytes(IN CHAR8 *Bytes, IN UINTN Number);
|
||
|
|
||
|
/** Returns pointer to last Char in String or NULL. */
|
||
|
CHAR16*
|
||
|
EFIAPI
|
||
|
GetStrLastChar(IN CHAR16 *String);
|
||
|
|
||
|
/** Returns pointer to last occurence of Char in String or NULL. */
|
||
|
CHAR16*
|
||
|
EFIAPI
|
||
|
GetStrLastCharOccurence(IN CHAR16 *String, IN CHAR16 Char);
|
||
|
|
||
|
/** Returns upper case version of char - valid only for ASCII chars in unicode. */
|
||
|
CHAR16
|
||
|
EFIAPI
|
||
|
ToUpperChar(IN CHAR16 Chr);
|
||
|
|
||
|
|
||
|
/** Returns 0 if two strings are equal, !=0 otherwise. Compares just first 8 bits of chars (valid for ASCII), case insensitive. */
|
||
|
UINTN
|
||
|
EFIAPI
|
||
|
StrCmpiBasic(IN CHAR16 *String1, IN CHAR16 *String2);
|
||
|
|
||
|
/** Returns the first occurrence of a Null-terminated Unicode SearchString
|
||
|
* in a Null-terminated Unicode String.
|
||
|
* Compares just first 8 bits of chars (valid for ASCII), case insensitive.
|
||
|
* Copied from MdePkg/Library/BaseLib/String.c and modified
|
||
|
*/
|
||
|
CHAR16*
|
||
|
EFIAPI
|
||
|
StrStriBasic(IN CONST CHAR16 *String, IN CONST CHAR16 *SearchString);
|
||
|
|
||
|
/** Returns TRUE if String1 starts with String2, FALSE otherwise. Compares just first 8 bits of chars (valid for ASCII), case insensitive. */
|
||
|
BOOLEAN
|
||
|
EFIAPI
|
||
|
StriStartsWithBasic(IN CHAR16 *String1, IN CHAR16 *String2);
|
||
|
|
||
|
/** Shrinks mem map by joining EfiBootServicesCode and EfiBootServicesData records. */
|
||
|
VOID EFIAPI
|
||
|
ShrinkMemMap(
|
||
|
IN UINTN *MemoryMapSize,
|
||
|
IN EFI_MEMORY_DESCRIPTOR *MemoryMap,
|
||
|
IN UINTN DescriptorSize,
|
||
|
IN UINT32 DescriptorVersion
|
||
|
);
|
||
|
|
||
|
/** Prints mem map. */
|
||
|
VOID EFIAPI
|
||
|
PrintMemMap(
|
||
|
IN UINTN MemoryMapSize,
|
||
|
IN EFI_MEMORY_DESCRIPTOR *MemoryMap,
|
||
|
IN UINTN DescriptorSize,
|
||
|
IN UINT32 DescriptorVersion
|
||
|
);
|
||
|
|
||
|
/** Prints some values from Sys table and Runt. services. */
|
||
|
VOID EFIAPI
|
||
|
PrintSystemTable(IN EFI_SYSTEM_TABLE *ST);
|
||
|
|
||
|
/** Prints Message and waits for a key press. */
|
||
|
VOID
|
||
|
WaitForKeyPress(CHAR16 *Message);
|
||
|
|
||
|
/** Returns file path from FilePath device path in allocated memory. Mem should be released by caller.*/
|
||
|
CHAR16 *
|
||
|
EFIAPI
|
||
|
FileDevicePathToText(EFI_DEVICE_PATH_PROTOCOL *FilePathProto);
|
||
|
|
||
|
/** Helper function that calls GetMemoryMap(), allocates space for mem map and returns it. */
|
||
|
EFI_STATUS
|
||
|
EFIAPI
|
||
|
GetMemoryMapAlloc (
|
||
|
IN EFI_GET_MEMORY_MAP GetMemoryMapFunction,
|
||
|
OUT UINTN *MemoryMapSize,
|
||
|
OUT EFI_MEMORY_DESCRIPTOR **MemoryMap,
|
||
|
OUT UINTN *MapKey,
|
||
|
OUT UINTN *DescriptorSize,
|
||
|
OUT UINT32 *DescriptorVersion
|
||
|
);
|
||
|
|
||
|
/** Alloctes Pages from the top of mem, up to address specified in Memory. Returns allocated address in Memory. */
|
||
|
EFI_STATUS
|
||
|
EFIAPI
|
||
|
AllocatePagesFromTop(IN EFI_MEMORY_TYPE MemoryType, IN UINTN Pages, IN OUT EFI_PHYSICAL_ADDRESS *Memory);
|
||
|
|
||
|
/** Prints RT vars. */
|
||
|
VOID
|
||
|
EFIAPI
|
||
|
PrintRTVariables(IN EFI_RUNTIME_SERVICES *RT);
|
||
|
|
||
|
|
||
|
#endif // __DMP_LIB_H__
|