qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v2] stop using stdio for monitor/serial/etc with


From: Michael Tokarev
Subject: Re: [Qemu-devel] [PATCH v2] stop using stdio for monitor/serial/etc with -daemonize
Date: Sat, 27 Oct 2012 17:11:41 +0400
User-agent: Mozilla/5.0 (X11; Linux i686 on x86_64; rv:10.0.9) Gecko/20121015 Icedove/10.0.9

On 27.10.2012 16:55, Michael Tokarev wrote:
> On 27.10.2012 16:48, Blue Swirl wrote:
> []
>>> I'd rather have -nographic work with -daemonize, since the
>>> alternative - shown in the patch comment - is rather long and
>>> it is easy to forget to "nullify" some option, while -nographic
>>> can do that easy and it is convinient, but if people dislikes
>>> such natural and easy-for-the-user solutions, I wont insist.
>>
>> Instead of checking just for -nographic or -curses, can we forbid use
>> of any stdio chardev?
> 
> I think that'll be quite a bit more difficult.  Sure, say,
> 
>   -serial stdio -daemonize
> 
> now has the same problem as original
> 
>   -nographic -daemonize.
> 
> It is just now after you mentioned it I realized this omission.
> And it is exactly the same thing actually - we initialize
> stdio for the serial port, in both cases, and it switches
> the tty to raw mode.
> 
> So this patch is insufficient indeed, we still have the
> same issue, and once -nographic -daemonize is disallowed,
> we've much better chances to hit this issue using -serial.
> Oh well.
> 
> Hmm.  Maybe init stdio chardev for something "else" in case
> of -nographic?

This, together with my previous patch, appears to work fine:

--- a/qemu-char.c
+++ b/qemu-char.c
@@ -772,6 +772,10 @@ static CharDriverState *qemu_chr_open_stdio(QemuOpts *opts)
     if (stdio_nb_clients >= STDIO_MAX_CLIENTS) {
         return NULL;
     }
+    if (is_daemonized()) {
+        error_report("cannot use stdio with -daemonize");
+        return NULL;
+    }
     if (stdio_nb_clients == 0) {
         old_fd0_flags = fcntl(0, F_GETFL);
         tcgetattr (0, &oldtty);

(there's no need to add this to windows version, since
we don't daemonize on windows).

Thanks,

/mjt




reply via email to

[Prev in Thread] Current Thread [Next in Thread]