mirror of
https://github.com/CloverHackyColor/CloverBootloader.git
synced 2024-12-26 16:47:40 +01:00
0a8f273560
Create a PlatformPOSIX+EFI.
52 lines
1.5 KiB
C++
52 lines
1.5 KiB
C++
/*
|
|
* posix_additions.cpp
|
|
*
|
|
* Created on: Feb 5, 2021
|
|
* Author: jief
|
|
*/
|
|
|
|
#include "posix_additions.h"
|
|
#include "stdio.h"
|
|
|
|
/*
|
|
* We need to use AsciiSPrint to be able to use %r and %g
|
|
*/
|
|
extern "C" {
|
|
//# include <Library/UefiLib.h>
|
|
//# include <Library/PrintLib.h>
|
|
|
|
// UINTN
|
|
// EFIAPI
|
|
// AsciiSPrint (
|
|
// OUT CHAR8 *StartOfBuffer,
|
|
// IN UINTN BufferSize,
|
|
// IN CONST CHAR8 *FormatString,
|
|
// ...
|
|
// );
|
|
|
|
}
|
|
|
|
//#include <Platform.h>
|
|
#include "../../rEFIt_UEFI/cpp_foundation/XString.h"
|
|
|
|
XString8 stdio_static_buf = XString8().takeValueFrom("XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX "); // prealloc stdio_static_buf. It has to be at least 2 chars because of 'while ( n > size - 2 )' in strguid and efiStrError
|
|
|
|
|
|
static char efiStrError_buf[90];
|
|
const char* efiStrError(EFI_STATUS Status)
|
|
{
|
|
if ( !EFI_ERROR(Status) ) {
|
|
snprintf(efiStrError_buf, sizeof(efiStrError_buf), "efi success (%llu,0x%llx)", Status, Status);
|
|
}else{
|
|
snprintf(efiStrError_buf, sizeof(efiStrError_buf), "efi error (%llu,0x%llx)", Status, Status);
|
|
}
|
|
return efiStrError_buf;
|
|
}
|
|
|
|
//this function print guid in LittleEndian format while we need BigEndian as Apple do
|
|
const char* strguid(EFI_GUID* guid)
|
|
{
|
|
stdio_static_buf.S8Printf("%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X", guid->Data1, guid->Data2, guid->Data3, guid->Data4[0], guid->Data4[1], guid->Data4[2], guid->Data4[3], guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7]);
|
|
return stdio_static_buf.s();
|
|
}
|