qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Anthony Liguori <anthony@codemonkey.ws>
To: Jes.Sorensen@redhat.com
Cc: jan.kiszka@siemens.com, qemu-devel@nongnu.org, peter.maydell@linaro.org
Subject: [Qemu-devel] Re: [PATCH 2/7] Introduce -display argument
Date: Tue, 15 Mar 2011 09:51:43 -0500	[thread overview]
Message-ID: <4D7F7CFF.2010309@codemonkey.ws> (raw)
In-Reply-To: <1300192574-32644-3-git-send-email-Jes.Sorensen@redhat.com>

On 03/15/2011 07:36 AM, Jes.Sorensen@redhat.com wrote:
> From: Jes Sorensen<Jes.Sorensen@redhat.com>
>
> This patch introduces a -display argument which consolidates the
> setting of the display mode. Valid options are:
> sdl/curses/default/serial (serial is equivalent to -nographic)
>
> Signed-off-by: Jes Sorensen<Jes.Sorensen@redhat.com>
> ---
>   qemu-options.hx |   27 +++++++++++++++++++
>   vl.c            |   77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
>   2 files changed, 104 insertions(+), 0 deletions(-)
>
> diff --git a/qemu-options.hx b/qemu-options.hx
> index badb730..f08ffb1 100644
> --- a/qemu-options.hx
> +++ b/qemu-options.hx
> @@ -590,6 +590,33 @@ STEXI
>   @table @option
>   ETEXI
>
> +DEF("display", HAS_ARG, QEMU_OPTION_display,
> +    "-display sdl[,frame=on|off][,alt_grab=on|off][,ctrl_grab=on|off]\n"
> +    "            [,window_close=on|off]|curses|serial\n"
> +    "                select display type\n", QEMU_ARCH_ALL)
> +STEXI
> +@item -display @var{type}
> +@findex -display
> +Select type of display to use. This option is a replacement for the
> +old style -sdl/-curses/... options. Valid values for @var{type} are
> +@table @option
> +@item sdl
> +Pick the SDL display option.
> +@item curses
> +Pick the curses display option. Normally, QEMU uses SDL to display the
> +VGA output.  With this option, QEMU can display the VGA output when in
> +text mode using a curses/ncurses interface.  Nothing is displayed in
> +graphical mode.
> +@item serial
> +Normally, QEMU uses SDL to display the VGA output. With this option,
> +you can totally disable graphical output so that QEMU is a simple
> +command line application. The emulated serial port is redirected on
> +the console. Therefore, you can still use QEMU to debug a Linux kernel
> +with a serial console. This option is equivalent to the old -nographic
> +argument.
> +@end table
> +ETEXI
> +
>   DEF("nographic", 0, QEMU_OPTION_nographic,
>       "-nographic      disable graphical output and redirect serial I/Os to console\n",
>       QEMU_ARCH_ALL)
> diff --git a/vl.c b/vl.c
> index 5e007a7..c88ee58 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -1554,6 +1554,80 @@ static void select_vgahw (const char *p)
>       }
>   }
>
> +static DisplayType select_display(const char *p)
> +{
> +    const char *opts;
> +    DisplayType display = DT_DEFAULT;
> +
> +    if (strstart(p, "sdl",&opts)) {
> +#ifdef CONFIG_SDL
> +        display = DT_SDL;
> +        while (*opts) {
> +            const char *nextopt;
> +
> +            if (strstart(opts, ",frame=",&nextopt)) {
> +                opts = nextopt;
> +                if (strstart(opts, "on",&nextopt)) {
> +                    no_frame = 0;
> +                } else if (strstart(opts, "off",&nextopt)) {
> +                    no_frame = 1;
> +                } else {
> +                    goto invalid_display;
> +                }
> +            } else if (strstart(opts, ",alt_grab=",&nextopt)) {
> +                opts = nextopt;
> +                if (strstart(opts, "on",&nextopt)) {
> +                    alt_grab = 1;
> +                } else if (strstart(opts, "off",&nextopt)) {
> +                    alt_grab = 0;
> +                } else {
> +                    goto invalid_display;
> +                }
> +            } else if (strstart(opts, ",ctrl_grab=",&nextopt)) {
> +                opts = nextopt;
> +                if (strstart(opts, "on",&nextopt)) {
> +                    ctrl_grab = 1;
> +                } else if (strstart(opts, "off",&nextopt)) {
> +                    ctrl_grab = 0;
> +                } else {
> +                    goto invalid_display;
> +                }
> +            } else if (strstart(opts, ",window_close=",&nextopt)) {
> +                opts = nextopt;
> +                if (strstart(opts, "on",&nextopt)) {
> +                    no_quit = 0;
> +                } else if (strstart(opts, "off",&nextopt)) {
> +                    no_quit = 1;
> +                } else {
> +                    goto invalid_display;
> +                }
> +            } else {
> +                goto invalid_display;
> +            }
> +            opts = nextopt;
> +        }

So the natural reaction here is going to be, "just use QemuOpts".  But 
this is harder than it seems.  The problem is that the VNC options 
inverse the meaning of booleans making conversion of VNC to use QemuOpts 
much harder than it would appear.

Doing it this way lets us pass the vnc option string directly to 
vnc_display_open().  I don't like it much, but I don't mind it as an 
interim step.

Regards,

Anthony Liguori

> +#else
> +        fprintf(stderr, "SDL support is disabled\n");
> +        exit(1);
> +#endif
> +    } else if (strstart(p, "curses",&opts)) {
> +#ifdef CONFIG_CURSES
> +        display = DT_CURSES;
> +#else
> +        fprintf(stderr, "Curses support is disabled\n");
> +        exit(1);
> +#endif
> +    } else if (strstart(p, "serial",&opts)) {
> +        display = DT_NOGRAPHIC;
> +    } else {
> +    invalid_display:
> +        fprintf(stderr, "Unknown display type: %s\n", p);
> +        exit(1);
> +    }
> +
> +    return display;
> +}
> +
>   static int balloon_parse(const char *arg)
>   {
>       QemuOpts *opts;
> @@ -2152,6 +2226,9 @@ int main(int argc, char **argv, char **envp)
>                   }
>                   numa_add(optarg);
>                   break;
> +            case QEMU_OPTION_display:
> +                display_type = select_display(optarg);
> +                break;
>               case QEMU_OPTION_nographic:
>                   display_type = DT_NOGRAPHIC;
>                   break;

  parent reply	other threads:[~2011-03-15 14:51 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-15 12:36 [Qemu-devel] [PATCH v2 0/7] Introduce -display and make VNC optional Jes.Sorensen
2011-03-15 12:36 ` [Qemu-devel] [PATCH 1/7] Consolidate DisplaySurface allocation in qemu_alloc_display() Jes.Sorensen
2011-03-15 14:49   ` [Qemu-devel] " Anthony Liguori
2011-03-15 14:53     ` Jes Sorensen
2011-03-15 12:36 ` [Qemu-devel] [PATCH 2/7] Introduce -display argument Jes.Sorensen
2011-03-15 14:07   ` [Qemu-devel] " Peter Maydell
2011-03-15 14:53     ` Anthony Liguori
2011-03-15 14:55       ` Jes Sorensen
2011-03-15 15:14     ` Alexander Graf
2011-03-15 14:51   ` Anthony Liguori [this message]
2011-03-15 14:54     ` Jes Sorensen
2011-03-15 12:36 ` [Qemu-devel] [PATCH 3/7] Introduce -display none Jes.Sorensen
2011-03-15 12:36 ` [Qemu-devel] [PATCH 4/7] Add support for -display vnc Jes.Sorensen
2011-03-15 12:36 ` [Qemu-devel] [PATCH 5/7] error message if user specifies SDL cmd line option when SDL is disabled Jes.Sorensen
2011-03-15 12:36 ` [Qemu-devel] [PATCH 6/7] error message if user specifies curses on cmd line when curses " Jes.Sorensen
2011-03-15 12:36 ` [Qemu-devel] [PATCH 7/7] Make VNC support optional Jes.Sorensen
  -- strict thread matches above, loose matches on Subject: below --
2011-03-16 11:00 [Qemu-devel] [PATCH v4 0/7] Introduce -display and make VNC optional Jes.Sorensen
2011-03-16 11:00 ` [Qemu-devel] [PATCH 2/7] Introduce -display argument Jes.Sorensen
2011-03-16 11:46   ` [Qemu-devel] " Peter Maydell
2011-03-16 12:08     ` Jes Sorensen

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=4D7F7CFF.2010309@codemonkey.ws \
    --to=anthony@codemonkey.ws \
    --cc=Jes.Sorensen@redhat.com \
    --cc=jan.kiszka@siemens.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 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).