17#include <Library/BaseLib.h>
18#include <Library/DebugLib.h>
19#include <Library/MemoryAllocationLib.h>
22#include <Library/UefiLib.h>
23#include <Library/UefiBootServicesTableLib.h>
44 "OCOS: OS set: %a %a\n",
64 for (Index = 0; Index <
Length; ++Index) {
70 if ((Index ==
Length) || (Index == 0) || (
mOSName[Index + 1] ==
'\0')) {
74 VersionPtr = &
mOSName[Index - 1];
76 if ((*VersionPtr <
'0') || (*VersionPtr >
'9')) {
84 if (&
mOSName[Index] == VersionPtr) {
89 while (VersionPtr < &
mOSName[Index]) {
90 MajorVersion = MajorVersion * 10 + (*VersionPtr -
'0');
94 VersionPtr = &
mOSName[Index + 1];
96 while (*VersionPtr !=
'\0') {
97 if ((*VersionPtr <
'0') || (*VersionPtr >
'9')) {
101 MinorVersion = MinorVersion * 10 + (*VersionPtr -
'0');
105 if (&
mOSName[Index + 1] == VersionPtr) {
109 if (((MajorVersion << 16U) | MinorVersion) > ((10U << 16U) | 9U)) {
114 DEBUG ((DEBUG_VERBOSE,
"OCOS: Should use black background\n"));
119 DEBUG ((DEBUG_VERBOSE,
"OCOS: Should use grey background\n"));
139 Size = AsciiStrSize (OSName);
161 Size = AsciiStrSize (OSVendor);
173 IN UINTN *BootVTdEnabled
183 OUT UINTN *BootVTdEnabled
206 EFI_HANDLE NewHandle;
208 DEBUG ((DEBUG_VERBOSE,
"OcOSInfoInstallProtocol\n"));
212 if (EFI_ERROR (Status)) {
213 DEBUG ((DEBUG_ERROR,
"OCOS: Uninstall failed - %r\n", Status));
217 Status =
gBS->LocateProtocol (
223 if (!EFI_ERROR (Status)) {
229 Status =
gBS->InstallMultipleProtocolInterfaces (
236 if (EFI_ERROR (Status)) {
EFI_GUID gAppleOSLoadedNamedEventGuid
#define EFI_OS_INFO_PROTOCOL_REVISION
EFI_GUID gEfiOSInfoProtocolGuid
#define EFI_OS_INFO_APPLE_VENDOR_NAME
DMG_SIZE_DEVICE_PATH Size
EFI_STATUS OcUninstallAllProtocolInstances(EFI_GUID *Protocol)
STATIC VOID EFIAPI GetBootVTdEnabled(OUT UINTN *BootVTdEnabled)
STATIC VOID InternalOSInfoSet(VOID)
STATIC BOOLEAN mAppleOSLoadedSignaled
STATIC EFI_OS_INFO_PROTOCOL mOSInfoProtocol
STATIC VOID EFIAPI SetBootVTdEnabled(IN UINTN *BootVTdEnabled)
EFI_OS_INFO_PROTOCOL * OcOSInfoInstallProtocol(IN BOOLEAN Reinstall)
VOID EFIAPI SetVendor(IN CHAR8 *OSVendor)
STATIC UINTN mBootVTdEnabled
STATIC VOID EFIAPI SetName(IN CHAR8 *OSName)
OC_TYPING_BUFFER_ENTRY Buffer[OC_TYPING_BUFFER_SIZE]