[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] fix use of host serial port
From: |
Aurelien Jarno |
Subject: |
Re: [Qemu-devel] [PATCH] fix use of host serial port |
Date: |
Sun, 8 Feb 2009 15:45:33 +0100 |
User-agent: |
Mutt/1.5.18 (2008-05-17) |
On Sat, Feb 07, 2009 at 10:34:55AM -0700, David S. Ahern wrote:
> I need to drive this to ground. Can I get this applied?
>
> Thanks,
> davd
>
>
> The following patch fixes use of a host serial port.
>
> My original post on the problem is:
> http://marc.info/?l=kvm&m=122995568009533&w=2
>
> Michael Tokarev (address@hidden) dug into the where the code was
> failing: http://marc.info/?l=kvm&m=123300124703645&w=2
>
> and further suggested a solution on which this patch is based.
>
> The changed has been acked by Stefano Stabellini.
>
> Signed-off-by: David Ahern <address@hidden>
Thanks, applied.
> Index: trunk/qemu-char.c
> ===================================================================
> --- trunk/qemu-char.c (revision 6545)
> +++ trunk/qemu-char.c (working copy)
> @@ -1047,17 +1047,17 @@
> int *targ = (int *)arg;
> ioctl(s->fd_in, TIOCMGET, &sarg);
> *targ = 0;
> - if (sarg | TIOCM_CTS)
> + if (sarg & TIOCM_CTS)
> *targ |= CHR_TIOCM_CTS;
> - if (sarg | TIOCM_CAR)
> + if (sarg & TIOCM_CAR)
> *targ |= CHR_TIOCM_CAR;
> - if (sarg | TIOCM_DSR)
> + if (sarg & TIOCM_DSR)
> *targ |= CHR_TIOCM_DSR;
> - if (sarg | TIOCM_RI)
> + if (sarg & TIOCM_RI)
> *targ |= CHR_TIOCM_RI;
> - if (sarg | TIOCM_DTR)
> + if (sarg & TIOCM_DTR)
> *targ |= CHR_TIOCM_DTR;
> - if (sarg | TIOCM_RTS)
> + if (sarg & TIOCM_RTS)
> *targ |= CHR_TIOCM_RTS;
> }
> break;
> @@ -1065,9 +1065,20 @@
> {
> int sarg = *(int *)arg;
> int targ = 0;
> - if (sarg | CHR_TIOCM_DTR)
> + ioctl(s->fd_in, TIOCMGET, &targ);
> + targ &= ~(CHR_TIOCM_CTS | CHR_TIOCM_CAR | CHR_TIOCM_DSR
> + | CHR_TIOCM_RI | CHR_TIOCM_DTR | CHR_TIOCM_RTS);
> + if (sarg & CHR_TIOCM_CTS)
> + targ |= TIOCM_CTS;
> + if (sarg & CHR_TIOCM_CAR)
> + targ |= TIOCM_CAR;
> + if (sarg & CHR_TIOCM_DSR)
> + targ |= TIOCM_DSR;
> + if (sarg & CHR_TIOCM_RI)
> + targ |= TIOCM_RI;
> + if (sarg & CHR_TIOCM_DTR)
> targ |= TIOCM_DTR;
> - if (sarg | CHR_TIOCM_RTS)
> + if (sarg & CHR_TIOCM_RTS)
> targ |= TIOCM_RTS;
> ioctl(s->fd_in, TIOCMSET, &targ);
> }
>
>
>
>
--
Aurelien Jarno GPG: 1024D/F1BCDB73
address@hidden http://www.aurel32.net