Added EfiToStr()

This commit is contained in:
Jozef Nagy 2024-01-21 17:48:33 +01:00
parent 25966996e3
commit 87104a93b6
No known key found for this signature in database
GPG key ID: 2D281D7D04AF4A3C
4 changed files with 139 additions and 18 deletions

1
efi.h
View file

@ -3,6 +3,7 @@
#include "guid.h"
#include "efi_types.h"
#include "efilib.h"
// Variable-size array
#define ANYSIZE_ARRAY 1

View file

@ -50,26 +50,59 @@ typedef UINT64 EFI_VIRTUAL_ADDRESS;
typedef UINTN EFI_TPL;
// EFI Status Codes
#define EFI_SUCCESS 0
#define EFI_SUCCESS (0x00)
#define EFI_LOAD_ERROR (0x8000000000000001)
#define EFI_INVALID_PARAMETER (0x8000000000000002)
#define EFI_UNSUPPORTED (0x8000000000000003)
#define EFI_BAD_BUFFER_SIZE (0x8000000000000004)
#define EFI_BUFFER_TOO_SMALL (0x8000000000000005)
#define EFI_NOT_READY (0x8000000000000006)
#define EFI_DEVICE_ERROR (0x8000000000000007)
#define EFI_WRITE_PROTECTED (0x8000000000000008)
#define EFI_OUT_OF_RESOURCES (0x8000000000000009)
#define EFI_VOLUME_CORRUPTED (0x800000000000000A)
#define EFI_VOLUME_FULL (0x800000000000000B)
#define EFI_NO_MEDIA (0x800000000000000C)
#define EFI_MEDIA_CHANGED (0x800000000000000D)
#define EFI_NOT_FOUND (0x800000000000000E)
#define EFI_ACCESS_DENIED (0x800000000000000F)
#define EFI_NO_RESPONSE (0x8000000000000010)
#define EFI_NO_MAPPING (0x8000000000000011)
#define EFI_TIMEOUT (0x8000000000000012)
#define EFI_NOT_STARTED (0x8000000000000013)
#define EFI_ALREADY_STARTED (0x8000000000000014)
#define EFI_ABORTED (0x8000000000000015)
#define EFI_ICMP_ERROR (0x8000000000000016)
#define EFI_TFTP_ERROR (0x8000000000000017)
#define EFI_PROTOCOL_ERROR (0x8000000000000018)
#define EFI_INCOMPATIBLE_VERSION (0x8000000000000019)
#define EFI_SECURITY_VIOLATION (0x800000000000001A)
#define EFI_CRC_ERROR (0x800000000000001B)
#define EFI_END_OF_MEDIA (0x800000000000001C)
#define EFI_END_OF_FILE (0x800000000000001F)
#define EFI_INVALID_LANGUAGE (0x8000000000000020)
#define EFI_COMPROMISED_DATA (0x8000000000000021)
#define EFI_IP_ADDRESS_CONFLICT (0x8000000000000022)
#define EFI_HTTP_ERROR (0x8000000000000023)
// Text color attributes
#define EFI_BLACK 0x00
#define EFI_BLUE 0x01
#define EFI_GREEN 0x02
#define EFI_CYAN 0x03
#define EFI_RED 0x04
#define EFI_MAGENTA 0x05
#define EFI_BROWN 0x06
#define EFI_LIGHTGRAY 0x07
#define EFI_BRIGHT 0x08
#define EFI_DARKGRAY (EFI_BLACK | EFI_BRIGHT) 0x08
#define EFI_LIGHTBLUE 0x09
#define EFI_LIGHTGREEN 0x0A
#define EFI_LIGHTCYAN 0x0B
#define EFI_LIGHTRED 0x0C
#define EFI_LIGHTMAGENTA 0x0D
#define EFI_YELLOW 0x0E
#define EFI_WHITE 0x0F
#define EFI_BLACK 0x00
#define EFI_BLUE 0x01
#define EFI_GREEN 0x02
#define EFI_CYAN 0x03
#define EFI_RED 0x04
#define EFI_MAGENTA 0x05
#define EFI_BROWN 0x06
#define EFI_LIGHTGRAY 0x07
#define EFI_BRIGHT 0x08
#define EFI_DARKGRAY (EFI_BLACK | EFI_BRIGHT) 0x08
#define EFI_LIGHTBLUE 0x09
#define EFI_LIGHTGREEN 0x0A
#define EFI_LIGHTCYAN 0x0B
#define EFI_LIGHTRED 0x0C
#define EFI_LIGHTMAGENTA 0x0D
#define EFI_YELLOW 0x0E
#define EFI_WHITE 0x0F
// Text background colors
#define EFI_BACKGROUND_BLACK 0x00

77
efilib.c Normal file
View file

@ -0,0 +1,77 @@
#include <efilib.h>
const CHAR16 *EfiErrToStr(EFI_STATUS Status)
{
switch (Status) {
case EFI_SUCCESS:
return L"EFI_SUCCESS";
case EFI_LOAD_ERROR:
return L"EFI_LOAD_ERROR";
case EFI_INVALID_PARAMETER:
return L"EFI_INVALID_PARAMETER";
case EFI_UNSUPPORTED:
return L"EFI_UNSUPPORTED";
case EFI_BAD_BUFFER_SIZE:
return L"EFI_BAD_BUFFER_SIZE";
case EFI_BUFFER_TOO_SMALL:
return L"EFI_BUFFER_TOO_SMALL";
case EFI_NOT_READY:
return L"EFI_NOT_READY";
case EFI_DEVICE_ERROR:
return L"EFI_DEVICE_ERROR";
case EFI_WRITE_PROTECTED:
return L"EFI_WRITE_PROTECTED";
case EFI_OUT_OF_RESOURCES:
return L"EFI_OUT_OF_RESOURCES";
case EFI_VOLUME_CORRUPTED:
return L"EFI_VOLUME_CORRUPTED";
case EFI_VOLUME_FULL:
return L"EFI_VOLUME_FULL";
case EFI_NO_MEDIA:
return L"EFI_NO_MEDIA";
case EFI_MEDIA_CHANGED:
return L"EFI_MEDIA_CHANGED";
case EFI_NOT_FOUND:
return L"EFI_NOT_FOUND";
case EFI_ACCESS_DENIED:
return L"EFI_ACCESS_DENIED";
case EFI_NO_RESPONSE:
return L"EFI_NO_RESPONSE";
case EFI_NO_MAPPING:
return L"EFI_NO_MAPPING";
case EFI_TIMEOUT:
return L"EFI_TIMEOUT";
case EFI_NOT_STARTED:
return L"EFI_NOT_STARTED";
case EFI_ALREADY_STARTED:
return L"EFI_ALREADY_STARTED";
case EFI_ABORTED:
return L"EFI_ABORTED";
case EFI_ICMP_ERROR:
return L"EFI_ICMP_ERROR";
case EFI_TFTP_ERROR:
return L"EFI_TFTP_ERROR";
case EFI_PROTOCOL_ERROR:
return L"EFI_PROTOCOL_ERROR";
case EFI_INCOMPATIBLE_VERSION:
return L"EFI_INCOMPATIBLE_VERSION";
case EFI_SECURITY_VIOLATION:
return L"EFI_SECURITY_VIOLATION";
case EFI_CRC_ERROR:
return L"EFI_CRC_ERROR";
case EFI_END_OF_MEDIA:
return L"EFI_END_OF_MEDIA";
case EFI_END_OF_FILE:
return L"EFI_END_OF_FILE";
case EFI_INVALID_LANGUAGE:
return L"EFI_INVALID_LANGUAGE";
case EFI_COMPROMISED_DATA:
return L"EFI_COMPROMISED_DATA";
case EFI_IP_ADDRESS_CONFLICT:
return L"EFI_IP_ADDRESS_CONFLICT";
case EFI_HTTP_ERROR:
return L"EFI_HTTP_ERROR";
default:
return L"Unknown";
}
}

10
efilib.h Normal file
View file

@ -0,0 +1,10 @@
#ifndef EFILIB_H
#define EFILIB_H
#include "efi.h"
#define EFI_ERROR(Status) (((INTN)(EFI_STATUS)(Status)) < 0)
const CHAR16 *EfiErrToStr(EFI_STATUS Status);
#endif /* EFILIB_H */