mirror of
https://github.com/ipxe/ipxe
synced 2025-12-22 13:00:39 +03:00
[hci] Continue processing while prompting for shell banner
Continue calling step() while displaying the shell banner. This potentially allows TCP connections to close gracefully after a failed boot attempt. Inspired-by: Guo-Fu Tseng <cooldavid@cooldavid.org> Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
@@ -20,9 +20,9 @@ FILE_LICENCE ( GPL2_OR_LATER );
|
||||
|
||||
#include <stdio.h>
|
||||
#include <console.h>
|
||||
#include <unistd.h>
|
||||
#include <config/general.h>
|
||||
#include <ipxe/keys.h>
|
||||
#include <ipxe/timer.h>
|
||||
#include <ipxe/shell_banner.h>
|
||||
|
||||
/** @file
|
||||
@@ -37,8 +37,6 @@ FILE_LICENCE ( GPL2_OR_LATER );
|
||||
* @ret enter_shell User wants to enter shell
|
||||
*/
|
||||
int shell_banner ( void ) {
|
||||
int enter_shell = 0;
|
||||
int wait_count;
|
||||
int key;
|
||||
|
||||
/* Skip prompt if timeout is zero */
|
||||
@@ -49,18 +47,10 @@ int shell_banner ( void ) {
|
||||
printf ( "\nPress Ctrl-B for the iPXE command line..." );
|
||||
|
||||
/* Wait for key */
|
||||
for ( wait_count = 0 ; wait_count < BANNER_TIMEOUT ; wait_count++ ) {
|
||||
if ( iskey() ) {
|
||||
key = getchar();
|
||||
if ( key == CTRL_B )
|
||||
enter_shell = 1;
|
||||
break;
|
||||
}
|
||||
mdelay(100);
|
||||
}
|
||||
key = getchar_timeout ( ( BANNER_TIMEOUT * TICKS_PER_SEC ) / 10 );
|
||||
|
||||
/* Clear the "Press Ctrl-B" line */
|
||||
printf ( "\r \r" );
|
||||
|
||||
return enter_shell;
|
||||
return ( key == CTRL_B );
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user