qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Laszlo Ersek <lersek@redhat.com>
To: "Dr. David Alan Gilbert (git)" <dgilbert@redhat.com>
Cc: pbonzini@redhat.com, qemu-devel@nongnu.org, mst@redhat.com
Subject: Re: [Qemu-devel] [PATCH v2 2/3] Add 'debug-threads' suboption to --name
Date: Sun, 09 Feb 2014 10:08:50 +0100	[thread overview]
Message-ID: <52F745A2.5020101@redhat.com> (raw)
In-Reply-To: <1391077232-14649-3-git-send-email-dgilbert@redhat.com>

a few irrelevant comments below:

On 01/30/14 11:20, Dr. David Alan Gilbert (git) wrote:
> From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
> 
> Add flag storage to qemu-thread-* to store the namethreads flag
> 
> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
> ---
>  include/qemu/thread.h    | 1 +
>  qemu-options.hx          | 7 +++++--
>  util/qemu-thread-posix.c | 7 +++++++
>  util/qemu-thread-win32.c | 8 ++++++++
>  vl.c                     | 9 +++++++++
>  5 files changed, 30 insertions(+), 2 deletions(-)
> 
> diff --git a/include/qemu/thread.h b/include/qemu/thread.h
> index 3e32c65..bf1e110 100644
> --- a/include/qemu/thread.h
> +++ b/include/qemu/thread.h
> @@ -59,5 +59,6 @@ void *qemu_thread_join(QemuThread *thread);
>  void qemu_thread_get_self(QemuThread *thread);
>  bool qemu_thread_is_self(QemuThread *thread);
>  void qemu_thread_exit(void *retval);
> +void qemu_thread_naming(bool enable);
>  
>  #endif
> diff --git a/qemu-options.hx b/qemu-options.hx
> index 56e5fdf..068da2d 100644
> --- a/qemu-options.hx
> +++ b/qemu-options.hx
> @@ -328,9 +328,11 @@ possible drivers and properties, use @code{-device help} and
>  ETEXI
>  
>  DEF("name", HAS_ARG, QEMU_OPTION_name,
> -    "-name string1[,process=string2]\n"
> +    "-name string1[,process=string2][,debug-threads=on|off]\n"
>      "                set the name of the guest\n"
> -    "                string1 sets the window title and string2 the process name (on Linux)\n",
> +    "                string1 sets the window title and string2 the process name (on Linux)\n"
> +    "                When debug-threads is enabled, individual threads are given a separate name (on Linux)\n"
> +    "                NOTE: The thread names are for debugging and not a stable API.\n",
>      QEMU_ARCH_ALL)
>  STEXI
>  @item -name @var{name}
> @@ -339,6 +341,7 @@ Sets the @var{name} of the guest.
>  This name will be displayed in the SDL window caption.
>  The @var{name} will also be used for the VNC server.
>  Also optionally set the top visible process name in Linux.
> +Naming of individual threads can also be enabled on Linux to aid debugging.
>  ETEXI
>  
>  DEF("uuid", HAS_ARG, QEMU_OPTION_uuid,
> diff --git a/util/qemu-thread-posix.c b/util/qemu-thread-posix.c
> index 37dd298..0fa6c81 100644
> --- a/util/qemu-thread-posix.c
> +++ b/util/qemu-thread-posix.c
> @@ -27,6 +27,13 @@
>  #include "qemu/thread.h"
>  #include "qemu/atomic.h"
>  
> +static bool name_threads;
> +
> +void qemu_thread_naming(bool enable)
> +{
> +    name_threads = enable;
> +}
> +
>  static void error_exit(int err, const char *msg)
>  {
>      fprintf(stderr, "qemu: %s: %s\n", msg, strerror(err));
> diff --git a/util/qemu-thread-win32.c b/util/qemu-thread-win32.c
> index 27a5217..e42cb77 100644
> --- a/util/qemu-thread-win32.c
> +++ b/util/qemu-thread-win32.c
> @@ -16,6 +16,14 @@
>  #include <assert.h>
>  #include <limits.h>
>  
> +static bool name_threads;
> +
> +void qemu_thread_naming(bool enable)
> +{
> +    /* But note we don't actually name them on Windows yet */
> +    name_threads = enable;
> +}
> +
>  static void error_exit(int err, const char *msg)
>  {
>      char *pstr;
> diff --git a/vl.c b/vl.c
> index 5f993e4..77d6d9e 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -547,6 +547,12 @@ static QemuOptsList qemu_name_opts = {
>              .name = "process",
>              .type = QEMU_OPT_STRING,
>              .help = "Sets the name of the QEMU process, as shown in top etc",
> +        }, {
> +            .name = "debug-threads",
> +            .type = QEMU_OPT_BOOL,
> +            .help = "When enabled, name the individual threads; defaults off.\n"

(1) same question about newlines applies

(2) the default setting is usually advertised in qemu-options.hx, not here

(3) the meaning of "default" is relative to the case when the option is
specified and the option argument is not, *not* relative to when the
option is missing. Cf.

(a)  -name debug-threads
(b)  -name debug-threads=on
(c)  [nothing]

The default as explained by the help text (in qemu-options.hx),
independently of option argument type, is usually the difference between
(a) and (b), not (a) and (c), nor between (b) and (c).

Here, due to the way boolean options are parsed in parse_option_bool(),
(a) is identical to (b), so the default is "on". (See -msg timestamp in
qemu-options.hx, it's similar.)

I *think*. But I could never really form a decisive understanding of the
tradition here, so feel free to ignore it.

> +                    "NOTE: The thread names are for debugging and not a\n"
> +                    "stable API.",
>          },
>          { /* End of list */ }
>      },
> @@ -1006,6 +1012,9 @@ static void parse_name(QemuOpts *opts)
>  {
>      const char *proc_name;
>  
> +    if (qemu_opt_get(opts, "debug-threads")) {
> +        qemu_thread_naming(qemu_opt_get_bool(opts, "debug-threads", false));
> +    }

(4) I'm not sure you need the surrounding "if". qemu_opt_get() and
qemu_opt_get_bool() both start with qemu_opt_find().

With the "if", if the option is not passed, then you leave
"name_threads" at its default value (== false).

Without the "if", if the option is not passed, then you overwrite
"name_threads" with the option default (== false). I think the code
would be simpler if you dropped the surrounding "if".

>      qemu_name = qemu_opt_get(opts, "guest");
>  
>      proc_name = qemu_opt_get(opts, "process");
> 

Anyway I shouldn't obsess about this (also because if I do and you
respin, I get to review v3 too :))

Reviewed-by: Laszlo Ersek <lersek@redhat.com>

Thanks
Laszlo

  reply	other threads:[~2014-02-09  9:09 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-30 10:20 [Qemu-devel] [PATCH v2 0/3] Name threads Dr. David Alan Gilbert (git)
2014-01-30 10:20 ` [Qemu-devel] [PATCH v2 1/3] Rework --name to use QemuOpts Dr. David Alan Gilbert (git)
2014-02-09  8:43   ` Laszlo Ersek
2014-02-10 10:03     ` Dr. David Alan Gilbert
2014-02-10 16:12       ` Laszlo Ersek
2014-02-11  9:07         ` Paolo Bonzini
2014-02-11 13:30           ` Eric Blake
2014-01-30 10:20 ` [Qemu-devel] [PATCH v2 2/3] Add 'debug-threads' suboption to --name Dr. David Alan Gilbert (git)
2014-02-09  9:08   ` Laszlo Ersek [this message]
2014-02-10 10:16     ` Dr. David Alan Gilbert
2014-02-10 16:14       ` Laszlo Ersek
2014-01-30 10:20 ` [Qemu-devel] [PATCH v2 3/3] Add a 'name' parameter to qemu_thread_create Dr. David Alan Gilbert (git)
2014-02-09  9:37   ` Laszlo Ersek
2014-02-10  9:49     ` Dr. David Alan Gilbert
2014-01-30 12:59 ` [Qemu-devel] [PATCH v2 0/3] Name threads Eric Blake
2014-01-30 13:03   ` Dr. David Alan Gilbert

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=52F745A2.5020101@redhat.com \
    --to=lersek@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --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).