|
[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 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?
_______________________________________________
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 |