Commit ab06a758 authored by Mike Frysinger's avatar Mike Frysinger Committed by Wolfgang Denk
Browse files

sandbox: put stdin into raw mode



This allows us to act like a serial device: we get tab chars and CTRL+C
and respond appropriately.
Signed-off-by: default avatarMike Frysinger <vapier@gentoo.org>
Tested-by: default avatarSimon Glass <sjg@chromium.org>
parent ec8f0b90
......@@ -21,6 +21,7 @@
#include <fcntl.h>
#include <stdlib.h>
#include <termios.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
......@@ -53,3 +54,36 @@ void os_exit(int exit_code)
{
exit(exit_code);
}
/* Restore tty state when we exit */
static struct termios orig_term;
static void os_fd_restore(void)
{
tcsetattr(0, TCSANOW, &orig_term);
}
/* Put tty into raw mode so <tab> and <ctrl+c> work */
void os_tty_raw(int fd)
{
static int setup = 0;
struct termios term;
if (setup)
return;
setup = 1;
/* If not a tty, don't complain */
if (tcgetattr(fd, &orig_term))
return;
term = orig_term;
term.c_iflag = IGNBRK | IGNPAR;
term.c_oflag = OPOST | ONLCR;
term.c_cflag = CS8 | CREAD | CLOCAL;
term.c_lflag = 0;
if (tcsetattr(fd, TCSANOW, &term))
return;
atexit(os_fd_restore);
}
......@@ -30,6 +30,7 @@
int serial_init(void)
{
os_tty_raw(0);
return 0;
}
......
......@@ -71,3 +71,8 @@ int os_close(int fd);
* @param exit_code exit code for U-Boot
*/
void os_exit(int exit_code);
/**
* Put tty into raw mode to mimic serial console better
*/
void os_tty_raw(int fd);
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment