[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [PATCH v2 3/4] mini-os: Enable console to be configured as raw tty using termios
On 20/06/17 13:08, Wei Liu wrote: On Sun, Jun 18, 2017 at 11:21:21PM +0100, Simon Waterman wrote:Add minimal implementation of termios functions so that a console can be configured in raw mode if an application requires it. Signed-off-by: Simon Waterman <watermansrdev@xxxxxxxxx> --- lib/sys.c | 44 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/lib/sys.c b/lib/sys.c index 1420722..6173471 100644 --- a/lib/sys.c +++ b/lib/sys.c @@ -32,6 +32,7 @@ #include <xenbus.h> #include <xenstore.h> #include <poll.h> +#include <termios.h>#include <sys/types.h>#include <sys/unistd.h> @@ -1436,6 +1437,47 @@ int nice(int inc) return 0; }+/* Limited termios terminal settings support */+const struct termios default_termios = {0, /* iflag */ + ONLCR, /* oflag */ + 0, /* lflag */ + CREAD | CS8, /* cflag */ + {}}; /* cc */ + +int tcsetattr(int fildes, int action, const struct termios *tios) +{ + if (files[fildes].type != FTYPE_CONSOLE) { + errno = ENOTTY; + return -1; + } + + if (tios->c_oflag & ONLCR) + files[fildes].cons.dev->is_raw = false; + else + files[fildes].cons.dev->is_raw = true; + + return 0; +} + +int tcgetattr(int fildes, struct termios *tios) +{ + if (files[fildes].type != FTYPE_CONSOLE) { + errno = ENOTTY; + return -1; + } + + memcpy(tios, &default_termios, sizeof(struct termios)); + + if (files[fildes].cons.dev->is_raw) + tios->c_oflag &= ~ONLCR; + + return 0; +} + +void cfmakeraw(struct termios *termios_p) +{ + termios_p->c_oflag &= ~ONLCR; +}I'm not sure if this function does the right thing. Linux's TERMIOS(3) says cfmakeraw does only the following to c_oflag: termios_p->c_oflag &= ~OPOST; What source (spec) did you reference? I don't think cfmakeraw is defined in POSIX but you're right. All the implementations change OPOST. I should have paid more attention to the man page. I will redo the patch. I propose to make OPOST configurable but ONLCR fixed (enabled). Sound okay or do you prefer I let both OPOST and ONLCR be configured? If I do that I'll need to persist TERMIOS settings for each console whereas at the moment I manufacture them from is_raw if needed. _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |