All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gal Hammer <ghammer@redhat.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
	QEMU Developers <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [PATCH] char: disable stdio echo on resume from suspend.
Date: Tue, 06 Jan 2015 16:30:55 +0200	[thread overview]
Message-ID: <54ABF19F.7090207@redhat.com> (raw)
In-Reply-To: <CAFEAcA8nz8hDViLDwiGxpnQfhcede89qqXTP_jgiHdUmvYFoyQ@mail.gmail.com>

On 06/01/2015 15:49, Peter Maydell wrote:
> On 5 January 2015 at 09:21, Gal Hammer <ghammer@redhat.com> wrote:
>> The monitor's auto-completion feature stopped working when stdio is used
>> as an input and qemu was resumed after it was suspended (using ctrl-z).
>>
>> Signed-off-by: Gal Hammer <ghammer@redhat.com>
>> ---
>>   qemu-char.c | 11 +++++++++++
>>   1 file changed, 11 insertions(+)
>>
>> diff --git a/qemu-char.c b/qemu-char.c
>> index ef84b53..786df33 100644
>> --- a/qemu-char.c
>> +++ b/qemu-char.c
>> @@ -1113,12 +1113,22 @@ static int old_fd0_flags;
>>   static bool stdio_in_use;
>>   static bool stdio_allow_signal;
>>
>> +static void qemu_chr_set_echo_stdio(CharDriverState *chr, bool echo);
>> +
>>   static void term_exit(void)
>>   {
>>       tcsetattr (0, TCSANOW, &oldtty);
>>       fcntl(0, F_SETFL, old_fd0_flags);
>>   }
>>
>> +static void term_stdio_handler(int sig)
>> +{
>> +    if (sig == SIGCONT) {
>
> ...why do we need this check? We don't register the function
> for any other signals...

It's a caution and not a must. It can be removed if you think it is 
redundant.

>
>> +        /* echo should be off after resume from suspend. */
>> +        qemu_chr_set_echo_stdio(NULL, false);
>
> Should echo really be always off, even if the thing using the
> char device had set it to on?

That's what the function qemu_chr_open_stdio() do, always set the stdio 
char device echo to off. I didn't change the current behavior I just 
restore it.

As I understood from my tests, the auto-complete feature doesn't work if 
the echo is enabled because pressing the tab key prints a tab char.

>> +    }
>> +}
>> +
>>   static void qemu_chr_set_echo_stdio(CharDriverState *chr, bool echo)
>>   {
>>       struct termios tty;
>> @@ -1165,6 +1175,7 @@ static CharDriverState *qemu_chr_open_stdio(ChardevStdio *opts)
>>       tcgetattr(0, &oldtty);
>>       qemu_set_nonblock(0);
>>       atexit(term_exit);
>> +    signal(SIGCONT, term_stdio_handler);
>
> This should probably be using sigaction() which is what we use
> elsewhere for signal handler registration.

signal() is used in the code. Although I can switch to sigaction() and 
earn few more LOC ;-).

>
> -- PMM
>

     Gal.

  reply	other threads:[~2015-01-06 14:30 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-05  9:21 [Qemu-devel] [PATCH] char: disable stdio echo on resume from suspend Gal Hammer
2015-01-06 13:33 ` Marcel Apfelbaum
2015-01-06 13:49 ` Peter Maydell
2015-01-06 14:30   ` Gal Hammer [this message]
2015-01-06 14:36     ` Peter Maydell
2015-01-06 18:45       ` Gal Hammer

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=54ABF19F.7090207@redhat.com \
    --to=ghammer@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.