Add 'debug-threads' suboption to --name

Add flag storage to qemu-thread-* to store the namethreads flag

Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
This commit is contained in:
Dr. David Alan Gilbert 2014-01-30 10:20:31 +00:00 committed by Michael S. Tsirkin
parent 5d12f961c6
commit 8f480de0c9
5 changed files with 30 additions and 2 deletions

View File

@ -59,5 +59,6 @@ void *qemu_thread_join(QemuThread *thread);
void qemu_thread_get_self(QemuThread *thread); void qemu_thread_get_self(QemuThread *thread);
bool qemu_thread_is_self(QemuThread *thread); bool qemu_thread_is_self(QemuThread *thread);
void qemu_thread_exit(void *retval); void qemu_thread_exit(void *retval);
void qemu_thread_naming(bool enable);
#endif #endif

View File

@ -328,9 +328,11 @@ possible drivers and properties, use @code{-device help} and
ETEXI ETEXI
DEF("name", HAS_ARG, QEMU_OPTION_name, 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" " 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) QEMU_ARCH_ALL)
STEXI STEXI
@item -name @var{name} @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. This name will be displayed in the SDL window caption.
The @var{name} will also be used for the VNC server. The @var{name} will also be used for the VNC server.
Also optionally set the top visible process name in Linux. Also optionally set the top visible process name in Linux.
Naming of individual threads can also be enabled on Linux to aid debugging.
ETEXI ETEXI
DEF("uuid", HAS_ARG, QEMU_OPTION_uuid, DEF("uuid", HAS_ARG, QEMU_OPTION_uuid,

View File

@ -27,6 +27,13 @@
#include "qemu/thread.h" #include "qemu/thread.h"
#include "qemu/atomic.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) static void error_exit(int err, const char *msg)
{ {
fprintf(stderr, "qemu: %s: %s\n", msg, strerror(err)); fprintf(stderr, "qemu: %s: %s\n", msg, strerror(err));

View File

@ -16,6 +16,14 @@
#include <assert.h> #include <assert.h>
#include <limits.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) static void error_exit(int err, const char *msg)
{ {
char *pstr; char *pstr;

9
vl.c
View File

@ -495,6 +495,12 @@ static QemuOptsList qemu_name_opts = {
.name = "process", .name = "process",
.type = QEMU_OPT_STRING, .type = QEMU_OPT_STRING,
.help = "Sets the name of the QEMU process, as shown in top etc", .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"
"NOTE: The thread names are for debugging and not a\n"
"stable API.",
}, },
{ /* End of list */ } { /* End of list */ }
}, },
@ -954,6 +960,9 @@ static void parse_name(QemuOpts *opts)
{ {
const char *proc_name; const char *proc_name;
if (qemu_opt_get(opts, "debug-threads")) {
qemu_thread_naming(qemu_opt_get_bool(opts, "debug-threads", false));
}
qemu_name = qemu_opt_get(opts, "guest"); qemu_name = qemu_opt_get(opts, "guest");
proc_name = qemu_opt_get(opts, "process"); proc_name = qemu_opt_get(opts, "process");