sandbox: Tidy up terminal restore
For some reason 'u-boot -D' does not restore the terminal correctly when the 'reset' command is used. Call the terminal restore function explicitly in this case. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Joe Hershberger <joe.hershberger@ni.com>utp
parent
d8abb46b37
commit
8939df092e
|
@ -22,6 +22,8 @@ unsigned long map_len;
|
||||||
|
|
||||||
void reset_cpu(ulong ignored)
|
void reset_cpu(ulong ignored)
|
||||||
{
|
{
|
||||||
|
/* Do this here while it still has an effect */
|
||||||
|
os_fd_restore();
|
||||||
if (state_uninit())
|
if (state_uninit())
|
||||||
os_exit(2);
|
os_exit(2);
|
||||||
|
|
||||||
|
|
|
@ -107,10 +107,12 @@ void os_exit(int exit_code)
|
||||||
static struct termios orig_term;
|
static struct termios orig_term;
|
||||||
static bool term_setup;
|
static bool term_setup;
|
||||||
|
|
||||||
static void os_fd_restore(void)
|
void os_fd_restore(void)
|
||||||
{
|
{
|
||||||
if (term_setup)
|
if (term_setup) {
|
||||||
tcsetattr(0, TCSANOW, &orig_term);
|
tcsetattr(0, TCSANOW, &orig_term);
|
||||||
|
term_setup = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Put tty into raw mode so <tab> and <ctrl+c> work */
|
/* Put tty into raw mode so <tab> and <ctrl+c> work */
|
||||||
|
@ -120,7 +122,6 @@ void os_tty_raw(int fd, bool allow_sigs)
|
||||||
|
|
||||||
if (term_setup)
|
if (term_setup)
|
||||||
return;
|
return;
|
||||||
term_setup = true;
|
|
||||||
|
|
||||||
/* If not a tty, don't complain */
|
/* If not a tty, don't complain */
|
||||||
if (tcgetattr(fd, &orig_term))
|
if (tcgetattr(fd, &orig_term))
|
||||||
|
@ -134,6 +135,7 @@ void os_tty_raw(int fd, bool allow_sigs)
|
||||||
if (tcsetattr(fd, TCSANOW, &term))
|
if (tcsetattr(fd, TCSANOW, &term))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
term_setup = true;
|
||||||
atexit(os_fd_restore);
|
atexit(os_fd_restore);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -111,6 +111,14 @@ void os_exit(int exit_code) __attribute__((noreturn));
|
||||||
*/
|
*/
|
||||||
void os_tty_raw(int fd, bool allow_sigs);
|
void os_tty_raw(int fd, bool allow_sigs);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Restore the tty to its original mode
|
||||||
|
*
|
||||||
|
* Call this to restore the original terminal mode, after it has been changed
|
||||||
|
* by os_tty_raw(). This is an internal function.
|
||||||
|
*/
|
||||||
|
void os_fd_restore(void);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Acquires some memory from the underlying os.
|
* Acquires some memory from the underlying os.
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue