74 OUT EFI_DEVICE_PATH_PROTOCOL **Initiator OPTIONAL
78 CHAR8 *RecoveryBootMode;
79 UINTN RecoveryBootModeSize;
86 RecoveryBootModeSize = 0;
87 Status =
gRT->GetVariable (
91 &RecoveryBootModeSize,
98 if (Initiator != NULL) {
105 if (Status != EFI_BUFFER_TOO_SMALL) {
106 return EFI_NOT_FOUND;
113 RecoveryBootMode = AllocatePool (RecoveryBootModeSize + 1);
114 if (RecoveryBootMode != NULL) {
117 "OCB: Failed to allocate recovery-boot-mode %u\n",
118 (UINT32)(RecoveryBootModeSize + 1)
121 Status =
gRT->GetVariable (
125 &RecoveryBootModeSize,
128 if (!EFI_ERROR (Status)) {
132 RecoveryBootMode[RecoveryBootModeSize] =
'\0';
135 "OCB: recovery-boot-mode %u = %a - %r\n",
136 (UINT32)RecoveryBootModeSize,
143 "OCB: Failed to obtain recovery-boot-mode %u - %r\n",
144 (UINT32)RecoveryBootModeSize,
149 FreePool (RecoveryBootMode);
153 "OCB: Failed to allocate recovery-boot-mode %u\n",
154 (UINT32)(RecoveryBootModeSize + 1)
160 if (Initiator != NULL) {
172 EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,