36CHAR16 *mSerialConsoleNames[] = {
37 L
"PC-ANSI Serial Console",
38 L
"VT-100 Serial Console",
39 L
"VT-100+ Serial Console",
40 L
"VT-UTF8 Serial Console",
41 L
"Tty Terminal Serial Console",
42 L
"Linux Terminal Serial Console",
43 L
"Xterm R6 Serial Console",
44 L
"VT-400 Serial Console",
45 L
"SCO Terminal Serial Console"
49 TERMINAL_DEV_SIGNATURE,
74 EFI_TEXT_ATTR (EFI_LIGHTGRAY, EFI_BLACK),
137 for (Type = 0; Type <
ARRAY_SIZE (mTerminalType); Type++) {
176 if (RemainingDevicePath !=
NULL) {
189 (Node->Header.
SubType != MSG_VENDOR_DP) ||
192 return EFI_UNSUPPORTED;
200 return EFI_UNSUPPORTED;
211 Status =
gBS->OpenProtocol (
213 &gEfiSerialIoProtocolGuid,
215 This->DriverBindingHandle,
217 EFI_OPEN_PROTOCOL_BY_DRIVER
219 if (Status == EFI_ALREADY_STARTED) {
223 if (EFI_ERROR (Status)) {
232 &gEfiSerialIoProtocolGuid,
233 This->DriverBindingHandle,
240 Status =
gBS->OpenProtocol (
242 &gEfiDevicePathProtocolGuid,
243 (VOID **)&ParentDevicePath,
244 This->DriverBindingHandle,
246 EFI_OPEN_PROTOCOL_BY_DRIVER
248 if (Status == EFI_ALREADY_STARTED) {
252 if (EFI_ERROR (Status)) {
261 &gEfiDevicePathProtocolGuid,
262 This->DriverBindingHandle,
285 if (ListHead ==
NULL) {
286 return EFI_INVALID_PARAMETER;
291 ListHead->ForwardLink,
294 TERMINAL_CONSOLE_IN_EX_NOTIFY_SIGNATURE
316 OUT INT32 *TextModeCount
321 ASSERT (TextModeCount !=
NULL);
323 TextModeData =
AllocateCopyPool (
sizeof (mTerminalConsoleModeData), mTerminalConsoleModeData);
324 if (TextModeData ==
NULL) {
328 *TextModeCount =
ARRAY_SIZE (mTerminalConsoleModeData);
333 for (Index = 0; Index < *TextModeCount; Index++) {
336 "Terminal - Mode %d, Column = %d, Row = %d\n",
338 TextModeData[Index].Columns,
339 TextModeData[Index].Rows
359 OriginalTpl =
gBS->RaiseTPL (TPL_NOTIFY);
361 gBS->CloseEvent (TerminalDevice->TimerEvent);
362 gBS->CloseEvent (TerminalDevice->TwoSecondTimeOut);
364 gBS->RestoreTPL (OriginalTpl);
379 Status =
gBS->CreateEvent (
380 EVT_TIMER | EVT_NOTIFY_SIGNAL,
384 &TerminalDevice->TimerEvent
388 Status =
gBS->SetTimer (
389 TerminalDevice->TimerEvent,
391 KEYBOARD_TIMER_INTERVAL
395 Status =
gBS->CreateEvent (
400 &TerminalDevice->TwoSecondTimeOut
432 if (!EFI_ERROR (Status)) {
440 if (EFI_ERROR (Status)) {
445 if (!EFI_ERROR (Status)) {
446 *ControllerNameTable = Table;
482 UINTN SerialInTimeOut;
495 Status =
gBS->OpenProtocol (
497 &gEfiDevicePathProtocolGuid,
498 (VOID **)&ParentDevicePath,
499 This->DriverBindingHandle,
501 EFI_OPEN_PROTOCOL_BY_DRIVER
503 ASSERT ((Status ==
EFI_SUCCESS) || (Status == EFI_ALREADY_STARTED));
504 if (EFI_ERROR (Status) && (Status != EFI_ALREADY_STARTED)) {
511 Status =
gBS->OpenProtocol (
513 &gEfiSerialIoProtocolGuid,
515 This->DriverBindingHandle,
517 EFI_OPEN_PROTOCOL_BY_DRIVER
519 ASSERT ((Status ==
EFI_SUCCESS) || (Status == EFI_ALREADY_STARTED));
520 if (EFI_ERROR (Status) && (Status != EFI_ALREADY_STARTED)) {
541 if (Status == EFI_ALREADY_STARTED) {
542 if (RemainingDevicePath ==
NULL) {
553 Status =
gBS->OpenProtocolInformation (
555 &gEfiSerialIoProtocolGuid,
559 if (!EFI_ERROR (Status)) {
560 Status = EFI_NOT_FOUND;
561 for (Index = 0; Index < EntryCount; Index++) {
562 if ((OpenInfoBuffer[Index].Attributes & EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER) != 0) {
563 Status =
gBS->OpenProtocol (
564 OpenInfoBuffer[Index].ControllerHandle,
565 &gEfiSimpleTextInProtocolGuid,
566 (VOID **)&SimpleTextInput,
567 This->DriverBindingHandle,
569 EFI_OPEN_PROTOCOL_GET_PROTOCOL
571 if (!EFI_ERROR (Status)) {
572 TerminalDevice = TERMINAL_CON_IN_DEV_FROM_THIS (SimpleTextInput);
577 if (!EFI_ERROR (Status)) {
582 Vendor = TerminalDevice->DevicePath;
583 Status =
gBS->LocateDevicePath (&gEfiSerialIoProtocolGuid, &Vendor, &SerialIoHandle);
586 Status =
gBS->ReinstallProtocolInterface (
587 TerminalDevice->Handle,
588 &gEfiDevicePathProtocolGuid,
589 TerminalDevice->DevicePath,
590 TerminalDevice->DevicePath
592 if (!EFI_ERROR (Status)) {
596 TerminalDevice->ControllerNameTable = ControllerNameTable;
622 if (TerminalDevice ==
NULL) {
623 Status = EFI_OUT_OF_RESOURCES;
627 if (RemainingDevicePath ==
NULL) {
631 TerminalDevice->TerminalType =
PcdGet8 (PcdDefaultTerminalType);
644 ASSERT (TerminalDevice->TerminalType <
ARRAY_SIZE (mTerminalType));
645 TerminalDevice->SerialIo = SerialIo;
651 if (EFI_ERROR (Status)) {
658 Status =
SetTerminalDevicePath (TerminalDevice->TerminalType, ParentDevicePath, &TerminalDevice->DevicePath);
659 if (EFI_ERROR (Status)) {
664 Status =
gBS->CreateEvent (
673 Status =
gBS->CreateEvent (
681 Status =
gBS->CreateEvent (
686 &TerminalDevice->KeyNotifyProcessEvent
695 if (TerminalDevice->RawFiFo ==
NULL) {
700 if (TerminalDevice->UnicodeFiFo ==
NULL) {
705 if (TerminalDevice->EfiKeyFiFo ==
NULL) {
710 if (TerminalDevice->EfiKeyFiFoForNotify ==
NULL) {
717 Mode = TerminalDevice->SerialIo->
Mode;
720 if (Mode->BaudRate != 0) {
721 SerialInTimeOut = (1 + Mode->DataBits + Mode->StopBits) * 2 * 1000000 / (
UINTN)Mode->BaudRate;
724 Status = TerminalDevice->SerialIo->SetAttributes (
725 TerminalDevice->SerialIo,
727 Mode->ReceiveFifoDepth,
728 (UINT32)SerialInTimeOut,
730 (UINT8)Mode->DataBits,
733 if (EFI_ERROR (Status)) {
741 TerminalDevice->SerialInTimeOut = 0;
743 TerminalDevice->SerialInTimeOut = SerialInTimeOut;
746 SimpleTextOutput = &TerminalDevice->SimpleTextOutput;
747 SimpleTextInput = &TerminalDevice->SimpleInput;
752 SimpleTextOutput->
Mode = &TerminalDevice->SimpleTextOutputMode;
756 if (TerminalDevice->TerminalConsoleModeData ==
NULL) {
764 Status = SimpleTextOutput->SetAttribute (SimpleTextOutput, EFI_TEXT_ATTR (EFI_LIGHTGRAY, EFI_BLACK));
765 if (!EFI_ERROR (Status)) {
766 Status = SimpleTextOutput->Reset (SimpleTextOutput,
FALSE);
769 if (EFI_ERROR (Status)) {
776 Status = SimpleTextInput->Reset (SimpleTextInput,
FALSE);
777 if (EFI_ERROR (Status)) {
781 Status =
gBS->InstallMultipleProtocolInterfaces (
782 &TerminalDevice->Handle,
783 &gEfiSimpleTextInProtocolGuid,
784 &TerminalDevice->SimpleInput,
785 &gEfiSimpleTextInputExProtocolGuid,
786 &TerminalDevice->SimpleInputEx,
787 &gEfiSimpleTextOutProtocolGuid,
788 &TerminalDevice->SimpleTextOutput,
789 &gEfiDevicePathProtocolGuid,
790 TerminalDevice->DevicePath,
793 if (!EFI_ERROR (Status)) {
794 Status =
gBS->OpenProtocol (
796 &gEfiSerialIoProtocolGuid,
797 (VOID **)&TerminalDevice->SerialIo,
798 This->DriverBindingHandle,
799 TerminalDevice->Handle,
800 EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER
810 (EFI_PERIPHERAL_REMOTE_CONSOLE | EFI_P_EC_CONTROLLER_ERROR),
815 ASSERT (TerminalDevice !=
NULL);
825 if (TerminalDevice->KeyNotifyProcessEvent !=
NULL) {
826 gBS->CloseEvent (TerminalDevice->KeyNotifyProcessEvent);
829 if (TerminalDevice->RawFiFo !=
NULL) {
833 if (TerminalDevice->UnicodeFiFo !=
NULL) {
834 FreePool (TerminalDevice->UnicodeFiFo);
837 if (TerminalDevice->EfiKeyFiFo !=
NULL) {
838 FreePool (TerminalDevice->EfiKeyFiFo);
841 if (TerminalDevice->EfiKeyFiFoForNotify !=
NULL) {
842 FreePool (TerminalDevice->EfiKeyFiFoForNotify);
845 if (TerminalDevice->ControllerNameTable !=
NULL) {
849 if (TerminalDevice->DevicePath !=
NULL) {
850 FreePool (TerminalDevice->DevicePath);
853 if (TerminalDevice->TerminalConsoleModeData !=
NULL) {
854 FreePool (TerminalDevice->TerminalConsoleModeData);
869 Status =
gBS->CloseProtocol (
871 &gEfiSerialIoProtocolGuid,
872 This->DriverBindingHandle,
877 Status =
gBS->CloseProtocol (
879 &gEfiDevicePathProtocolGuid,
880 This->DriverBindingHandle,
913 BOOLEAN AllChildrenStopped;
923 if (NumberOfChildren == 0) {
927 Status =
gBS->OpenProtocol (
929 &gEfiDevicePathProtocolGuid,
930 (VOID **)&ParentDevicePath,
931 This->DriverBindingHandle,
933 EFI_OPEN_PROTOCOL_GET_PROTOCOL
947 &gEfiSerialIoProtocolGuid,
948 This->DriverBindingHandle,
954 &gEfiDevicePathProtocolGuid,
955 This->DriverBindingHandle,
962 AllChildrenStopped =
TRUE;
964 for (Index = 0; Index < NumberOfChildren; Index++) {
965 Status =
gBS->OpenProtocol (
966 ChildHandleBuffer[Index],
967 &gEfiSimpleTextOutProtocolGuid,
968 (VOID **)&SimpleTextOutput,
969 This->DriverBindingHandle,
970 ChildHandleBuffer[Index],
971 EFI_OPEN_PROTOCOL_GET_PROTOCOL
973 if (!EFI_ERROR (Status)) {
974 TerminalDevice = TERMINAL_CON_OUT_DEV_FROM_THIS (SimpleTextOutput);
978 &gEfiSerialIoProtocolGuid,
979 This->DriverBindingHandle,
980 ChildHandleBuffer[Index]
983 Status =
gBS->UninstallMultipleProtocolInterfaces (
984 ChildHandleBuffer[Index],
985 &gEfiSimpleTextInProtocolGuid,
986 &TerminalDevice->SimpleInput,
987 &gEfiSimpleTextInputExProtocolGuid,
988 &TerminalDevice->SimpleInputEx,
989 &gEfiSimpleTextOutProtocolGuid,
990 &TerminalDevice->SimpleTextOutput,
991 &gEfiDevicePathProtocolGuid,
992 TerminalDevice->DevicePath,
995 if (EFI_ERROR (Status)) {
998 &gEfiSerialIoProtocolGuid,
1000 This->DriverBindingHandle,
1001 ChildHandleBuffer[Index],
1002 EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER
1009 gBS->CloseEvent (TerminalDevice->KeyNotifyProcessEvent);
1011 FreePool (TerminalDevice->DevicePath);
1012 FreePool (TerminalDevice->TerminalConsoleModeData);
1017 if (EFI_ERROR (Status)) {
1018 AllChildrenStopped =
FALSE;
1022 if (!AllChildrenStopped) {
1023 return EFI_DEVICE_ERROR;
1055 while (DevicePathInst !=
NULL) {
1060 if (
CompareMem (Single, DevicePathInst, Size) == 0) {
1081 IN CHAR16 *VariableName,
1098 if (Status == EFI_NOT_FOUND) {
1103 if (EFI_ERROR (Status)) {
1113 if (TempDevicePath !=
NULL) {
1116 if (NewVariable !=
NULL) {
1117 if (Variable !=
NULL) {
1121 Variable = NewVariable;
1131 Status =
gRT->SetVariable (
1133 &gEfiGlobalVariableGuid,
1134 EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS,
1139 if (EFI_ERROR (Status)) {
1140 NameSize =
StrSize (VariableName);
1142 if (SetVariableStatus !=
NULL) {
1143 CopyGuid (&SetVariableStatus->Guid, &gEfiGlobalVariableGuid);
1144 SetVariableStatus->NameSize = NameSize;
1145 SetVariableStatus->DataSize = VariableSize;
1146 SetVariableStatus->SetStatus = Status;
1147 SetVariableStatus->Attributes = EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS;
1148 CopyMem (SetVariableStatus + 1, VariableName, NameSize);
1149 CopyMem (((UINT8 *)(SetVariableStatus + 1)) + NameSize, Variable, VariableSize);
1153 PcdGet32 (PcdErrorCodeSetVariable),
1156 &gEdkiiStatusCodeDataTypeVariableGuid,
1179 IN CHAR16 *VariableName,
1202 if (Variable ==
NULL) {
1207 OriginalVariable = Variable;
1214 if (Instance ==
NULL) {
1233 if (TempDevicePath !=
NULL) {
1234 if (
CompareMem (Instance, TempDevicePath, InstanceSize) == 0) {
1247 SavedNewVariable = NewVariable;
1249 if (SavedNewVariable !=
NULL) {
1259 }
while (Instance !=
NULL);
1266 Status =
gRT->SetVariable (
1268 &gEfiGlobalVariableGuid,
1269 EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS,
1279 if (NewVariable !=
NULL) {
1309 Node.Header.
SubType = MSG_VENDOR_DP;
1321 if (*TerminalDevicePath ==
NULL) {
1322 return EFI_OUT_OF_RESOURCES;
1353 &gTerminalDriverBinding,
1355 &gTerminalComponentName,
1356 &gTerminalComponentName2
1382 CheckDevicePath = DevicePath;
UINTN EFIAPI StrSize(IN CONST CHAR16 *String)
BOOLEAN EFIAPI IsListEmpty(IN CONST LIST_ENTRY *ListHead)
LIST_ENTRY *EFIAPI RemoveEntryList(IN CONST LIST_ENTRY *Entry)
LIST_ENTRY *EFIAPI InitializeListHead(IN OUT LIST_ENTRY *ListHead)
INTN EFIAPI CompareMem(IN CONST VOID *DestinationBuffer, IN CONST VOID *SourceBuffer, IN UINTN Length)
VOID *EFIAPI CopyMem(OUT VOID *DestinationBuffer, IN CONST VOID *SourceBuffer, IN UINTN Length)
BOOLEAN EFIAPI CompareGuid(IN CONST GUID *Guid1, IN CONST GUID *Guid2)
GUID *EFIAPI CopyGuid(OUT GUID *DestinationGuid, IN CONST GUID *SourceGuid)
#define HARDWARE_DEVICE_PATH
#define MESSAGING_DEVICE_PATH
UINT8 EFIAPI DevicePathType(IN CONST VOID *Node)
UINT16 EFIAPI SetDevicePathNodeLength(IN OUT VOID *Node, IN UINTN Length)
UINTN EFIAPI DevicePathNodeLength(IN CONST VOID *Node)
UINT8 EFIAPI DevicePathSubType(IN CONST VOID *Node)
EFI_DEVICE_PATH_PROTOCOL *EFIAPI AppendDevicePathNode(IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath OPTIONAL, IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePathNode OPTIONAL)
BOOLEAN EFIAPI IsDevicePathEnd(IN CONST VOID *Node)
EFI_DEVICE_PATH_PROTOCOL *EFIAPI NextDevicePathNode(IN CONST VOID *Node)
EFI_DEVICE_PATH_PROTOCOL *EFIAPI AppendDevicePathInstance(IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath OPTIONAL, IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePathInstance OPTIONAL)
EFI_DEVICE_PATH_PROTOCOL *EFIAPI GetNextDevicePathInstance(IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath, OUT UINTN *Size)
UINTN EFIAPI GetDevicePathSize(IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath)
VOID *EFIAPI AllocateZeroPool(IN UINTN AllocationSize)
VOID EFIAPI FreePool(IN VOID *Buffer)
VOID *EFIAPI AllocateCopyPool(IN UINTN AllocationSize, IN CONST VOID *Buffer)
#define EFI_CON_IN_DEV_VARIABLE_NAME
EFI_RUNTIME_SERVICES * gRT
#define ARRAY_SIZE(Array)
#define ASSERT_EFI_ERROR(StatusParameter)
#define DEBUG_CODE_BEGIN()
#define DEBUG(Expression)
#define CR(Record, TYPE, Field, TestSignature)
#define REPORT_STATUS_CODE_EX(Type, Value, Instance, CallerId, ExtendedDataGuid, ExtendedData, ExtendedDataSize)
#define REPORT_STATUS_CODE_WITH_DEVICE_PATH(Type, Value, DevicePathParameter)
#define PcdGet8(TokenName)
#define PcdGet32(TokenName)
VOID *EFIAPI AllocatePool(IN UINTN AllocationSize)
STATIC BOOLEAN Match(IN CONST CHAR16 *Translated, IN UINTN TranslatedLength, IN EFI_DEVICE_PATH_PROTOCOL *DevicePath)
BOOLEAN IsHotPlugDevice(IN EFI_DEVICE_PATH_PROTOCOL *DevicePath)
VOID TerminalRemoveConsoleDevVariable(IN CHAR16 *VariableName, IN EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath)
EFI_STATUS SetTerminalDevicePath(IN TERMINAL_TYPE TerminalType, IN EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath, OUT EFI_DEVICE_PATH_PROTOCOL **TerminalDevicePath)
TERMINAL_CONSOLE_MODE_DATA * InitializeTerminalConsoleTextMode(OUT INT32 *TextModeCount)
BOOLEAN MatchDevicePaths(IN EFI_DEVICE_PATH_PROTOCOL *Multi, IN EFI_DEVICE_PATH_PROTOCOL *Single)
EFI_STATUS EFIAPI TerminalDriverBindingStop(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE Controller, IN UINTN NumberOfChildren, IN EFI_HANDLE *ChildHandleBuffer)
EFI_STATUS EFIAPI InitializeTerminal(IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable)
VOID StartTerminalStateMachine(TERMINAL_DEV *TerminalDevice)
EFI_STATUS InitializeControllerNameTable(TERMINAL_TYPE TerminalType, EFI_UNICODE_STRING_TABLE **ControllerNameTable)
EFI_STATUS EFIAPI TerminalDriverBindingStart(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE Controller, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath)
EFI_STATUS TerminalFreeNotifyList(IN OUT LIST_ENTRY *ListHead)
VOID StopTerminalStateMachine(TERMINAL_DEV *TerminalDevice)
EFI_STATUS EFIAPI TerminalDriverBindingSupported(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE Controller, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath)
TERMINAL_TYPE TerminalTypeFromGuid(IN EFI_GUID *Guid)
VOID TerminalUpdateConsoleDevVariable(IN CHAR16 *VariableName, IN EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath)
EFI_STATUS EFIAPI TerminalConInReadKeyStrokeEx(IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This, OUT EFI_KEY_DATA *KeyData)
VOID EFIAPI TerminalConInTimerHandler(IN EFI_EVENT Event, IN VOID *Context)
EFI_STATUS EFIAPI TerminalConOutReset(IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, IN BOOLEAN ExtendedVerification)
EFI_STATUS EFIAPI TerminalConOutSetAttribute(IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, IN UINTN Attribute)
EFI_STATUS EFIAPI TerminalConInReset(IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This, IN BOOLEAN ExtendedVerification)
EFI_STATUS EFIAPI TerminalConOutTestString(IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, IN CHAR16 *WString)
EFI_STATUS EFIAPI TerminalConInResetEx(IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This, IN BOOLEAN ExtendedVerification)
EFI_STATUS EFIAPI TerminalConOutSetMode(IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, IN UINTN ModeNumber)
VOID EFIAPI TerminalConInWaitForKey(IN EFI_EVENT Event, IN VOID *Context)
EFI_STATUS EFIAPI TerminalConOutClearScreen(IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This)
EFI_STATUS EFIAPI TerminalConInUnregisterKeyNotify(IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This, IN VOID *NotificationHandle)
EFI_STATUS EFIAPI TerminalConOutSetCursorPosition(IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, IN UINTN Column, IN UINTN Row)
EFI_STATUS EFIAPI TerminalConInRegisterKeyNotify(IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This, IN EFI_KEY_DATA *KeyData, IN EFI_KEY_NOTIFY_FUNCTION KeyNotificationFunction, OUT VOID **NotifyHandle)
EFI_STATUS EFIAPI TerminalConInReadKeyStroke(IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This, OUT EFI_INPUT_KEY *Key)
EFI_STATUS EFIAPI TerminalConInSetState(IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This, IN EFI_KEY_TOGGLE_STATE *KeyToggleState)
EFI_STATUS EFIAPI TerminalConOutOutputString(IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, IN CHAR16 *WString)
EFI_STATUS EFIAPI TerminalConOutEnableCursor(IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, IN BOOLEAN Visible)
EFI_STATUS EFIAPI TerminalConOutQueryMode(IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, IN UINTN ModeNumber, OUT UINTN *Columns, OUT UINTN *Rows)
VOID EFIAPI TerminalConInWaitForKeyEx(IN EFI_EVENT Event, IN VOID *Context)
EFI_STATUS EFIAPI AddUnicodeString2(IN CONST CHAR8 *Language, IN CONST CHAR8 *SupportedLanguages, IN OUT EFI_UNICODE_STRING_TABLE **UnicodeStringTable, IN CONST CHAR16 *UnicodeString, IN BOOLEAN Iso639Language)
EFI_STATUS EFIAPI GetEfiGlobalVariable2(IN CONST CHAR16 *Name, OUT VOID **Value, OUT UINTN *Size OPTIONAL)
EFI_STATUS EFIAPI EfiLibInstallDriverBindingComponentName2(IN CONST EFI_HANDLE ImageHandle, IN CONST EFI_SYSTEM_TABLE *SystemTable, IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding, IN EFI_HANDLE DriverBindingHandle, IN CONST EFI_COMPONENT_NAME_PROTOCOL *ComponentName OPTIONAL, IN CONST EFI_COMPONENT_NAME2_PROTOCOL *ComponentName2 OPTIONAL)
EFI_STATUS EFIAPI FreeUnicodeStringTable(IN EFI_UNICODE_STRING_TABLE *UnicodeStringTable)
VOID EFIAPI KeyNotifyProcessHandler(IN EFI_EVENT Event, IN VOID *Context)
CHAR8 * SupportedLanguages
CHAR8 * SupportedLanguages
EFI_SERIAL_IO_MODE * Mode
EFI_SIMPLE_TEXT_OUTPUT_MODE * Mode