[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] PATCH [xenconsoled]: makes pty slave raw early
Is this plausible to slip in for 3.2.0? -- Keir On 16/1/08 12:20, "John Levon" <levon@xxxxxxxxxxxxxxxxx> wrote: > On Wed, Jan 16, 2008 at 10:57:07AM +0000, Samuel Thibault wrote: > >>> on my system (Linux 2.6.18.8 - ia64), if a domain write on the xencons >>> before xenconsole is initialized the domain gets back what it wrote. >> >> Argh, indeed, and it seems to fix things for mini-os as well. John, >> could you please check that it works correctly on Solaris before Keir >> applies it? > > Works fine. Below is the version of the patch that compiles on Solaris. > > cheers > john > > diff --git a/tools/console/daemon/io.c b/tools/console/daemon/io.c > --- a/tools/console/daemon/io.c > +++ b/tools/console/daemon/io.c > @@ -246,7 +246,6 @@ static void domain_close_tty(struct doma > } > > #ifdef __sun__ > -/* Once Solaris has openpty(), this is going to be removed. */ > static int openpty(int *amaster, int *aslave, char *name, > struct termios *termp, struct winsize *winp) > { > @@ -278,8 +277,10 @@ static int openpty(int *amaster, int *as > if (winp) > ioctl(sfd, TIOCSWINSZ, winp); > > + if (termp) > + tcsetattr(sfd, TCSAFLUSH, termp); > + > assert(name == NULL); > - assert(termp == NULL); > > return 0; > > @@ -289,7 +290,20 @@ err: > close(mfd); > return -1; > } > -#endif > + > +void cfmakeraw(struct termios *termios_p) > +{ > + termios_p->c_iflag &= > + ~(IGNBRK|BRKINT|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL|IXON); > + termios_p->c_oflag &= ~OPOST; > + termios_p->c_lflag &= ~(ECHO|ECHONL|ICANON|ISIG|IEXTEN); > + termios_p->c_cflag &= ~(CSIZE|PARENB); > + termios_p->c_cflag |= CS8; > + > + termios_p->c_cc[VMIN] = 0; > + termios_p->c_cc[VTIME] = 0; > +} > +#endif /* __sun__ */ > > static int domain_create_tty(struct domain *dom) > { > @@ -299,11 +313,14 @@ static int domain_create_tty(struct doma > bool success; > char *data; > unsigned int len; > + struct termios term; > > assert(dom->slave_fd == -1); > assert(dom->master_fd == -1); > > - if (openpty(&dom->master_fd, &dom->slave_fd, NULL, NULL, NULL) < 0) { > + cfmakeraw(&term); > + > + if (openpty(&dom->master_fd, &dom->slave_fd, NULL, &term, NULL) < 0) { > err = errno; > dolog(LOG_ERR, "Failed to create tty for domain-%d (errno = %i, %s)", > dom->domid, err, strerror(err)); > > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxxxxxxxx > http://lists.xensource.com/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |