[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] xenconsoled: Make slave pty raw during initialization.



# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1200491058 0
# Node ID ec3f90599ab1cd7d25088fd5de411c8c4d75755a
# Parent  847bc9b19c48ad0df1eda96266d8a9ed15a0c32d
xenconsoled: Make slave pty raw during initialization.
(This avoids echo).

Signed-off-by: Tristan Gingold <tgingold@xxxxxxx>
---
 tools/console/daemon/io.c |   25 +++++++++++++++++++++----
 1 files changed, 21 insertions(+), 4 deletions(-)

diff -r 847bc9b19c48 -r ec3f90599ab1 tools/console/daemon/io.c
--- a/tools/console/daemon/io.c Wed Jan 16 13:27:59 2008 +0000
+++ b/tools/console/daemon/io.c Wed Jan 16 13:44:18 2008 +0000
@@ -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-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.