From: "David S. Ahern" <daahern@cisco.com>
To: Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
Michael Tokarev <mjt@tls.msk.ru>
Cc: Marcelo Tosatti <mtosatti@redhat.com>,
KVM list <kvm@vger.kernel.org>,
Mark Marshall <mark.marshall60@ntlworld.com>,
qemu-devel@nongnu.org
Subject: [Qemu-devel] Re: more about serial ports: do they even work?
Date: Thu, 05 Feb 2009 11:36:03 -0700 [thread overview]
Message-ID: <498B3193.106@cisco.com> (raw)
In-Reply-To: <4989776E.1060504@eu.citrix.com>
Stefano Stabellini wrote:
> Michael Tokarev wrote:
>
>> Other than that, an.. excellent idea, I wanted to propose
>> just that when I first saw all this stuff, but was somewhat
>> afraid. And I *think* there's at least *some* sense. Qemu
>> is a CPU emulator and may work on another arch where those
>> bits are defined differently. Maybe that was the reason for
>> all this converting - to be safe than sorry, so to say. No?
>>
>
> Yes, this is exactly the reason why they were introduced in the first place.
> Let's suppose that the guest defines those constants differently: we
> need to parse them and covert them appropriately to the host format.
> CHR_IOCTL_SERIAL_SET_TIOCM and CHR_TIOCM_DTR correspond to the guest
> version of TIOCMSET and TIOCM_DTR and can be defined differently
> depending on the particular guest arch.
The following works for me. It fixes the existing checks in place for
the GET and replicates that for the SET. The ioctl initialization is
needed in the SET is needed.
Index: trunk/qemu-char.c
===================================================================
--- trunk/qemu-char.c (revision 6519)
+++ trunk/qemu-char.c (working copy)
@@ -1067,17 +1067,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;
@@ -1085,9 +1085,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);
}
david
next prev parent reply other threads:[~2009-02-05 18:36 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <497E1B15.2090908@msgid.tls.msk.ru>
[not found] ` <497E1F7D.90300@msgid.tls.msk.ru>
2009-02-02 21:27 ` [Qemu-devel] Re: more about serial ports: do they even work? David S. Ahern
2009-02-02 21:32 ` Michael Tokarev
2009-02-02 21:36 ` David S. Ahern
2009-02-03 8:13 ` Michael Tokarev
2009-02-03 8:41 ` Mark Marshall
2009-02-04 8:09 ` Marcelo Tosatti
2009-02-04 8:37 ` Michael Tokarev
2009-02-04 8:52 ` Marcelo Tosatti
2009-02-04 8:56 ` Michael Tokarev
2009-02-04 11:09 ` Stefano Stabellini
2009-02-05 18:36 ` David S. Ahern [this message]
2009-02-05 20:50 ` Stefano Stabellini
2009-02-04 11:17 ` Stefano Stabellini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=498B3193.106@cisco.com \
--to=daahern@cisco.com \
--cc=kvm@vger.kernel.org \
--cc=mark.marshall60@ntlworld.com \
--cc=mjt@tls.msk.ru \
--cc=mtosatti@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefano.stabellini@eu.citrix.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).