/** This function will connect console device except ConIn base on the console device variable ConOut and ErrOut. @retval EFI_SUCCESS At least one of the ConOut device have been connected success. @retval EFI_STATUS Return the status of BdsLibConnectConsoleVariable (). **/ EFI_STATUS EFIAPI BdsLibConnectAllDefaultConsolesWithOutConIn ( VOID ) { EFI_STATUS Status; BOOLEAN SystemTableUpdated; // // Connect all default console variables except ConIn // // // It seems impossible not to have any ConOut device on platform, // so we check the status here. // Status = BdsLibConnectConsoleVariable (L"ConOut"); if (EFI_ERROR (Status)) { return Status; } // // Insert the performance probe for Console Out // PERF_START (NULL, "ConOut", "BDS", 1); PERF_END (NULL, "ConOut", "BDS", 0); // // The _ModuleEntryPoint err out var is legal. // BdsLibConnectConsoleVariable (L"ErrOut"); SystemTableUpdated = FALSE; // // Fill console handles in System Table if no console device assignd. // if (UpdateSystemTableConsole (L"ConOut", &gEfiSimpleTextOutProtocolGuid, &gST->ConsoleOutHandle, (VOID **) &gST->ConOut)) { SystemTableUpdated = TRUE; } if (UpdateSystemTableConsole (L"ErrOut", &gEfiSimpleTextOutProtocolGuid, &gST->StandardErrorHandle, (VOID **) &gST->StdErr)) { SystemTableUpdated = TRUE; } if (SystemTableUpdated) { // // Update the CRC32 in the EFI System Table header // gST->Hdr.CRC32 = 0; gBS->CalculateCrc32 ( (UINT8 *) &gST->Hdr, gST->Hdr.HeaderSize, &gST->Hdr.CRC32 ); } return EFI_SUCCESS; }
/** This function will connect all the console devices base on the console device variable ConIn, ConOut and ErrOut. **/ VOID EFIAPI EfiBootManagerConnectAllDefaultConsoles ( VOID ) { BOOLEAN SystemTableUpdated; EfiBootManagerConnectConsoleVariable (ConOut, TRUE); PERF_START (NULL, "ConOutReady", "BDS", 1); PERF_END (NULL, "ConOutReady", "BDS", 0); EfiBootManagerConnectConsoleVariable (ConIn, TRUE); PERF_START (NULL, "ConInReady", "BDS", 1); PERF_END (NULL, "ConInReady", "BDS", 0); // // The _ModuleEntryPoint err out var is legal. // EfiBootManagerConnectConsoleVariable (ErrOut, TRUE); PERF_START (NULL, "ErrOutReady", "BDS", 1); PERF_END (NULL, "ErrOutReady", "BDS", 0); SystemTableUpdated = FALSE; // // Fill console handles in System Table if no console device assignd. // if (UpdateSystemTableConsole (L"ConIn", &gEfiSimpleTextInProtocolGuid, &gST->ConsoleInHandle, (VOID **) &gST->ConIn)) { SystemTableUpdated = TRUE; } if (UpdateSystemTableConsole (L"ConOut", &gEfiSimpleTextOutProtocolGuid, &gST->ConsoleOutHandle, (VOID **) &gST->ConOut)) { SystemTableUpdated = TRUE; } if (UpdateSystemTableConsole (L"ErrOut", &gEfiSimpleTextOutProtocolGuid, &gST->StandardErrorHandle, (VOID **) &gST->StdErr)) { SystemTableUpdated = TRUE; } if (SystemTableUpdated) { // // Update the CRC32 in the EFI System Table header // gST->Hdr.CRC32 = 0; gBS->CalculateCrc32 ( (UINT8 *) &gST->Hdr, gST->Hdr.HeaderSize, &gST->Hdr.CRC32 ); } }
/** This function will connect console device base on the console device variable ConIn, ConOut and ErrOut. @retval EFI_SUCCESS At least one of the ConIn and ConOut device have been connected success. @retval EFI_STATUS Return the status of BdsLibConnectConsoleVariable (). **/ EFI_STATUS EFIAPI BdsLibConnectAllDefaultConsoles ( VOID ) { EFI_STATUS Status; BOOLEAN SystemTableUpdated; // // Connect all default console variables // // // It seems impossible not to have any ConOut device on platform, // so we check the status here. // Status = BdsLibConnectConsoleVariable (L"ConOut"); if (EFI_ERROR (Status)) { return Status; } // // Insert the performance probe for Console Out // PERF_START (NULL, "ConOut", "BDS", 1); PERF_END (NULL, "ConOut", "BDS", 0); // // Because possibly the platform is legacy free, in such case, // ConIn devices (Serial Port and PS2 Keyboard ) does not exist, // so we need not check the status. // BdsLibConnectConsoleVariable (L"ConIn"); // // The _ModuleEntryPoint err out var is legal. // BdsLibConnectConsoleVariable (L"ErrOut"); SystemTableUpdated = FALSE; // // Fill console handles in System Table if no console device assignd. // if (UpdateSystemTableConsole (L"ConIn", &gEfiSimpleTextInProtocolGuid, &gST->ConsoleInHandle, (VOID **) &gST->ConIn)) { SystemTableUpdated = TRUE; } if (UpdateSystemTableConsole (L"ConOut", &gEfiSimpleTextOutProtocolGuid, &gST->ConsoleOutHandle, (VOID **) &gST->ConOut)) { SystemTableUpdated = TRUE; } if (UpdateSystemTableConsole (L"ErrOut", &gEfiSimpleTextOutProtocolGuid, &gST->StandardErrorHandle, (VOID **) &gST->StdErr)) { SystemTableUpdated = TRUE; } if (SystemTableUpdated) { // // Update the CRC32 in the EFI System Table header // gST->Hdr.CRC32 = 0; gBS->CalculateCrc32 ( (UINT8 *) &gST->Hdr, gST->Hdr.HeaderSize, &gST->Hdr.CRC32 ); } // // If any component set PcdTestKeyUsed to TRUE because use of a test key // was detected, then display a warning message on the debug log and the console // if (PcdGetBool (PcdTestKeyUsed) == TRUE) { DEBUG ((DEBUG_ERROR, "**********************************\n")); DEBUG ((DEBUG_ERROR, "** WARNING: Test Key is used. **\n")); DEBUG ((DEBUG_ERROR, "**********************************\n")); Print (L"** WARNING: Test Key is used. **\n"); } return EFI_SUCCESS; }