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