qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v2 00/11] simplify usage of tracepoints, and connect them to logging
@ 2015-10-26  9:10 Denis V. Lunev
  2015-10-26  9:10 ` [Qemu-devel] [PATCH 01/11] trace: fix documentation Denis V. Lunev
                   ` (10 more replies)
  0 siblings, 11 replies; 27+ messages in thread
From: Denis V. Lunev @ 2015-10-26  9:10 UTC (permalink / raw)
  Cc: peter.maydell, qemu-devel, armbru, stefanha, Denis V. Lunev,
	pbonzini

This series does three things:

1) add a "-trace [enable=]foo" option to enable one or more trace
events, and a "-trace help" option to show the list of tracepoints
(patches 4-5)

2) change the stderr tracing backend so that it prints to the
-D log file, and enable it by default.  "-trace file=..." is
now a synonym of -D if the log backend is enabled (patches 7-8)

3) add a "-d trace:foo" option that is a synonym for "-trace foo";
this makes the new functionality more discoverable to people used
to "-d", makes it available for user-mode emulation (which does
not have -trace), and is somewhat nice if you want to enable both
tracepoints and some other "-d" flag (patch 9).  When globbing
it is also less susceptible to unwanted shell expansion.

For example, you can trace block device I/O and save the result
to a file just by adding "-trace bdrv_aio_*,file=trace.txt", or
correlate it to guest PCs with "-d exec,nochain,trace:bdrv_aio_*".

Opinions?  I would like to have this in 2.5 if there is agreement.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Denis V. Lunev <den@openvz.org>

Changes from v1:
- small cleanup to vl.c is added as patch (4)
- compilation is fixed in patch (2)
- moved qemu-log.c to util/log.c to fix linking of qemu-io/qemu-nbd

Denis V. Lunev (2):
  trace: no need to call trace_backend_init in different branches now
  log: move qemu-log.c into util/ directory

Paolo Bonzini (9):
  trace: fix documentation
  trace: split trace_init_events out of trace_init_backends
  trace: split trace_init_file out of trace_init_backends
  trace: add "-trace enable=..."
  trace: add "-trace help"
  log: do not unnecessarily include qom/cpu.h
  trace: convert stderr backend to log
  trace: switch default backend to "log"
  log: add "-d trace:PATTERN"

 Makefile.objs                                   |  1 -
 bsd-user/main.c                                 |  1 +
 configure                                       |  6 +-
 cpu-exec.c                                      |  1 +
 exec.c                                          |  1 +
 hw/acpi/cpu_hotplug.c                           |  1 +
 hw/timer/a9gtimer.c                             |  1 +
 include/exec/log.h                              | 60 ++++++++++++++++
 include/qemu/log.h                              | 60 +---------------
 linux-user/main.c                               |  1 +
 qemu-io.c                                       |  2 +-
 qemu-options.hx                                 | 22 ++++--
 qom/cpu.c                                       |  1 +
 scripts/tracetool/backend/{stderr.py => log.py} |  9 +--
 target-alpha/translate.c                        |  1 +
 target-arm/translate.c                          |  1 +
 target-cris/translate.c                         |  1 +
 target-i386/seg_helper.c                        |  1 +
 target-i386/smm_helper.c                        |  1 +
 target-i386/translate.c                         |  1 +
 target-lm32/helper.c                            |  1 +
 target-lm32/translate.c                         |  1 +
 target-m68k/translate.c                         |  1 +
 target-microblaze/helper.c                      |  1 +
 target-microblaze/translate.c                   |  1 +
 target-mips/helper.c                            |  1 +
 target-mips/translate.c                         |  1 +
 target-moxie/translate.c                        |  1 +
 target-openrisc/translate.c                     |  1 +
 target-ppc/mmu-hash32.c                         |  1 +
 target-ppc/mmu-hash64.c                         |  1 +
 target-ppc/mmu_helper.c                         |  1 +
 target-ppc/translate.c                          |  1 +
 target-s390x/translate.c                        |  1 +
 target-sh4/helper.c                             |  1 +
 target-sh4/translate.c                          |  1 +
 target-sparc/int32_helper.c                     |  1 +
 target-sparc/int64_helper.c                     |  1 +
 target-sparc/translate.c                        |  1 +
 target-tilegx/translate.c                       |  1 +
 target-tricore/translate.c                      |  1 +
 target-unicore32/translate.c                    |  1 +
 target-xtensa/translate.c                       |  1 +
 tcg/tcg.c                                       |  1 +
 trace/control.c                                 | 95 ++++++++++++++++++-------
 trace/control.h                                 | 42 ++++++++++-
 trace/simple.c                                  |  6 +-
 trace/simple.h                                  |  4 +-
 translate-all.c                                 |  1 +
 util/Makefile.objs                              |  1 +
 qemu-log.c => util/log.c                        | 19 ++++-
 vl.c                                            | 38 +++++-----
 52 files changed, 274 insertions(+), 129 deletions(-)
 create mode 100644 include/exec/log.h
 rename scripts/tracetool/backend/{stderr.py => log.py} (78%)
 rename qemu-log.c => util/log.c (90%)

-- 
2.1.4

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [Qemu-devel] [PATCH 01/11] trace: fix documentation
  2015-10-26  9:10 [Qemu-devel] [PATCH v2 00/11] simplify usage of tracepoints, and connect them to logging Denis V. Lunev
@ 2015-10-26  9:10 ` Denis V. Lunev
  2015-10-26 20:05   ` Christian Borntraeger
  2015-10-26  9:10 ` [Qemu-devel] [PATCH 02/11] trace: split trace_init_events out of trace_init_backends Denis V. Lunev
                   ` (9 subsequent siblings)
  10 siblings, 1 reply; 27+ messages in thread
From: Denis V. Lunev @ 2015-10-26  9:10 UTC (permalink / raw)
  Cc: peter.maydell, qemu-devel, armbru, stefanha, Denis V. Lunev,
	pbonzini

From: Paolo Bonzini <pbonzini@redhat.com>

Mention the ftrace backend too.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Denis V. Lunev <den@openvz.org>
Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
---
 qemu-options.hx | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/qemu-options.hx b/qemu-options.hx
index edee5f4..71296da 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -3484,13 +3484,13 @@ Specify tracing options.
 @table @option
 @item events=@var{file}
 Immediately enable events listed in @var{file}.
-The file must contain one event name (as listed in the @var{trace-events} file)
-per line.
-This option is only available if QEMU has been compiled with
-either @var{simple} or @var{stderr} tracing backend.
+The file must contain one event name (as listed in the @file{trace-events} file)
+per line; globbing patterns are accepted too.  This option is only
+available if QEMU has been compiled with the @var{simple}, @var{stderr} or
+@var{ftrace} tracing backend.
+
 @item file=@var{file}
 Log output traces to @var{file}.
-
 This option is only available if QEMU has been compiled with
 the @var{simple} tracing backend.
 @end table
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [Qemu-devel] [PATCH 02/11] trace: split trace_init_events out of trace_init_backends
  2015-10-26  9:10 [Qemu-devel] [PATCH v2 00/11] simplify usage of tracepoints, and connect them to logging Denis V. Lunev
  2015-10-26  9:10 ` [Qemu-devel] [PATCH 01/11] trace: fix documentation Denis V. Lunev
@ 2015-10-26  9:10 ` Denis V. Lunev
  2015-10-26  9:10 ` [Qemu-devel] [PATCH 03/11] trace: split trace_init_file " Denis V. Lunev
                   ` (8 subsequent siblings)
  10 siblings, 0 replies; 27+ messages in thread
From: Denis V. Lunev @ 2015-10-26  9:10 UTC (permalink / raw)
  Cc: peter.maydell, qemu-devel, armbru, stefanha, Denis V. Lunev,
	pbonzini

From: Paolo Bonzini <pbonzini@redhat.com>

This is cleaner and has two advantages.  First, it improves error
reporting with -daemonize.  Second, multiple "-trace events" options
now cumulate.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Denis V. Lunev <den@openvz.org>
Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
---
 trace/control.c |  5 ++---
 trace/control.h | 15 ++++++++++++---
 vl.c            |  8 ++++----
 3 files changed, 18 insertions(+), 10 deletions(-)

diff --git a/trace/control.c b/trace/control.c
index 995beb3..ee5fbca 100644
--- a/trace/control.c
+++ b/trace/control.c
@@ -85,7 +85,7 @@ TraceEvent *trace_event_pattern(const char *pat, TraceEvent *ev)
     return NULL;
 }
 
-static void trace_init_events(const char *fname)
+void trace_init_events(const char *fname)
 {
     Location loc;
     FILE *fp;
@@ -142,7 +142,7 @@ static void trace_init_events(const char *fname)
     loc_pop(&loc);
 }
 
-bool trace_init_backends(const char *events, const char *file)
+bool trace_init_backends(const char *file)
 {
 #ifdef CONFIG_TRACE_SIMPLE
     if (!st_init(file)) {
@@ -164,6 +164,5 @@ bool trace_init_backends(const char *events, const char *file)
     }
 #endif
 
-    trace_init_events(events);
     return true;
 }
diff --git a/trace/control.h b/trace/control.h
index da9bb6b..bfbe560 100644
--- a/trace/control.h
+++ b/trace/control.h
@@ -150,8 +150,6 @@ static void trace_event_set_state_dynamic(TraceEvent *ev, bool state);
 
 /**
  * trace_init_backends:
- * @events: Name of file with events to be enabled at startup; may be NULL.
- *          Corresponds to commandline option "-trace events=...".
  * @file:   Name of trace output file; may be NULL.
  *          Corresponds to commandline option "-trace file=...".
  *
@@ -159,7 +157,18 @@ static void trace_event_set_state_dynamic(TraceEvent *ev, bool state);
  *
  * Returns: Whether the backends could be successfully initialized.
  */
-bool trace_init_backends(const char *events, const char *file);
+bool trace_init_backends(const char *file);
+
+/**
+ * trace_init_events:
+ * @events: Name of file with events to be enabled at startup; may be NULL.
+ *          Corresponds to commandline option "-trace events=...".
+ *
+ * Read the list of enabled tracing events.
+ *
+ * Returns: Whether the backends could be successfully initialized.
+ */
+void trace_init_events(const char *file);
 
 
 #include "trace/control-internal.h"
diff --git a/vl.c b/vl.c
index dffaf09..ba29fef 100644
--- a/vl.c
+++ b/vl.c
@@ -2956,7 +2956,6 @@ int main(int argc, char **argv, char **envp)
     bool userconfig = true;
     const char *log_mask = NULL;
     const char *log_file = NULL;
-    const char *trace_events = NULL;
     const char *trace_file = NULL;
     ram_addr_t maxram_size;
     uint64_t ram_slots = 0;
@@ -3881,8 +3880,9 @@ int main(int argc, char **argv, char **envp)
                 if (!opts) {
                     exit(1);
                 }
-                trace_events = qemu_opt_get(opts, "events");
+                trace_init_events(qemu_opt_get(opts, "events"));
                 trace_file = qemu_opt_get(opts, "file");
+                qemu_opts_del(opts);
                 break;
             }
             case QEMU_OPTION_readconfig:
@@ -4079,7 +4079,7 @@ int main(int argc, char **argv, char **envp)
     }
 
     if (!is_daemonized()) {
-        if (!trace_init_backends(trace_events, trace_file)) {
+        if (!trace_init_backends(trace_file)) {
             exit(1);
         }
     }
@@ -4631,7 +4631,7 @@ int main(int argc, char **argv, char **envp)
     os_setup_post();
 
     if (is_daemonized()) {
-        if (!trace_init_backends(trace_events, trace_file)) {
+        if (!trace_init_backends(trace_file)) {
             exit(1);
         }
     }
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [Qemu-devel] [PATCH 03/11] trace: split trace_init_file out of trace_init_backends
  2015-10-26  9:10 [Qemu-devel] [PATCH v2 00/11] simplify usage of tracepoints, and connect them to logging Denis V. Lunev
  2015-10-26  9:10 ` [Qemu-devel] [PATCH 01/11] trace: fix documentation Denis V. Lunev
  2015-10-26  9:10 ` [Qemu-devel] [PATCH 02/11] trace: split trace_init_events out of trace_init_backends Denis V. Lunev
@ 2015-10-26  9:10 ` Denis V. Lunev
  2015-10-29 17:23   ` Stefan Hajnoczi
  2015-10-26  9:10 ` [Qemu-devel] [PATCH 04/11] trace: no need to call trace_backend_init in different branches now Denis V. Lunev
                   ` (7 subsequent siblings)
  10 siblings, 1 reply; 27+ messages in thread
From: Denis V. Lunev @ 2015-10-26  9:10 UTC (permalink / raw)
  Cc: peter.maydell, qemu-devel, armbru, stefanha, Denis V. Lunev,
	pbonzini

From: Paolo Bonzini <pbonzini@redhat.com>

This is cleaner, and improves error reporting with -daemonize.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Denis V. Lunev <den@openvz.org>
Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
---
 qemu-io.c       |  2 +-
 trace/control.c | 17 ++++++++++++-----
 trace/control.h | 13 ++++++++++++-
 trace/simple.c  |  6 ++----
 trace/simple.h  |  4 ++--
 vl.c            | 13 +++++++++----
 6 files changed, 38 insertions(+), 17 deletions(-)

diff --git a/qemu-io.c b/qemu-io.c
index 269f17c..fbddf82 100644
--- a/qemu-io.c
+++ b/qemu-io.c
@@ -440,7 +440,7 @@ int main(int argc, char **argv)
             }
             break;
         case 'T':
-            if (!trace_init_backends(optarg, NULL)) {
+            if (!trace_init_backends()) {
                 exit(1); /* error message will have been printed */
             }
             break;
diff --git a/trace/control.c b/trace/control.c
index ee5fbca..3e33d03 100644
--- a/trace/control.c
+++ b/trace/control.c
@@ -142,17 +142,24 @@ void trace_init_events(const char *fname)
     loc_pop(&loc);
 }
 
-bool trace_init_backends(const char *file)
+void trace_init_file(const char *file)
 {
 #ifdef CONFIG_TRACE_SIMPLE
-    if (!st_init(file)) {
-        fprintf(stderr, "failed to initialize simple tracing backend.\n");
-        return false;
-    }
+    st_set_trace_file(file);
 #else
     if (file) {
         fprintf(stderr, "error: -trace file=...: "
                 "option not supported by the selected tracing backends\n");
+        exit(1);
+    }
+#endif
+}
+
+bool trace_init_backends(void)
+{
+#ifdef CONFIG_TRACE_SIMPLE
+    if (!st_init()) {
+        fprintf(stderr, "failed to initialize simple tracing backend.\n");
         return false;
     }
 #endif
diff --git a/trace/control.h b/trace/control.h
index bfbe560..d2506d4 100644
--- a/trace/control.h
+++ b/trace/control.h
@@ -157,7 +157,7 @@ static void trace_event_set_state_dynamic(TraceEvent *ev, bool state);
  *
  * Returns: Whether the backends could be successfully initialized.
  */
-bool trace_init_backends(const char *file);
+bool trace_init_backends(void);
 
 /**
  * trace_init_events:
@@ -170,6 +170,17 @@ bool trace_init_backends(const char *file);
  */
 void trace_init_events(const char *file);
 
+/**
+ * trace_init_file:
+ * @file:   Name of trace output file; may be NULL.
+ *          Corresponds to commandline option "-trace file=...".
+ *
+ * Record the name of the output file for the tracing backend.
+ * Exits if no selected backend does not support specifying the
+ * output file, and a non-NULL file was passed.
+ */
+void trace_init_file(const char *file);
+
 
 #include "trace/control-internal.h"
 
diff --git a/trace/simple.c b/trace/simple.c
index 11ad030..a4bc705 100644
--- a/trace/simple.c
+++ b/trace/simple.c
@@ -322,7 +322,7 @@ void st_set_trace_file_enabled(bool enable)
  * @file        The trace file name or NULL for the default name-<pid> set at
  *              config time
  */
-bool st_set_trace_file(const char *file)
+void st_set_trace_file(const char *file)
 {
     st_set_trace_file_enabled(false);
 
@@ -335,7 +335,6 @@ bool st_set_trace_file(const char *file)
     }
 
     st_set_trace_file_enabled(true);
-    return true;
 }
 
 void st_print_trace_file_status(FILE *stream, int (*stream_printf)(FILE *stream, const char *fmt, ...))
@@ -373,7 +372,7 @@ static GThread *trace_thread_create(GThreadFunc fn)
     return thread;
 }
 
-bool st_init(const char *file)
+bool st_init(void)
 {
     GThread *thread;
 
@@ -386,6 +385,5 @@ bool st_init(const char *file)
     }
 
     atexit(st_flush_trace_buffer);
-    st_set_trace_file(file);
     return true;
 }
diff --git a/trace/simple.h b/trace/simple.h
index 6997996..8d1a32e 100644
--- a/trace/simple.h
+++ b/trace/simple.h
@@ -20,8 +20,8 @@
 
 void st_print_trace_file_status(FILE *stream, fprintf_function stream_printf);
 void st_set_trace_file_enabled(bool enable);
-bool st_set_trace_file(const char *file);
-bool st_init(const char *file);
+void st_set_trace_file(const char *file);
+bool st_init(void);
 void st_flush_trace_buffer(void);
 
 typedef struct {
diff --git a/vl.c b/vl.c
index ba29fef..b1ddd3f 100644
--- a/vl.c
+++ b/vl.c
@@ -2956,7 +2956,7 @@ int main(int argc, char **argv, char **envp)
     bool userconfig = true;
     const char *log_mask = NULL;
     const char *log_file = NULL;
-    const char *trace_file = NULL;
+    char *trace_file = NULL;
     ram_addr_t maxram_size;
     uint64_t ram_slots = 0;
     FILE *vmstate_dump_file = NULL;
@@ -3881,7 +3881,10 @@ int main(int argc, char **argv, char **envp)
                     exit(1);
                 }
                 trace_init_events(qemu_opt_get(opts, "events"));
-                trace_file = qemu_opt_get(opts, "file");
+                if (trace_file) {
+                    g_free(trace_file);
+                }
+                trace_file = g_strdup(qemu_opt_get(opts, "file"));
                 qemu_opts_del(opts);
                 break;
             }
@@ -4062,6 +4065,8 @@ int main(int argc, char **argv, char **envp)
         exit(0);
     }
 
+    trace_init_file(trace_file);
+
     /* Open the logfile at this point and set the log mask if necessary.
      */
     if (log_file) {
@@ -4079,7 +4084,7 @@ int main(int argc, char **argv, char **envp)
     }
 
     if (!is_daemonized()) {
-        if (!trace_init_backends(trace_file)) {
+        if (!trace_init_backends()) {
             exit(1);
         }
     }
@@ -4631,7 +4636,7 @@ int main(int argc, char **argv, char **envp)
     os_setup_post();
 
     if (is_daemonized()) {
-        if (!trace_init_backends(trace_file)) {
+        if (!trace_init_backends()) {
             exit(1);
         }
     }
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [Qemu-devel] [PATCH 04/11] trace: no need to call trace_backend_init in different branches now
  2015-10-26  9:10 [Qemu-devel] [PATCH v2 00/11] simplify usage of tracepoints, and connect them to logging Denis V. Lunev
                   ` (2 preceding siblings ...)
  2015-10-26  9:10 ` [Qemu-devel] [PATCH 03/11] trace: split trace_init_file " Denis V. Lunev
@ 2015-10-26  9:10 ` Denis V. Lunev
  2015-10-26 17:18   ` Paolo Bonzini
  2015-10-26  9:10 ` [Qemu-devel] [PATCH 05/11] trace: add "-trace enable=..." Denis V. Lunev
                   ` (6 subsequent siblings)
  10 siblings, 1 reply; 27+ messages in thread
From: Denis V. Lunev @ 2015-10-26  9:10 UTC (permalink / raw)
  Cc: peter.maydell, qemu-devel, armbru, stefanha, Denis V. Lunev,
	pbonzini

original idea to split calling locations was to trace tracing thread
in the final child process according to

    commit 8a745f2a9296ad2cf6bda33534ed298f2625a4ad
    Author: Michael Mueller
    Date:   Mon Sep 23 16:36:54 2013 +0200

os_daemonize is now on top of both locations. Drop unneeded ifs.

Signed-off-by: Denis V. Lunev <den@openvz.org>
---
 vl.c | 12 ++----------
 1 file changed, 2 insertions(+), 10 deletions(-)

diff --git a/vl.c b/vl.c
index b1ddd3f..7ce9d70 100644
--- a/vl.c
+++ b/vl.c
@@ -4083,10 +4083,8 @@ int main(int argc, char **argv, char **envp)
         qemu_set_log(mask);
     }
 
-    if (!is_daemonized()) {
-        if (!trace_init_backends()) {
-            exit(1);
-        }
+    if (!trace_init_backends()) {
+        exit(1);
     }
 
     /* If no data_dir is specified then try to find it relative to the
@@ -4635,12 +4633,6 @@ int main(int argc, char **argv, char **envp)
 
     os_setup_post();
 
-    if (is_daemonized()) {
-        if (!trace_init_backends()) {
-            exit(1);
-        }
-    }
-
     main_loop();
     bdrv_close_all();
     pause_all_vcpus();
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [Qemu-devel] [PATCH 05/11] trace: add "-trace enable=..."
  2015-10-26  9:10 [Qemu-devel] [PATCH v2 00/11] simplify usage of tracepoints, and connect them to logging Denis V. Lunev
                   ` (3 preceding siblings ...)
  2015-10-26  9:10 ` [Qemu-devel] [PATCH 04/11] trace: no need to call trace_backend_init in different branches now Denis V. Lunev
@ 2015-10-26  9:10 ` Denis V. Lunev
  2015-10-26  9:10 ` [Qemu-devel] [PATCH 06/11] trace: add "-trace help" Denis V. Lunev
                   ` (5 subsequent siblings)
  10 siblings, 0 replies; 27+ messages in thread
From: Denis V. Lunev @ 2015-10-26  9:10 UTC (permalink / raw)
  Cc: peter.maydell, qemu-devel, armbru, stefanha, Denis V. Lunev,
	pbonzini

From: Paolo Bonzini <pbonzini@redhat.com>

Allow enabling events without going through a file, for example:

   qemu-system-x86_64 -trace bdrv_aio_writev -trace bdrv_aio_readv

or with globbing too:

   qemu-system-x86_64 -trace 'bdrv_aio_*'

if an appropriate backend is enabled (simple, stderr, ftrace).

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Denis V. Lunev <den@openvz.org>
Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
---
 qemu-options.hx | 10 +++++++++-
 trace/control.c | 48 +++++++++++++++++++++++++++---------------------
 trace/control.h |  9 +++++++++
 vl.c            | 11 +++++++++--
 4 files changed, 54 insertions(+), 24 deletions(-)

diff --git a/qemu-options.hx b/qemu-options.hx
index 71296da..6613911 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -3470,7 +3470,7 @@ config files on @var{sysconfdir}, but won't make it skip the QEMU-provided confi
 files from @var{datadir}.
 ETEXI
 DEF("trace", HAS_ARG, QEMU_OPTION_trace,
-    "-trace [events=<file>][,file=<file>]\n"
+    "-trace [[enable=]<pattern>][,events=<file>][,file=<file>]\n"
     "                specify tracing options\n",
     QEMU_ARCH_ALL)
 STEXI
@@ -3482,6 +3482,14 @@ HXCOMM HX does not support conditional compilation of text.
 Specify tracing options.
 
 @table @option
+@item [enable=]@var{pattern}
+Immediately enable events matching @var{pattern}.
+The file must contain one event name (as listed in the @file{trace-events} file)
+per line; globbing patterns are accepted too.  This option is only
+available if QEMU has been compiled with the @var{simple}, @var{stderr}
+or @var{ftrace} tracing backend.  To specify multiple events or patterns,
+specify the @option{-trace} option multiple times.
+
 @item events=@var{file}
 Immediately enable events listed in @var{file}.
 The file must contain one event name (as listed in the @file{trace-events} file)
diff --git a/trace/control.c b/trace/control.c
index 3e33d03..715b5b7 100644
--- a/trace/control.c
+++ b/trace/control.c
@@ -85,6 +85,32 @@ TraceEvent *trace_event_pattern(const char *pat, TraceEvent *ev)
     return NULL;
 }
 
+void trace_enable_events(const char *line_buf)
+{
+    const bool enable = ('-' != line_buf[0]);
+    const char *line_ptr = enable ? line_buf : line_buf + 1;
+
+    if (trace_event_is_pattern(line_ptr)) {
+        TraceEvent *ev = NULL;
+        while ((ev = trace_event_pattern(line_ptr, ev)) != NULL) {
+            if (trace_event_get_state_static(ev)) {
+                trace_event_set_state_dynamic(ev, enable);
+            }
+        }
+    } else {
+        TraceEvent *ev = trace_event_name(line_ptr);
+        if (ev == NULL) {
+            error_report("WARNING: trace event '%s' does not exist",
+                         line_ptr);
+        } else if (!trace_event_get_state_static(ev)) {
+            error_report("WARNING: trace event '%s' is not traceable",
+                         line_ptr);
+        } else {
+            trace_event_set_state_dynamic(ev, enable);
+        }
+    }
+}
+
 void trace_init_events(const char *fname)
 {
     Location loc;
@@ -111,27 +137,7 @@ void trace_init_events(const char *fname)
             if ('#' == line_buf[0]) { /* skip commented lines */
                 continue;
             }
-            const bool enable = ('-' != line_buf[0]);
-            char *line_ptr = enable ? line_buf : line_buf + 1;
-            if (trace_event_is_pattern(line_ptr)) {
-                TraceEvent *ev = NULL;
-                while ((ev = trace_event_pattern(line_ptr, ev)) != NULL) {
-                    if (trace_event_get_state_static(ev)) {
-                        trace_event_set_state_dynamic(ev, enable);
-                    }
-                }
-            } else {
-                TraceEvent *ev = trace_event_name(line_ptr);
-                if (ev == NULL) {
-                    error_report("WARNING: trace event '%s' does not exist",
-                                 line_ptr);
-                } else if (!trace_event_get_state_static(ev)) {
-                    error_report("WARNING: trace event '%s' is not traceable",
-                                 line_ptr);
-                } else {
-                    trace_event_set_state_dynamic(ev, enable);
-                }
-            }
+            trace_enable_events(line_buf);
         }
     }
     if (fclose(fp) != 0) {
diff --git a/trace/control.h b/trace/control.h
index d2506d4..32a66ce 100644
--- a/trace/control.h
+++ b/trace/control.h
@@ -181,6 +181,15 @@ void trace_init_events(const char *file);
  */
 void trace_init_file(const char *file);
 
+/**
+ * trace_enable_events:
+ * @line_buf: A string with a glob pattern of events to be enabled or,
+ *            if the string starts with '-', disabled.
+ *
+ * Enable or disable matching events.
+ */
+void trace_enable_events(const char *line_buf);
+
 
 #include "trace/control-internal.h"
 
diff --git a/vl.c b/vl.c
index 7ce9d70..2b05023 100644
--- a/vl.c
+++ b/vl.c
@@ -269,10 +269,14 @@ static QemuOptsList qemu_sandbox_opts = {
 
 static QemuOptsList qemu_trace_opts = {
     .name = "trace",
-    .implied_opt_name = "trace",
+    .implied_opt_name = "enable",
     .head = QTAILQ_HEAD_INITIALIZER(qemu_trace_opts.head),
     .desc = {
         {
+            .name = "enable",
+            .type = QEMU_OPT_STRING,
+        },
+        {
             .name = "events",
             .type = QEMU_OPT_STRING,
         },{
@@ -3876,10 +3880,13 @@ int main(int argc, char **argv, char **envp)
             case QEMU_OPTION_trace:
             {
                 opts = qemu_opts_parse_noisily(qemu_find_opts("trace"),
-                                               optarg, false);
+                                               optarg, true);
                 if (!opts) {
                     exit(1);
                 }
+                if (qemu_opt_get(opts, "enable")) {
+                    trace_enable_events(qemu_opt_get(opts, "enable"));
+                }
                 trace_init_events(qemu_opt_get(opts, "events"));
                 if (trace_file) {
                     g_free(trace_file);
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [Qemu-devel] [PATCH 06/11] trace: add "-trace help"
  2015-10-26  9:10 [Qemu-devel] [PATCH v2 00/11] simplify usage of tracepoints, and connect them to logging Denis V. Lunev
                   ` (4 preceding siblings ...)
  2015-10-26  9:10 ` [Qemu-devel] [PATCH 05/11] trace: add "-trace enable=..." Denis V. Lunev
@ 2015-10-26  9:10 ` Denis V. Lunev
  2015-10-26  9:10 ` [Qemu-devel] [PATCH 07/11] log: do not unnecessarily include qom/cpu.h Denis V. Lunev
                   ` (4 subsequent siblings)
  10 siblings, 0 replies; 27+ messages in thread
From: Denis V. Lunev @ 2015-10-26  9:10 UTC (permalink / raw)
  Cc: peter.maydell, qemu-devel, armbru, stefanha, Denis V. Lunev,
	pbonzini

From: Paolo Bonzini <pbonzini@redhat.com>

Print a list of trace points

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Denis V. Lunev <den@openvz.org>
Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
---
 qemu-options.hx |  2 ++
 trace/control.c | 21 ++++++++++++++++++++-
 trace/control.h |  7 +++++++
 3 files changed, 29 insertions(+), 1 deletion(-)

diff --git a/qemu-options.hx b/qemu-options.hx
index 6613911..6729a72 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -3490,6 +3490,8 @@ available if QEMU has been compiled with the @var{simple}, @var{stderr}
 or @var{ftrace} tracing backend.  To specify multiple events or patterns,
 specify the @option{-trace} option multiple times.
 
+Use @code{-trace help} to print a list of names of trace points.
+
 @item events=@var{file}
 Immediately enable events listed in @var{file}.
 The file must contain one event name (as listed in the @file{trace-events} file)
diff --git a/trace/control.c b/trace/control.c
index 715b5b7..7c84795 100644
--- a/trace/control.c
+++ b/trace/control.c
@@ -85,7 +85,16 @@ TraceEvent *trace_event_pattern(const char *pat, TraceEvent *ev)
     return NULL;
 }
 
-void trace_enable_events(const char *line_buf)
+void trace_list_events(void)
+{
+    int i;
+    for (i = 0; i < trace_event_count(); i++) {
+        TraceEvent *res = trace_event_id(i);
+        fprintf(stderr, "%s\n", trace_event_get_name(res));
+    }
+}
+
+static void do_trace_enable_events(const char *line_buf)
 {
     const bool enable = ('-' != line_buf[0]);
     const char *line_ptr = enable ? line_buf : line_buf + 1;
@@ -111,6 +120,16 @@ void trace_enable_events(const char *line_buf)
     }
 }
 
+void trace_enable_events(const char *line_buf)
+{
+    if (is_help_option(line_buf)) {
+        trace_list_events();
+        exit(0);
+    } else {
+        do_trace_enable_events(line_buf);
+    }
+}
+
 void trace_init_events(const char *fname)
 {
     Location loc;
diff --git a/trace/control.h b/trace/control.h
index 32a66ce..3707b3b 100644
--- a/trace/control.h
+++ b/trace/control.h
@@ -182,6 +182,13 @@ void trace_init_events(const char *file);
 void trace_init_file(const char *file);
 
 /**
+ * trace_list_events:
+ *
+ * List all available events.
+ */
+void trace_list_events(void);
+
+/**
  * trace_enable_events:
  * @line_buf: A string with a glob pattern of events to be enabled or,
  *            if the string starts with '-', disabled.
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [Qemu-devel] [PATCH 07/11] log: do not unnecessarily include qom/cpu.h
  2015-10-26  9:10 [Qemu-devel] [PATCH v2 00/11] simplify usage of tracepoints, and connect them to logging Denis V. Lunev
                   ` (5 preceding siblings ...)
  2015-10-26  9:10 ` [Qemu-devel] [PATCH 06/11] trace: add "-trace help" Denis V. Lunev
@ 2015-10-26  9:10 ` Denis V. Lunev
  2015-10-26  9:10 ` [Qemu-devel] [PATCH 08/11] log: move qemu-log.c into util/ directory Denis V. Lunev
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 27+ messages in thread
From: Denis V. Lunev @ 2015-10-26  9:10 UTC (permalink / raw)
  Cc: peter.maydell, qemu-devel, armbru, stefanha, Denis V. Lunev,
	pbonzini

From: Paolo Bonzini <pbonzini@redhat.com>

Split the bits that require it to exec/log.h.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Denis V. Lunev <den@openvz.org>
Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
---
 bsd-user/main.c               |  1 +
 cpu-exec.c                    |  1 +
 exec.c                        |  1 +
 hw/acpi/cpu_hotplug.c         |  1 +
 hw/timer/a9gtimer.c           |  1 +
 include/exec/log.h            | 60 +++++++++++++++++++++++++++++++++++++++++++
 include/qemu/log.h            | 59 ------------------------------------------
 linux-user/main.c             |  1 +
 qom/cpu.c                     |  1 +
 target-alpha/translate.c      |  1 +
 target-arm/translate.c        |  1 +
 target-cris/translate.c       |  1 +
 target-i386/seg_helper.c      |  1 +
 target-i386/smm_helper.c      |  1 +
 target-i386/translate.c       |  1 +
 target-lm32/helper.c          |  1 +
 target-lm32/translate.c       |  1 +
 target-m68k/translate.c       |  1 +
 target-microblaze/helper.c    |  1 +
 target-microblaze/translate.c |  1 +
 target-mips/helper.c          |  1 +
 target-mips/translate.c       |  1 +
 target-moxie/translate.c      |  1 +
 target-openrisc/translate.c   |  1 +
 target-ppc/mmu-hash32.c       |  1 +
 target-ppc/mmu-hash64.c       |  1 +
 target-ppc/mmu_helper.c       |  1 +
 target-ppc/translate.c        |  1 +
 target-s390x/translate.c      |  1 +
 target-sh4/helper.c           |  1 +
 target-sh4/translate.c        |  1 +
 target-sparc/int32_helper.c   |  1 +
 target-sparc/int64_helper.c   |  1 +
 target-sparc/translate.c      |  1 +
 target-tilegx/translate.c     |  1 +
 target-tricore/translate.c    |  1 +
 target-unicore32/translate.c  |  1 +
 target-xtensa/translate.c     |  1 +
 tcg/tcg.c                     |  1 +
 translate-all.c               |  1 +
 40 files changed, 98 insertions(+), 59 deletions(-)
 create mode 100644 include/exec/log.h

diff --git a/bsd-user/main.c b/bsd-user/main.c
index adf2de0..520ce99 100644
--- a/bsd-user/main.c
+++ b/bsd-user/main.c
@@ -33,6 +33,7 @@
 #include "tcg.h"
 #include "qemu/timer.h"
 #include "qemu/envlist.h"
+#include "exec/log.h"
 
 int singlestep;
 unsigned long mmap_min_addr;
diff --git a/cpu-exec.c b/cpu-exec.c
index 7eef083..564a21d 100644
--- a/cpu-exec.c
+++ b/cpu-exec.c
@@ -27,6 +27,7 @@
 #include "exec/address-spaces.h"
 #include "qemu/rcu.h"
 #include "exec/tb-hash.h"
+#include "exec/log.h"
 #if defined(TARGET_I386) && !defined(CONFIG_USER_ONLY)
 #include "hw/i386/apic.h"
 #endif
diff --git a/exec.c b/exec.c
index 8af2570..87636a6 100644
--- a/exec.c
+++ b/exec.c
@@ -53,6 +53,7 @@
 
 #include "exec/memory-internal.h"
 #include "exec/ram_addr.h"
+#include "exec/log.h"
 
 #include "qemu/range.h"
 #ifndef _WIN32
diff --git a/hw/acpi/cpu_hotplug.c b/hw/acpi/cpu_hotplug.c
index f5b9972..16bacfc 100644
--- a/hw/acpi/cpu_hotplug.c
+++ b/hw/acpi/cpu_hotplug.c
@@ -11,6 +11,7 @@
  */
 #include "hw/hw.h"
 #include "hw/acpi/cpu_hotplug.h"
+#include "qom/cpu.h"
 
 static uint64_t cpu_status_read(void *opaque, hwaddr addr, unsigned int size)
 {
diff --git a/hw/timer/a9gtimer.c b/hw/timer/a9gtimer.c
index dd4aae8..b38c76a 100644
--- a/hw/timer/a9gtimer.c
+++ b/hw/timer/a9gtimer.c
@@ -24,6 +24,7 @@
 #include "qemu/timer.h"
 #include "qemu/bitops.h"
 #include "qemu/log.h"
+#include "qom/cpu.h"
 
 #ifndef A9_GTIMER_ERR_DEBUG
 #define A9_GTIMER_ERR_DEBUG 0
diff --git a/include/exec/log.h b/include/exec/log.h
new file mode 100644
index 0000000..ba1c9b5
--- /dev/null
+++ b/include/exec/log.h
@@ -0,0 +1,60 @@
+#ifndef QEMU_EXEC_LOG_H
+#define QEMU_EXEC_LOG_H
+
+#include "qemu/log.h"
+#include "qom/cpu.h"
+#include "disas/disas.h"
+
+/* cpu_dump_state() logging functions: */
+/**
+ * log_cpu_state:
+ * @cpu: The CPU whose state is to be logged.
+ * @flags: Flags what to log.
+ *
+ * Logs the output of cpu_dump_state().
+ */
+static inline void log_cpu_state(CPUState *cpu, int flags)
+{
+    if (qemu_log_enabled()) {
+        cpu_dump_state(cpu, qemu_logfile, fprintf, flags);
+    }
+}
+
+/**
+ * log_cpu_state_mask:
+ * @mask: Mask when to log.
+ * @cpu: The CPU whose state is to be logged.
+ * @flags: Flags what to log.
+ *
+ * Logs the output of cpu_dump_state() if loglevel includes @mask.
+ */
+static inline void log_cpu_state_mask(int mask, CPUState *cpu, int flags)
+{
+    if (qemu_loglevel & mask) {
+        log_cpu_state(cpu, flags);
+    }
+}
+
+#ifdef NEED_CPU_H
+/* disas() and target_disas() to qemu_logfile: */
+static inline void log_target_disas(CPUState *cpu, target_ulong start,
+                                    target_ulong len, int flags)
+{
+    target_disas(qemu_logfile, cpu, start, len, flags);
+}
+
+static inline void log_disas(void *code, unsigned long size)
+{
+    disas(qemu_logfile, code, size);
+}
+
+#if defined(CONFIG_USER_ONLY)
+/* page_dump() output to the log file: */
+static inline void log_page_dump(void)
+{
+    page_dump(qemu_logfile);
+}
+#endif
+#endif
+
+#endif
diff --git a/include/qemu/log.h b/include/qemu/log.h
index 7de4500..ed57a3d 100644
--- a/include/qemu/log.h
+++ b/include/qemu/log.h
@@ -5,10 +5,6 @@
 #include <stdbool.h>
 #include <stdio.h>
 #include "qemu/compiler.h"
-#include "qom/cpu.h"
-#ifdef NEED_CPU_H
-#include "disas/disas.h"
-#endif
 
 /* Private global variables, don't use */
 extern FILE *qemu_logfile;
@@ -71,61 +67,6 @@ qemu_log_vprintf(const char *fmt, va_list va)
 void GCC_FMT_ATTR(2, 3) qemu_log_mask(int mask, const char *fmt, ...);
 
 
-/* Special cases: */
-
-/* cpu_dump_state() logging functions: */
-/**
- * log_cpu_state:
- * @cpu: The CPU whose state is to be logged.
- * @flags: Flags what to log.
- *
- * Logs the output of cpu_dump_state().
- */
-static inline void log_cpu_state(CPUState *cpu, int flags)
-{
-    if (qemu_log_enabled()) {
-        cpu_dump_state(cpu, qemu_logfile, fprintf, flags);
-    }
-}
-
-/**
- * log_cpu_state_mask:
- * @mask: Mask when to log.
- * @cpu: The CPU whose state is to be logged.
- * @flags: Flags what to log.
- *
- * Logs the output of cpu_dump_state() if loglevel includes @mask.
- */
-static inline void log_cpu_state_mask(int mask, CPUState *cpu, int flags)
-{
-    if (qemu_loglevel & mask) {
-        log_cpu_state(cpu, flags);
-    }
-}
-
-#ifdef NEED_CPU_H
-/* disas() and target_disas() to qemu_logfile: */
-static inline void log_target_disas(CPUState *cpu, target_ulong start,
-                                    target_ulong len, int flags)
-{
-    target_disas(qemu_logfile, cpu, start, len, flags);
-}
-
-static inline void log_disas(void *code, unsigned long size)
-{
-    disas(qemu_logfile, code, size);
-}
-
-#if defined(CONFIG_USER_ONLY)
-/* page_dump() output to the log file: */
-static inline void log_page_dump(void)
-{
-    page_dump(qemu_logfile);
-}
-#endif
-#endif
-
-
 /* Maintenance: */
 
 /* fflush() the log file */
diff --git a/linux-user/main.c b/linux-user/main.c
index 8acfe0f..8430fb8 100644
--- a/linux-user/main.c
+++ b/linux-user/main.c
@@ -33,6 +33,7 @@
 #include "qemu/timer.h"
 #include "qemu/envlist.h"
 #include "elf.h"
+#include "exec/log.h"
 
 char *exec_path;
 
diff --git a/qom/cpu.c b/qom/cpu.c
index fb80d13..ce7dfa2 100644
--- a/qom/cpu.c
+++ b/qom/cpu.c
@@ -23,6 +23,7 @@
 #include "sysemu/kvm.h"
 #include "qemu/notify.h"
 #include "qemu/log.h"
+#include "exec/log.h"
 #include "qemu/error-report.h"
 #include "sysemu/sysemu.h"
 
diff --git a/target-alpha/translate.c b/target-alpha/translate.c
index f936d1b..a3c021c 100644
--- a/target-alpha/translate.c
+++ b/target-alpha/translate.c
@@ -27,6 +27,7 @@
 #include "exec/helper-gen.h"
 
 #include "trace-tcg.h"
+#include "exec/log.h"
 
 
 #undef ALPHA_DEBUG_DISAS
diff --git a/target-arm/translate.c b/target-arm/translate.c
index 9f1d740..f29d68c 100644
--- a/target-arm/translate.c
+++ b/target-arm/translate.c
@@ -36,6 +36,7 @@
 #include "exec/helper-gen.h"
 
 #include "trace-tcg.h"
+#include "exec/log.h"
 
 
 #define ENABLE_ARCH_4T    arm_dc_feature(s, ARM_FEATURE_V4T)
diff --git a/target-cris/translate.c b/target-cris/translate.c
index 964845c..f188616 100644
--- a/target-cris/translate.c
+++ b/target-cris/translate.c
@@ -34,6 +34,7 @@
 #include "exec/helper-gen.h"
 
 #include "trace-tcg.h"
+#include "exec/log.h"
 
 
 #define DISAS_CRIS 0
diff --git a/target-i386/seg_helper.c b/target-i386/seg_helper.c
index 20ee892..e55694f 100644
--- a/target-i386/seg_helper.c
+++ b/target-i386/seg_helper.c
@@ -22,6 +22,7 @@
 #include "qemu/log.h"
 #include "exec/helper-proto.h"
 #include "exec/cpu_ldst.h"
+#include "exec/log.h"
 
 //#define DEBUG_PCALL
 
diff --git a/target-i386/smm_helper.c b/target-i386/smm_helper.c
index c272a98..1ab6637 100644
--- a/target-i386/smm_helper.c
+++ b/target-i386/smm_helper.c
@@ -19,6 +19,7 @@
 
 #include "cpu.h"
 #include "exec/helper-proto.h"
+#include "exec/log.h"
 
 /* SMM support */
 
diff --git a/target-i386/translate.c b/target-i386/translate.c
index 764b1e4..070cdf3 100644
--- a/target-i386/translate.c
+++ b/target-i386/translate.c
@@ -32,6 +32,7 @@
 #include "exec/helper-gen.h"
 
 #include "trace-tcg.h"
+#include "exec/log.h"
 
 
 #define PREFIX_REPZ   0x01
diff --git a/target-lm32/helper.c b/target-lm32/helper.c
index e26c133..978b99f 100644
--- a/target-lm32/helper.c
+++ b/target-lm32/helper.c
@@ -21,6 +21,7 @@
 #include "qemu/host-utils.h"
 #include "sysemu/sysemu.h"
 #include "exec/semihost.h"
+#include "exec/log.h"
 
 int lm32_cpu_handle_mmu_fault(CPUState *cs, vaddr address, int rw,
                               int mmu_idx)
diff --git a/target-lm32/translate.c b/target-lm32/translate.c
index c61ad0f..d5fff95 100644
--- a/target-lm32/translate.c
+++ b/target-lm32/translate.c
@@ -28,6 +28,7 @@
 #include "exec/helper-gen.h"
 
 #include "trace-tcg.h"
+#include "exec/log.h"
 
 
 #define DISAS_LM32 1
diff --git a/target-m68k/translate.c b/target-m68k/translate.c
index 5995cce..a287b94 100644
--- a/target-m68k/translate.c
+++ b/target-m68k/translate.c
@@ -28,6 +28,7 @@
 #include "exec/helper-gen.h"
 
 #include "trace-tcg.h"
+#include "exec/log.h"
 
 
 //#define DEBUG_DISPATCH 1
diff --git a/target-microblaze/helper.c b/target-microblaze/helper.c
index 8257b0e..ee65245 100644
--- a/target-microblaze/helper.c
+++ b/target-microblaze/helper.c
@@ -20,6 +20,7 @@
 
 #include "cpu.h"
 #include "qemu/host-utils.h"
+#include "exec/log.h"
 
 #define D(x)
 
diff --git a/target-microblaze/translate.c b/target-microblaze/translate.c
index a9c5010..2fb1625 100644
--- a/target-microblaze/translate.c
+++ b/target-microblaze/translate.c
@@ -27,6 +27,7 @@
 #include "exec/helper-gen.h"
 
 #include "trace-tcg.h"
+#include "exec/log.h"
 
 
 #define SIM_COMPAT 0
diff --git a/target-mips/helper.c b/target-mips/helper.c
index 01c4461..bab8e17 100644
--- a/target-mips/helper.c
+++ b/target-mips/helper.c
@@ -25,6 +25,7 @@
 #include "cpu.h"
 #include "sysemu/kvm.h"
 #include "exec/cpu_ldst.h"
+#include "exec/log.h"
 
 enum {
     TLBRET_XI = -6,
diff --git a/target-mips/translate.c b/target-mips/translate.c
index 897839c..03f2570 100644
--- a/target-mips/translate.c
+++ b/target-mips/translate.c
@@ -32,6 +32,7 @@
 #include "exec/semihost.h"
 
 #include "trace-tcg.h"
+#include "exec/log.h"
 
 #define MIPS_DEBUG_DISAS 0
 
diff --git a/target-moxie/translate.c b/target-moxie/translate.c
index f84841e..894c2fe 100644
--- a/target-moxie/translate.c
+++ b/target-moxie/translate.c
@@ -35,6 +35,7 @@
 
 #include "exec/helper-proto.h"
 #include "exec/helper-gen.h"
+#include "exec/log.h"
 
 /* This is the state at translation time.  */
 typedef struct DisasContext {
diff --git a/target-openrisc/translate.c b/target-openrisc/translate.c
index b66fde1..ad341f2 100644
--- a/target-openrisc/translate.c
+++ b/target-openrisc/translate.c
@@ -32,6 +32,7 @@
 #include "exec/helper-gen.h"
 
 #include "trace-tcg.h"
+#include "exec/log.h"
 
 
 #define OPENRISC_DISAS
diff --git a/target-ppc/mmu-hash32.c b/target-ppc/mmu-hash32.c
index dfee358..6453856 100644
--- a/target-ppc/mmu-hash32.c
+++ b/target-ppc/mmu-hash32.c
@@ -23,6 +23,7 @@
 #include "sysemu/kvm.h"
 #include "kvm_ppc.h"
 #include "mmu-hash32.h"
+#include "exec/log.h"
 
 //#define DEBUG_MMU
 //#define DEBUG_BAT
diff --git a/target-ppc/mmu-hash64.c b/target-ppc/mmu-hash64.c
index 7df6ede..73edde6 100644
--- a/target-ppc/mmu-hash64.c
+++ b/target-ppc/mmu-hash64.c
@@ -22,6 +22,7 @@
 #include "sysemu/kvm.h"
 #include "kvm_ppc.h"
 #include "mmu-hash64.h"
+#include "exec/log.h"
 
 //#define DEBUG_MMU
 //#define DEBUG_SLB
diff --git a/target-ppc/mmu_helper.c b/target-ppc/mmu_helper.c
index e52d0e5..b4fea22 100644
--- a/target-ppc/mmu_helper.c
+++ b/target-ppc/mmu_helper.c
@@ -23,6 +23,7 @@
 #include "mmu-hash64.h"
 #include "mmu-hash32.h"
 #include "exec/cpu_ldst.h"
+#include "exec/log.h"
 
 //#define DEBUG_MMU
 //#define DEBUG_BATS
diff --git a/target-ppc/translate.c b/target-ppc/translate.c
index 453509a..32a0567 100644
--- a/target-ppc/translate.c
+++ b/target-ppc/translate.c
@@ -28,6 +28,7 @@
 #include "exec/helper-gen.h"
 
 #include "trace-tcg.h"
+#include "exec/log.h"
 
 
 #define CPU_SINGLE_STEP 0x1
diff --git a/target-s390x/translate.c b/target-s390x/translate.c
index 05d51fe..e61b7a9 100644
--- a/target-s390x/translate.c
+++ b/target-s390x/translate.c
@@ -43,6 +43,7 @@ static TCGv_ptr cpu_env;
 #include "exec/helper-gen.h"
 
 #include "trace-tcg.h"
+#include "exec/log.h"
 
 
 /* Information that (most) every instruction needs to manipulate.  */
diff --git a/target-sh4/helper.c b/target-sh4/helper.c
index eaececd..90b4405 100644
--- a/target-sh4/helper.c
+++ b/target-sh4/helper.c
@@ -23,6 +23,7 @@
 #include <inttypes.h>
 
 #include "cpu.h"
+#include "exec/log.h"
 
 #if !defined(CONFIG_USER_ONLY)
 #include "hw/sh4/sh_intc.h"
diff --git a/target-sh4/translate.c b/target-sh4/translate.c
index f764bc2..11feba2 100644
--- a/target-sh4/translate.c
+++ b/target-sh4/translate.c
@@ -28,6 +28,7 @@
 #include "exec/helper-gen.h"
 
 #include "trace-tcg.h"
+#include "exec/log.h"
 
 
 typedef struct DisasContext {
diff --git a/target-sparc/int32_helper.c b/target-sparc/int32_helper.c
index 7c380ba..ac5e599 100644
--- a/target-sparc/int32_helper.c
+++ b/target-sparc/int32_helper.c
@@ -20,6 +20,7 @@
 #include "cpu.h"
 #include "trace.h"
 #include "sysemu/sysemu.h"
+#include "exec/log.h"
 
 #define DEBUG_PCALL
 
diff --git a/target-sparc/int64_helper.c b/target-sparc/int64_helper.c
index b02d22b..a753151 100644
--- a/target-sparc/int64_helper.c
+++ b/target-sparc/int64_helper.c
@@ -19,6 +19,7 @@
 
 #include "cpu.h"
 #include "exec/helper-proto.h"
+#include "exec/log.h"
 #include "trace.h"
 
 #define DEBUG_PCALL
diff --git a/target-sparc/translate.c b/target-sparc/translate.c
index b59742a..864b3f9 100644
--- a/target-sparc/translate.c
+++ b/target-sparc/translate.c
@@ -33,6 +33,7 @@
 #include "exec/helper-gen.h"
 
 #include "trace-tcg.h"
+#include "exec/log.h"
 
 
 #define DEBUG_DISAS
diff --git a/target-tilegx/translate.c b/target-tilegx/translate.c
index 34d45f8..efd0fd3 100644
--- a/target-tilegx/translate.c
+++ b/target-tilegx/translate.c
@@ -20,6 +20,7 @@
 
 #include "cpu.h"
 #include "qemu/log.h"
+#include "exec/log.h"
 #include "disas/disas.h"
 #include "tcg-op.h"
 #include "exec/cpu_ldst.h"
diff --git a/target-tricore/translate.c b/target-tricore/translate.c
index 135c583..1d29ea1 100644
--- a/target-tricore/translate.c
+++ b/target-tricore/translate.c
@@ -27,6 +27,7 @@
 #include "exec/helper-gen.h"
 
 #include "tricore-opcodes.h"
+#include "exec/log.h"
 
 /*
  * TCG registers
diff --git a/target-unicore32/translate.c b/target-unicore32/translate.c
index 48f89fb..7d75f39 100644
--- a/target-unicore32/translate.c
+++ b/target-unicore32/translate.c
@@ -24,6 +24,7 @@
 #include "exec/helper-gen.h"
 
 #include "trace-tcg.h"
+#include "exec/log.h"
 
 
 /* internal defines */
diff --git a/target-xtensa/translate.c b/target-xtensa/translate.c
index aa0c527..b54ca5a 100644
--- a/target-xtensa/translate.c
+++ b/target-xtensa/translate.c
@@ -43,6 +43,7 @@
 #include "exec/helper-gen.h"
 
 #include "trace-tcg.h"
+#include "exec/log.h"
 
 
 typedef struct DisasContext {
diff --git a/tcg/tcg.c b/tcg/tcg.c
index 682af8a..d614751 100644
--- a/tcg/tcg.c
+++ b/tcg/tcg.c
@@ -60,6 +60,7 @@
 #endif
 
 #include "elf.h"
+#include "exec/log.h"
 
 /* Forward declarations for functions declared in tcg-target.c and used here. */
 static void tcg_target_init(TCGContext *s);
diff --git a/translate-all.c b/translate-all.c
index 20ce40e..e9e928e 100644
--- a/translate-all.c
+++ b/translate-all.c
@@ -62,6 +62,7 @@
 #include "translate-all.h"
 #include "qemu/bitmap.h"
 #include "qemu/timer.h"
+#include "exec/log.h"
 
 //#define DEBUG_TB_INVALIDATE
 //#define DEBUG_FLUSH
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [Qemu-devel] [PATCH 08/11] log: move qemu-log.c into util/ directory
  2015-10-26  9:10 [Qemu-devel] [PATCH v2 00/11] simplify usage of tracepoints, and connect them to logging Denis V. Lunev
                   ` (6 preceding siblings ...)
  2015-10-26  9:10 ` [Qemu-devel] [PATCH 07/11] log: do not unnecessarily include qom/cpu.h Denis V. Lunev
@ 2015-10-26  9:10 ` Denis V. Lunev
  2015-10-26 17:20   ` Paolo Bonzini
  2015-10-26  9:10 ` [Qemu-devel] [PATCH 09/11] trace: convert stderr backend to log Denis V. Lunev
                   ` (2 subsequent siblings)
  10 siblings, 1 reply; 27+ messages in thread
From: Denis V. Lunev @ 2015-10-26  9:10 UTC (permalink / raw)
  Cc: peter.maydell, qemu-devel, armbru, stefanha, Denis V. Lunev,
	pbonzini

log will become common facility with tracepoints support in next step.

Signed-off-by: Denis V. Lunev <den@openvz.org>
---
 Makefile.objs            | 1 -
 util/Makefile.objs       | 1 +
 qemu-log.c => util/log.c | 0
 3 files changed, 1 insertion(+), 1 deletion(-)
 rename qemu-log.c => util/log.c (100%)

diff --git a/Makefile.objs b/Makefile.objs
index ecfe03c..ce32193 100644
--- a/Makefile.objs
+++ b/Makefile.objs
@@ -81,7 +81,6 @@ endif
 
 #######################################################################
 # Target-independent parts used in system and user emulation
-common-obj-y += qemu-log.o
 common-obj-y += tcg-runtime.o
 common-obj-y += hw/
 common-obj-y += qom/
diff --git a/util/Makefile.objs b/util/Makefile.objs
index d7cc399..a11915c 100644
--- a/util/Makefile.objs
+++ b/util/Makefile.objs
@@ -29,3 +29,4 @@ util-obj-y += qemu-coroutine.o qemu-coroutine-lock.o qemu-coroutine-io.o
 util-obj-y += qemu-coroutine-sleep.o
 util-obj-y += coroutine-$(CONFIG_COROUTINE_BACKEND).o
 util-obj-y += buffer.o
+util-obj-y += log.o
diff --git a/qemu-log.c b/util/log.c
similarity index 100%
rename from qemu-log.c
rename to util/log.c
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [Qemu-devel] [PATCH 09/11] trace: convert stderr backend to log
  2015-10-26  9:10 [Qemu-devel] [PATCH v2 00/11] simplify usage of tracepoints, and connect them to logging Denis V. Lunev
                   ` (7 preceding siblings ...)
  2015-10-26  9:10 ` [Qemu-devel] [PATCH 08/11] log: move qemu-log.c into util/ directory Denis V. Lunev
@ 2015-10-26  9:10 ` Denis V. Lunev
  2015-10-26  9:14 ` [Qemu-devel] [PATCH 10/11] trace: switch default backend to "log" Denis V. Lunev
  2015-10-29 17:38 ` [Qemu-devel] [PATCH v2 00/11] simplify usage of tracepoints, and connect them to logging Stefan Hajnoczi
  10 siblings, 0 replies; 27+ messages in thread
From: Denis V. Lunev @ 2015-10-26  9:10 UTC (permalink / raw)
  Cc: peter.maydell, qemu-devel, armbru, stefanha, Denis V. Lunev,
	pbonzini

From: Paolo Bonzini <pbonzini@redhat.com>

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Denis V. Lunev <den@openvz.org>
Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
---
 configure                                       |  4 ++--
 include/qemu/log.h                              |  1 +
 scripts/tracetool/backend/{stderr.py => log.py} |  9 +++++----
 trace/control.c                                 | 10 ++++++++++
 util/log.c                                      |  3 +++
 vl.c                                            |  2 ++
 6 files changed, 23 insertions(+), 6 deletions(-)
 rename scripts/tracetool/backend/{stderr.py => log.py} (78%)

diff --git a/configure b/configure
index 2a129bb..d803e67 100755
--- a/configure
+++ b/configure
@@ -5299,8 +5299,8 @@ if have_backend "simple"; then
   # Set the appropriate trace file.
   trace_file="\"$trace_file-\" FMT_pid"
 fi
-if have_backend "stderr"; then
-  echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak
+if have_backend "log"; then
+  echo "CONFIG_TRACE_LOG=y" >> $config_host_mak
 fi
 if have_backend "ust"; then
   echo "CONFIG_TRACE_UST=y" >> $config_host_mak
diff --git a/include/qemu/log.h b/include/qemu/log.h
index ed57a3d..5a0fbe3 100644
--- a/include/qemu/log.h
+++ b/include/qemu/log.h
@@ -38,6 +38,7 @@ static inline bool qemu_log_enabled(void)
 #define LOG_GUEST_ERROR    (1 << 11)
 #define CPU_LOG_MMU        (1 << 12)
 #define CPU_LOG_TB_NOCHAIN (1 << 13)
+#define LOG_TRACE          (1 << 14)
 
 /* Returns true if a bit is set in the current loglevel mask
  */
diff --git a/scripts/tracetool/backend/stderr.py b/scripts/tracetool/backend/log.py
similarity index 78%
rename from scripts/tracetool/backend/stderr.py
rename to scripts/tracetool/backend/log.py
index ca58054..a62c310 100644
--- a/scripts/tracetool/backend/stderr.py
+++ b/scripts/tracetool/backend/log.py
@@ -25,6 +25,7 @@ def generate_h_begin(events):
         '#include <sys/types.h>',
         '#include <unistd.h>',
         '#include "trace/control.h"',
+        '#include "qemu/log.h"',
         '')
 
 
@@ -36,10 +37,10 @@ def generate_h(event):
     out('    if (trace_event_get_state(%(event_id)s)) {',
         '        struct timeval _now;',
         '        gettimeofday(&_now, NULL);',
-        '        fprintf(stderr, "%%d@%%zd.%%06zd:%(name)s " %(fmt)s "\\n",',
-        '                        getpid(),',
-        '                        (size_t)_now.tv_sec, (size_t)_now.tv_usec',
-        '                        %(argnames)s);',
+        '        qemu_log_mask(LOG_TRACE, "%%d@%%zd.%%06zd:%(name)s " %(fmt)s "\\n",',
+        '                      getpid(),',
+        '                      (size_t)_now.tv_sec, (size_t)_now.tv_usec',
+        '                      %(argnames)s);',
         '    }',
         event_id="TRACE_" + event.name.upper(),
         name=event.name,
diff --git a/trace/control.c b/trace/control.c
index 7c84795..9a1e381 100644
--- a/trace/control.c
+++ b/trace/control.c
@@ -14,6 +14,9 @@
 #ifdef CONFIG_TRACE_FTRACE
 #include "trace/ftrace.h"
 #endif
+#ifdef CONFIG_TRACE_LOG
+#include "qemu/log.h"
+#endif
 #include "qemu/error-report.h"
 
 TraceEvent *trace_event_name(const char *name)
@@ -171,6 +174,13 @@ void trace_init_file(const char *file)
 {
 #ifdef CONFIG_TRACE_SIMPLE
     st_set_trace_file(file);
+#elif defined CONFIG_TRACE_LOG
+    /* If both the simple and the log backends are enabled, "-trace file"
+     * only applies to the simple backend; use "-D" for the log backend.
+     */
+    if (file) {
+        qemu_set_log_filename(file);
+    }
 #else
     if (file) {
         fprintf(stderr, "error: -trace file=...: "
diff --git a/util/log.c b/util/log.c
index efd07c8..5c641a0 100644
--- a/util/log.c
+++ b/util/log.c
@@ -51,6 +51,9 @@ void qemu_log_mask(int mask, const char *fmt, ...)
 void do_qemu_set_log(int log_flags, bool use_own_buffers)
 {
     qemu_loglevel = log_flags;
+#ifdef CONFIG_TRACE_LOG
+    qemu_loglevel |= LOG_TRACE;
+#endif
     if (qemu_loglevel && !qemu_logfile) {
         if (logfilename) {
             qemu_logfile = fopen(logfilename, log_append ? "a" : "w");
diff --git a/vl.c b/vl.c
index 2b05023..88b4ccb 100644
--- a/vl.c
+++ b/vl.c
@@ -4088,6 +4088,8 @@ int main(int argc, char **argv, char **envp)
             exit(1);
         }
         qemu_set_log(mask);
+    } else {
+        qemu_set_log(0);
     }
 
     if (!trace_init_backends()) {
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [Qemu-devel] [PATCH 10/11] trace: switch default backend to "log"
  2015-10-26  9:10 [Qemu-devel] [PATCH v2 00/11] simplify usage of tracepoints, and connect them to logging Denis V. Lunev
                   ` (8 preceding siblings ...)
  2015-10-26  9:10 ` [Qemu-devel] [PATCH 09/11] trace: convert stderr backend to log Denis V. Lunev
@ 2015-10-26  9:14 ` Denis V. Lunev
  2015-10-26  9:14   ` [Qemu-devel] [PATCH 11/11] log: add "-d trace:PATTERN" Denis V. Lunev
  2015-10-29 17:38 ` [Qemu-devel] [PATCH v2 00/11] simplify usage of tracepoints, and connect them to logging Stefan Hajnoczi
  10 siblings, 1 reply; 27+ messages in thread
From: Denis V. Lunev @ 2015-10-26  9:14 UTC (permalink / raw)
  Cc: peter.maydell, qemu-devel, armbru, stefanha, Denis V. Lunev,
	pbonzini

From: Paolo Bonzini <pbonzini@redhat.com>

This enables integration with other QEMU logging facilities.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Denis V. Lunev <den@openvz.org>
Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
---
 configure | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/configure b/configure
index d803e67..256d2c5 100755
--- a/configure
+++ b/configure
@@ -298,7 +298,7 @@ pkgversion=""
 pie=""
 zero_malloc=""
 qom_cast_debug="yes"
-trace_backends="nop"
+trace_backends="log"
 trace_file="trace"
 spice=""
 rbd=""
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [Qemu-devel] [PATCH 11/11] log: add "-d trace:PATTERN"
  2015-10-26  9:14 ` [Qemu-devel] [PATCH 10/11] trace: switch default backend to "log" Denis V. Lunev
@ 2015-10-26  9:14   ` Denis V. Lunev
  2015-10-26 13:12     ` Lluís Vilanova
  0 siblings, 1 reply; 27+ messages in thread
From: Denis V. Lunev @ 2015-10-26  9:14 UTC (permalink / raw)
  Cc: peter.maydell, qemu-devel, armbru, stefanha, Denis V. Lunev,
	pbonzini

From: Paolo Bonzini <pbonzini@redhat.com>

This is a bit easier to use than "-trace" if you are also enabling
other kinds of logging.  It is also more discoverable for experienced
QEMU users, and accessible from user-mode emulators.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Denis V. Lunev <den@openvz.org>
Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
---
 util/log.c | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/util/log.c b/util/log.c
index 5c641a0..2bcef95 100644
--- a/util/log.c
+++ b/util/log.c
@@ -19,6 +19,7 @@
 
 #include "qemu-common.h"
 #include "qemu/log.h"
+#include "trace/control.h"
 
 static char *logfilename;
 FILE *qemu_logfile;
@@ -154,6 +155,11 @@ int qemu_str_to_log_mask(const char *str)
             for (item = qemu_log_items; item->mask != 0; item++) {
                 mask |= item->mask;
             }
+#ifdef CONFIG_TRACE_LOG
+        } else if (strncmp(p, "trace:", 6) == 0 && p + 6 != p1) {
+            trace_enable_events(p + 6);
+            mask |= LOG_TRACE;
+#endif
         } else {
             for (item = qemu_log_items; item->mask != 0; item++) {
                 if (cmp1(p, p1 - p, item->name)) {
@@ -161,9 +167,9 @@ int qemu_str_to_log_mask(const char *str)
                 }
             }
             return 0;
+        found:
+            mask |= item->mask;
         }
-    found:
-        mask |= item->mask;
         if (*p1 != ',') {
             break;
         }
@@ -177,6 +183,10 @@ void qemu_print_log_usage(FILE *f)
     const QEMULogItem *item;
     fprintf(f, "Log items (comma separated):\n");
     for (item = qemu_log_items; item->mask != 0; item++) {
-        fprintf(f, "%-10s %s\n", item->name, item->help);
+        fprintf(f, "%-15s %s\n", item->name, item->help);
     }
+#ifdef CONFIG_TRACE_LOG
+    fprintf(f, "trace:PATTERN   enable trace events\n");
+    fprintf(f, "\nUse \"-d trace:help\" to get a list of trace events.\n\n");
+#endif
 }
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 27+ messages in thread

* Re: [Qemu-devel] [PATCH 11/11] log: add "-d trace:PATTERN"
  2015-10-26  9:14   ` [Qemu-devel] [PATCH 11/11] log: add "-d trace:PATTERN" Denis V. Lunev
@ 2015-10-26 13:12     ` Lluís Vilanova
  2015-10-26 17:07       ` Eric Blake
  0 siblings, 1 reply; 27+ messages in thread
From: Lluís Vilanova @ 2015-10-26 13:12 UTC (permalink / raw)
  To: Denis V. Lunev; +Cc: peter.maydell, pbonzini, qemu-devel, stefanha, armbru

Denis V Lunev writes:

> From:  Paolo Bonzini <pbonzini@redhat.com>
> This is a bit easier to use than "-trace" if you are also enabling
> other kinds of logging.  It is also more discoverable for experienced
> QEMU users, and accessible from user-mode emulators.

I'm not sure this should be added, since the same functionality is also
available through "-trace enable=<pattern>" (and the shortcut "-trace
<pattern>").

Also, I'd rather fold event name discovery into "-trace enable=?" (and the
shortcut "-trace ?"), mimicking the format already available for CPUs ("-cpu
?").


Cheers,
  Lluis

-- 
"And it's much the same thing with knowledge, for whenever you learn
something new, the whole world becomes that much richer."
-- The Princess of Pure Reason, as told by Norton Juster in The Phantom
Tollbooth

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [Qemu-devel] [PATCH 11/11] log: add "-d trace:PATTERN"
  2015-10-26 13:12     ` Lluís Vilanova
@ 2015-10-26 17:07       ` Eric Blake
  2015-10-26 19:23         ` Lluís Vilanova
  0 siblings, 1 reply; 27+ messages in thread
From: Eric Blake @ 2015-10-26 17:07 UTC (permalink / raw)
  To: Denis V. Lunev, peter.maydell, qemu-devel, armbru, stefanha,
	pbonzini

[-- Attachment #1: Type: text/plain, Size: 1203 bytes --]

On 10/26/2015 07:12 AM, Lluís Vilanova wrote:
> Denis V Lunev writes:
> 
>> From:  Paolo Bonzini <pbonzini@redhat.com>
>> This is a bit easier to use than "-trace" if you are also enabling
>> other kinds of logging.  It is also more discoverable for experienced
>> QEMU users, and accessible from user-mode emulators.
> 
> I'm not sure this should be added, since the same functionality is also
> available through "-trace enable=<pattern>" (and the shortcut "-trace
> <pattern>").

Having more than one way to do something is not necessarily bad; it does
imply more maintenance to keep both ways working, but if one way is more
discoverable than the other it may be worth it.

> 
> Also, I'd rather fold event name discovery into "-trace enable=?" (and the
> shortcut "-trace ?"), mimicking the format already available for CPUs ("-cpu
> ?").
> 

If we do that, we should also support '-trace enable=help', because ? is
a shell metacharacter, and we have been moving towards using 'help'
rather than '?' to minimize the need for shell quoting when asking for help.

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 604 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [Qemu-devel] [PATCH 04/11] trace: no need to call trace_backend_init in different branches now
  2015-10-26  9:10 ` [Qemu-devel] [PATCH 04/11] trace: no need to call trace_backend_init in different branches now Denis V. Lunev
@ 2015-10-26 17:18   ` Paolo Bonzini
  0 siblings, 0 replies; 27+ messages in thread
From: Paolo Bonzini @ 2015-10-26 17:18 UTC (permalink / raw)
  To: Denis V. Lunev; +Cc: peter.maydell, qemu-devel, stefanha, armbru



On 26/10/2015 10:10, Denis V. Lunev wrote:
> original idea to split calling locations was to trace tracing thread
> in the final child process according to
> 
>     commit 8a745f2a9296ad2cf6bda33534ed298f2625a4ad
>     Author: Michael Mueller
>     Date:   Mon Sep 23 16:36:54 2013 +0200
> 
> os_daemonize is now on top of both locations. Drop unneeded ifs.

Oh, that's nice! :-)

Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>

Paolo

> Signed-off-by: Denis V. Lunev <den@openvz.org>
> ---
>  vl.c | 12 ++----------
>  1 file changed, 2 insertions(+), 10 deletions(-)
> 
> diff --git a/vl.c b/vl.c
> index b1ddd3f..7ce9d70 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -4083,10 +4083,8 @@ int main(int argc, char **argv, char **envp)
>          qemu_set_log(mask);
>      }
>  
> -    if (!is_daemonized()) {
> -        if (!trace_init_backends()) {
> -            exit(1);
> -        }
> +    if (!trace_init_backends()) {
> +        exit(1);
>      }
>  
>      /* If no data_dir is specified then try to find it relative to the
> @@ -4635,12 +4633,6 @@ int main(int argc, char **argv, char **envp)
>  
>      os_setup_post();
>  
> -    if (is_daemonized()) {
> -        if (!trace_init_backends()) {
> -            exit(1);
> -        }
> -    }
> -
>      main_loop();
>      bdrv_close_all();
>      pause_all_vcpus();
> 

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [Qemu-devel] [PATCH 08/11] log: move qemu-log.c into util/ directory
  2015-10-26  9:10 ` [Qemu-devel] [PATCH 08/11] log: move qemu-log.c into util/ directory Denis V. Lunev
@ 2015-10-26 17:20   ` Paolo Bonzini
  2015-10-26 18:24     ` Denis V. Lunev
  0 siblings, 1 reply; 27+ messages in thread
From: Paolo Bonzini @ 2015-10-26 17:20 UTC (permalink / raw)
  To: Denis V. Lunev; +Cc: peter.maydell, qemu-devel, stefanha, armbru



On 26/10/2015 10:10, Denis V. Lunev wrote:
> log will become common facility with tracepoints support in next step.
> 
> Signed-off-by: Denis V. Lunev <den@openvz.org>
> ---
>  Makefile.objs            | 1 -
>  util/Makefile.objs       | 1 +
>  qemu-log.c => util/log.c | 0
>  3 files changed, 1 insertion(+), 1 deletion(-)
>  rename qemu-log.c => util/log.c (100%)
> 
> diff --git a/Makefile.objs b/Makefile.objs
> index ecfe03c..ce32193 100644
> --- a/Makefile.objs
> +++ b/Makefile.objs
> @@ -81,7 +81,6 @@ endif
>  
>  #######################################################################
>  # Target-independent parts used in system and user emulation
> -common-obj-y += qemu-log.o
>  common-obj-y += tcg-runtime.o
>  common-obj-y += hw/
>  common-obj-y += qom/
> diff --git a/util/Makefile.objs b/util/Makefile.objs
> index d7cc399..a11915c 100644
> --- a/util/Makefile.objs
> +++ b/util/Makefile.objs
> @@ -29,3 +29,4 @@ util-obj-y += qemu-coroutine.o qemu-coroutine-lock.o qemu-coroutine-io.o
>  util-obj-y += qemu-coroutine-sleep.o
>  util-obj-y += coroutine-$(CONFIG_COROUTINE_BACKEND).o
>  util-obj-y += buffer.o
> +util-obj-y += log.o
> diff --git a/qemu-log.c b/util/log.c
> similarity index 100%
> rename from qemu-log.c
> rename to util/log.c
> 

Yes, this makes sense after the previous patch.  The declaration of the
LOG_* constants is a bit ad hoc for util/, but I guess it's fine.
Another possibility is to move it to trace/.

I'll leave this to Stefan to judge.

Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>

Paolo

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [Qemu-devel] [PATCH 08/11] log: move qemu-log.c into util/ directory
  2015-10-26 17:20   ` Paolo Bonzini
@ 2015-10-26 18:24     ` Denis V. Lunev
  0 siblings, 0 replies; 27+ messages in thread
From: Denis V. Lunev @ 2015-10-26 18:24 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: peter.maydell, qemu-devel, stefanha, armbru

On 10/26/2015 08:20 PM, Paolo Bonzini wrote:
>
> On 26/10/2015 10:10, Denis V. Lunev wrote:
>> log will become common facility with tracepoints support in next step.
>>
>> Signed-off-by: Denis V. Lunev <den@openvz.org>
>> ---
>>   Makefile.objs            | 1 -
>>   util/Makefile.objs       | 1 +
>>   qemu-log.c => util/log.c | 0
>>   3 files changed, 1 insertion(+), 1 deletion(-)
>>   rename qemu-log.c => util/log.c (100%)
>>
>> diff --git a/Makefile.objs b/Makefile.objs
>> index ecfe03c..ce32193 100644
>> --- a/Makefile.objs
>> +++ b/Makefile.objs
>> @@ -81,7 +81,6 @@ endif
>>   
>>   #######################################################################
>>   # Target-independent parts used in system and user emulation
>> -common-obj-y += qemu-log.o
>>   common-obj-y += tcg-runtime.o
>>   common-obj-y += hw/
>>   common-obj-y += qom/
>> diff --git a/util/Makefile.objs b/util/Makefile.objs
>> index d7cc399..a11915c 100644
>> --- a/util/Makefile.objs
>> +++ b/util/Makefile.objs
>> @@ -29,3 +29,4 @@ util-obj-y += qemu-coroutine.o qemu-coroutine-lock.o qemu-coroutine-io.o
>>   util-obj-y += qemu-coroutine-sleep.o
>>   util-obj-y += coroutine-$(CONFIG_COROUTINE_BACKEND).o
>>   util-obj-y += buffer.o
>> +util-obj-y += log.o
>> diff --git a/qemu-log.c b/util/log.c
>> similarity index 100%
>> rename from qemu-log.c
>> rename to util/log.c
>>
> Yes, this makes sense after the previous patch.  The declaration of the
> LOG_* constants is a bit ad hoc for util/, but I guess it's fine.
> Another possibility is to move it to trace/.
>
> I'll leave this to Stefan to judge.
>
> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
>
> Paolo
this is better to keep here to avoid linking problems. This subsystem
should be a part of EACH binary if we will improve logging
further in next steps.

'log' is utility from my point of view :)

Den

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [Qemu-devel] [PATCH 11/11] log: add "-d trace:PATTERN"
  2015-10-26 17:07       ` Eric Blake
@ 2015-10-26 19:23         ` Lluís Vilanova
  0 siblings, 0 replies; 27+ messages in thread
From: Lluís Vilanova @ 2015-10-26 19:23 UTC (permalink / raw)
  To: Eric Blake
  Cc: peter.maydell, qemu-devel, armbru, stefanha, pbonzini,
	Denis V. Lunev

Eric Blake writes:

> On 10/26/2015 07:12 AM, Lluís Vilanova wrote:
>> Denis V Lunev writes:
>> 
>>> From:  Paolo Bonzini <pbonzini@redhat.com>
>>> This is a bit easier to use than "-trace" if you are also enabling
>>> other kinds of logging.  It is also more discoverable for experienced
>>> QEMU users, and accessible from user-mode emulators.
>> 
>> I'm not sure this should be added, since the same functionality is also
>> available through "-trace enable=<pattern>" (and the shortcut "-trace
>> <pattern>").

> Having more than one way to do something is not necessarily bad; it does
> imply more maintenance to keep both ways working, but if one way is more
> discoverable than the other it may be worth it.

Certainly true. I just find it confusing to have the same functionality
available through different forms.


>> 
>> Also, I'd rather fold event name discovery into "-trace enable=?" (and the
>> shortcut "-trace ?"), mimicking the format already available for CPUs ("-cpu
>> ?").
>> 

> If we do that, we should also support '-trace enable=help', because ? is
> a shell metacharacter, and we have been moving towards using 'help'
> rather than '?' to minimize the need for shell quoting when asking for help.

Oh, I wasn't aware of the "deprecation" of '?'. Then it certainly makes more
sense to use 'help'.


Thanks,
  Lluis

-- 
"And it's much the same thing with knowledge, for whenever you learn
something new, the whole world becomes that much richer."
-- The Princess of Pure Reason, as told by Norton Juster in The Phantom
Tollbooth

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [Qemu-devel] [PATCH 01/11] trace: fix documentation
  2015-10-26  9:10 ` [Qemu-devel] [PATCH 01/11] trace: fix documentation Denis V. Lunev
@ 2015-10-26 20:05   ` Christian Borntraeger
  2015-10-28 15:15     ` Denis V. Lunev
  0 siblings, 1 reply; 27+ messages in thread
From: Christian Borntraeger @ 2015-10-26 20:05 UTC (permalink / raw)
  To: Denis V. Lunev; +Cc: peter.maydell, pbonzini, qemu-devel, stefanha, armbru

Am 26.10.2015 um 18:10 schrieb Denis V. Lunev:
> From: Paolo Bonzini <pbonzini@redhat.com>
> 
> Mention the ftrace backend too.
> 
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> Signed-off-by: Denis V. Lunev <den@openvz.org>
> Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>

Can you make that 
Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
?

I agree with the series, but have not fully reviewed it
:-)

Christian

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [Qemu-devel] [PATCH 01/11] trace: fix documentation
  2015-10-26 20:05   ` Christian Borntraeger
@ 2015-10-28 15:15     ` Denis V. Lunev
  2015-10-29 14:24       ` Christian Borntraeger
  2015-10-29 17:18       ` Stefan Hajnoczi
  0 siblings, 2 replies; 27+ messages in thread
From: Denis V. Lunev @ 2015-10-28 15:15 UTC (permalink / raw)
  To: Christian Borntraeger
  Cc: peter.maydell, pbonzini, qemu-devel, stefanha, armbru

On 10/26/2015 11:05 PM, Christian Borntraeger wrote:
> Am 26.10.2015 um 18:10 schrieb Denis V. Lunev:
>> From: Paolo Bonzini <pbonzini@redhat.com>
>>
>> Mention the ftrace backend too.
>>
>> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>> Signed-off-by: Denis V. Lunev <den@openvz.org>
>> Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
> Can you make that
> Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
> ?
>
> I agree with the series, but have not fully reviewed it
> :-)
>
> Christian
>
should I re-submit?

Den

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [Qemu-devel] [PATCH 01/11] trace: fix documentation
  2015-10-28 15:15     ` Denis V. Lunev
@ 2015-10-29 14:24       ` Christian Borntraeger
  2015-10-29 17:18       ` Stefan Hajnoczi
  1 sibling, 0 replies; 27+ messages in thread
From: Christian Borntraeger @ 2015-10-29 14:24 UTC (permalink / raw)
  To: Denis V. Lunev; +Cc: peter.maydell, pbonzini, qemu-devel, stefanha, armbru

Am 28.10.2015 um 16:15 schrieb Denis V. Lunev:
> On 10/26/2015 11:05 PM, Christian Borntraeger wrote:
>> Am 26.10.2015 um 18:10 schrieb Denis V. Lunev:
>>> From: Paolo Bonzini <pbonzini@redhat.com>
>>>
>>> Mention the ftrace backend too.
>>>
>>> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>>> Signed-off-by: Denis V. Lunev <den@openvz.org>
>>> Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
>> Can you make that
>> Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
>> ?
>>
>> I agree with the series, but have not fully reviewed it
>> :-)
>>
>> Christian
>>
> should I re-submit?

Whoever commits this series can change it as well.

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [Qemu-devel] [PATCH 01/11] trace: fix documentation
  2015-10-28 15:15     ` Denis V. Lunev
  2015-10-29 14:24       ` Christian Borntraeger
@ 2015-10-29 17:18       ` Stefan Hajnoczi
  1 sibling, 0 replies; 27+ messages in thread
From: Stefan Hajnoczi @ 2015-10-29 17:18 UTC (permalink / raw)
  To: Denis V. Lunev
  Cc: Christian Borntraeger, pbonzini, qemu-devel, armbru,
	peter.maydell

[-- Attachment #1: Type: text/plain, Size: 715 bytes --]

On Wed, Oct 28, 2015 at 06:15:05PM +0300, Denis V. Lunev wrote:
> On 10/26/2015 11:05 PM, Christian Borntraeger wrote:
> >Am 26.10.2015 um 18:10 schrieb Denis V. Lunev:
> >>From: Paolo Bonzini <pbonzini@redhat.com>
> >>
> >>Mention the ftrace backend too.
> >>
> >>Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> >>Signed-off-by: Denis V. Lunev <den@openvz.org>
> >>Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
> >Can you make that
> >Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
> >?
> >
> >I agree with the series, but have not fully reviewed it
> >:-)
> >
> >Christian
> >
> should I re-submit?

You don't need to re-submit for this change, it can be done when merging
the patch.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 473 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [Qemu-devel] [PATCH 03/11] trace: split trace_init_file out of trace_init_backends
  2015-10-26  9:10 ` [Qemu-devel] [PATCH 03/11] trace: split trace_init_file " Denis V. Lunev
@ 2015-10-29 17:23   ` Stefan Hajnoczi
  2015-10-29 17:52     ` Denis V. Lunev
  0 siblings, 1 reply; 27+ messages in thread
From: Stefan Hajnoczi @ 2015-10-29 17:23 UTC (permalink / raw)
  To: Denis V. Lunev; +Cc: peter.maydell, pbonzini, qemu-devel, armbru

[-- Attachment #1: Type: text/plain, Size: 1224 bytes --]

On Mon, Oct 26, 2015 at 12:10:20PM +0300, Denis V. Lunev wrote:
> From: Paolo Bonzini <pbonzini@redhat.com>
> 
> This is cleaner, and improves error reporting with -daemonize.
> 
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> Signed-off-by: Denis V. Lunev <den@openvz.org>
> Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
> ---
>  qemu-io.c       |  2 +-
>  trace/control.c | 17 ++++++++++++-----
>  trace/control.h | 13 ++++++++++++-
>  trace/simple.c  |  6 ++----
>  trace/simple.h  |  4 ++--
>  vl.c            | 13 +++++++++----
>  6 files changed, 38 insertions(+), 17 deletions(-)
> 
> diff --git a/qemu-io.c b/qemu-io.c
> index 269f17c..fbddf82 100644
> --- a/qemu-io.c
> +++ b/qemu-io.c
> @@ -440,7 +440,7 @@ int main(int argc, char **argv)
>              }
>              break;
>          case 'T':
> -            if (!trace_init_backends(optarg, NULL)) {
> +            if (!trace_init_backends()) {

The previous patch dropped the 2nd argument to trace_init_backends().  I
guess that means the previous patch doesn't compile by itself?

Please move this hunk to the previous patch so that git-bisect(1) works
(i.e. each commit builds successfully and runs).

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 473 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [Qemu-devel] [PATCH v2 00/11] simplify usage of tracepoints, and connect them to logging
  2015-10-26  9:10 [Qemu-devel] [PATCH v2 00/11] simplify usage of tracepoints, and connect them to logging Denis V. Lunev
                   ` (9 preceding siblings ...)
  2015-10-26  9:14 ` [Qemu-devel] [PATCH 10/11] trace: switch default backend to "log" Denis V. Lunev
@ 2015-10-29 17:38 ` Stefan Hajnoczi
  10 siblings, 0 replies; 27+ messages in thread
From: Stefan Hajnoczi @ 2015-10-29 17:38 UTC (permalink / raw)
  To: Denis V. Lunev; +Cc: peter.maydell, pbonzini, qemu-devel, armbru

[-- Attachment #1: Type: text/plain, Size: 1212 bytes --]

On Mon, Oct 26, 2015 at 12:10:17PM +0300, Denis V. Lunev wrote:
> This series does three things:
> 
> 1) add a "-trace [enable=]foo" option to enable one or more trace
> events, and a "-trace help" option to show the list of tracepoints
> (patches 4-5)
> 
> 2) change the stderr tracing backend so that it prints to the
> -D log file, and enable it by default.  "-trace file=..." is
> now a synonym of -D if the log backend is enabled (patches 7-8)
> 
> 3) add a "-d trace:foo" option that is a synonym for "-trace foo";
> this makes the new functionality more discoverable to people used
> to "-d", makes it available for user-mode emulation (which does
> not have -trace), and is somewhat nice if you want to enable both
> tracepoints and some other "-d" flag (patch 9).  When globbing
> it is also less susceptible to unwanted shell expansion.
> 
> For example, you can trace block device I/O and save the result
> to a file just by adding "-trace bdrv_aio_*,file=trace.txt", or
> correlate it to guest PCs with "-d exec,nochain,trace:bdrv_aio_*".
> 
> Opinions?  I would like to have this in 2.5 if there is agreement.

Looks good overall, please see comments on individual patches.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 473 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [Qemu-devel] [PATCH 03/11] trace: split trace_init_file out of trace_init_backends
  2015-10-29 17:23   ` Stefan Hajnoczi
@ 2015-10-29 17:52     ` Denis V. Lunev
  0 siblings, 0 replies; 27+ messages in thread
From: Denis V. Lunev @ 2015-10-29 17:52 UTC (permalink / raw)
  To: Stefan Hajnoczi; +Cc: peter.maydell, pbonzini, qemu-devel, armbru

On 10/29/2015 08:23 PM, Stefan Hajnoczi wrote:
> On Mon, Oct 26, 2015 at 12:10:20PM +0300, Denis V. Lunev wrote:
>> From: Paolo Bonzini <pbonzini@redhat.com>
>>
>> This is cleaner, and improves error reporting with -daemonize.
>>
>> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>> Signed-off-by: Denis V. Lunev <den@openvz.org>
>> Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
>> ---
>>   qemu-io.c       |  2 +-
>>   trace/control.c | 17 ++++++++++++-----
>>   trace/control.h | 13 ++++++++++++-
>>   trace/simple.c  |  6 ++----
>>   trace/simple.h  |  4 ++--
>>   vl.c            | 13 +++++++++----
>>   6 files changed, 38 insertions(+), 17 deletions(-)
>>
>> diff --git a/qemu-io.c b/qemu-io.c
>> index 269f17c..fbddf82 100644
>> --- a/qemu-io.c
>> +++ b/qemu-io.c
>> @@ -440,7 +440,7 @@ int main(int argc, char **argv)
>>               }
>>               break;
>>           case 'T':
>> -            if (!trace_init_backends(optarg, NULL)) {
>> +            if (!trace_init_backends()) {
> The previous patch dropped the 2nd argument to trace_init_backends().  I
> guess that means the previous patch doesn't compile by itself?
>
> Please move this hunk to the previous patch so that git-bisect(1) works
> (i.e. each commit builds successfully and runs).
yes, you are right.

I have mistaken fixing Paolo's patchset. This needs to be addressed.
I'll do this in a couple of hours when I'll be at home.

Den

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [Qemu-devel] [PATCH 09/11] trace: convert stderr backend to log
  2015-10-29 20:44 [Qemu-devel] [PATCH v3 " Denis V. Lunev
@ 2015-10-29 20:44 ` Denis V. Lunev
  0 siblings, 0 replies; 27+ messages in thread
From: Denis V. Lunev @ 2015-10-29 20:44 UTC (permalink / raw)
  Cc: Paolo Bonzini, qemu-devel, Denis V. Lunev

From: Paolo Bonzini <pbonzini@redhat.com>

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Denis V. Lunev <den@openvz.org>
Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
---
 configure                                       |  4 ++--
 include/qemu/log.h                              |  1 +
 scripts/tracetool/backend/{stderr.py => log.py} |  9 +++++----
 trace/control.c                                 | 10 ++++++++++
 util/log.c                                      |  3 +++
 vl.c                                            |  2 ++
 6 files changed, 23 insertions(+), 6 deletions(-)
 rename scripts/tracetool/backend/{stderr.py => log.py} (78%)

diff --git a/configure b/configure
index 7a1d08d..5e65dd5 100755
--- a/configure
+++ b/configure
@@ -5300,8 +5300,8 @@ if have_backend "simple"; then
   # Set the appropriate trace file.
   trace_file="\"$trace_file-\" FMT_pid"
 fi
-if have_backend "stderr"; then
-  echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak
+if have_backend "log"; then
+  echo "CONFIG_TRACE_LOG=y" >> $config_host_mak
 fi
 if have_backend "ust"; then
   echo "CONFIG_TRACE_UST=y" >> $config_host_mak
diff --git a/include/qemu/log.h b/include/qemu/log.h
index ed57a3d..5a0fbe3 100644
--- a/include/qemu/log.h
+++ b/include/qemu/log.h
@@ -38,6 +38,7 @@ static inline bool qemu_log_enabled(void)
 #define LOG_GUEST_ERROR    (1 << 11)
 #define CPU_LOG_MMU        (1 << 12)
 #define CPU_LOG_TB_NOCHAIN (1 << 13)
+#define LOG_TRACE          (1 << 14)
 
 /* Returns true if a bit is set in the current loglevel mask
  */
diff --git a/scripts/tracetool/backend/stderr.py b/scripts/tracetool/backend/log.py
similarity index 78%
rename from scripts/tracetool/backend/stderr.py
rename to scripts/tracetool/backend/log.py
index ca58054..a62c310 100644
--- a/scripts/tracetool/backend/stderr.py
+++ b/scripts/tracetool/backend/log.py
@@ -25,6 +25,7 @@ def generate_h_begin(events):
         '#include <sys/types.h>',
         '#include <unistd.h>',
         '#include "trace/control.h"',
+        '#include "qemu/log.h"',
         '')
 
 
@@ -36,10 +37,10 @@ def generate_h(event):
     out('    if (trace_event_get_state(%(event_id)s)) {',
         '        struct timeval _now;',
         '        gettimeofday(&_now, NULL);',
-        '        fprintf(stderr, "%%d@%%zd.%%06zd:%(name)s " %(fmt)s "\\n",',
-        '                        getpid(),',
-        '                        (size_t)_now.tv_sec, (size_t)_now.tv_usec',
-        '                        %(argnames)s);',
+        '        qemu_log_mask(LOG_TRACE, "%%d@%%zd.%%06zd:%(name)s " %(fmt)s "\\n",',
+        '                      getpid(),',
+        '                      (size_t)_now.tv_sec, (size_t)_now.tv_usec',
+        '                      %(argnames)s);',
         '    }',
         event_id="TRACE_" + event.name.upper(),
         name=event.name,
diff --git a/trace/control.c b/trace/control.c
index 7c84795..9a1e381 100644
--- a/trace/control.c
+++ b/trace/control.c
@@ -14,6 +14,9 @@
 #ifdef CONFIG_TRACE_FTRACE
 #include "trace/ftrace.h"
 #endif
+#ifdef CONFIG_TRACE_LOG
+#include "qemu/log.h"
+#endif
 #include "qemu/error-report.h"
 
 TraceEvent *trace_event_name(const char *name)
@@ -171,6 +174,13 @@ void trace_init_file(const char *file)
 {
 #ifdef CONFIG_TRACE_SIMPLE
     st_set_trace_file(file);
+#elif defined CONFIG_TRACE_LOG
+    /* If both the simple and the log backends are enabled, "-trace file"
+     * only applies to the simple backend; use "-D" for the log backend.
+     */
+    if (file) {
+        qemu_set_log_filename(file);
+    }
 #else
     if (file) {
         fprintf(stderr, "error: -trace file=...: "
diff --git a/util/log.c b/util/log.c
index efd07c8..5c641a0 100644
--- a/util/log.c
+++ b/util/log.c
@@ -51,6 +51,9 @@ void qemu_log_mask(int mask, const char *fmt, ...)
 void do_qemu_set_log(int log_flags, bool use_own_buffers)
 {
     qemu_loglevel = log_flags;
+#ifdef CONFIG_TRACE_LOG
+    qemu_loglevel |= LOG_TRACE;
+#endif
     if (qemu_loglevel && !qemu_logfile) {
         if (logfilename) {
             qemu_logfile = fopen(logfilename, log_append ? "a" : "w");
diff --git a/vl.c b/vl.c
index 83ffd92..ca4f7a0 100644
--- a/vl.c
+++ b/vl.c
@@ -4093,6 +4093,8 @@ int main(int argc, char **argv, char **envp)
             exit(1);
         }
         qemu_set_log(mask);
+    } else {
+        qemu_set_log(0);
     }
 
     if (!trace_init_backends()) {
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [Qemu-devel] [PATCH 09/11] trace: convert stderr backend to log
  2016-01-07 13:55 [Qemu-devel] [PATCH v4 00/11] simplify usage of tracepoints, and connect them to logging Denis V. Lunev
@ 2016-01-07 13:55 ` Denis V. Lunev
  0 siblings, 0 replies; 27+ messages in thread
From: Denis V. Lunev @ 2016-01-07 13:55 UTC (permalink / raw)
  Cc: pbonzini, qemu-devel, stefanha, Denis V. Lunev

From: Paolo Bonzini <pbonzini@redhat.com>

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Denis V. Lunev <den@openvz.org>
Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
---
 configure                                       |  4 ++--
 include/qemu/log.h                              |  1 +
 scripts/tracetool/backend/{stderr.py => log.py} |  9 +++++----
 trace/control.c                                 | 10 ++++++++++
 util/log.c                                      |  3 +++
 vl.c                                            |  2 ++
 6 files changed, 23 insertions(+), 6 deletions(-)
 rename scripts/tracetool/backend/{stderr.py => log.py} (78%)

diff --git a/configure b/configure
index 83b40fc..76d9ae6 100755
--- a/configure
+++ b/configure
@@ -5375,8 +5375,8 @@ if have_backend "simple"; then
   # Set the appropriate trace file.
   trace_file="\"$trace_file-\" FMT_pid"
 fi
-if have_backend "stderr"; then
-  echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak
+if have_backend "log"; then
+  echo "CONFIG_TRACE_LOG=y" >> $config_host_mak
 fi
 if have_backend "ust"; then
   echo "CONFIG_TRACE_UST=y" >> $config_host_mak
diff --git a/include/qemu/log.h b/include/qemu/log.h
index 09722e3..30817f7 100644
--- a/include/qemu/log.h
+++ b/include/qemu/log.h
@@ -45,6 +45,7 @@ static inline bool qemu_log_separate(void)
 #define CPU_LOG_MMU        (1 << 12)
 #define CPU_LOG_TB_NOCHAIN (1 << 13)
 #define CPU_LOG_PAGE       (1 << 14)
+#define LOG_TRACE          (1 << 15)
 
 /* Returns true if a bit is set in the current loglevel mask
  */
diff --git a/scripts/tracetool/backend/stderr.py b/scripts/tracetool/backend/log.py
similarity index 78%
rename from scripts/tracetool/backend/stderr.py
rename to scripts/tracetool/backend/log.py
index ca58054..a62c310 100644
--- a/scripts/tracetool/backend/stderr.py
+++ b/scripts/tracetool/backend/log.py
@@ -25,6 +25,7 @@ def generate_h_begin(events):
         '#include <sys/types.h>',
         '#include <unistd.h>',
         '#include "trace/control.h"',
+        '#include "qemu/log.h"',
         '')
 
 
@@ -36,10 +37,10 @@ def generate_h(event):
     out('    if (trace_event_get_state(%(event_id)s)) {',
         '        struct timeval _now;',
         '        gettimeofday(&_now, NULL);',
-        '        fprintf(stderr, "%%d@%%zd.%%06zd:%(name)s " %(fmt)s "\\n",',
-        '                        getpid(),',
-        '                        (size_t)_now.tv_sec, (size_t)_now.tv_usec',
-        '                        %(argnames)s);',
+        '        qemu_log_mask(LOG_TRACE, "%%d@%%zd.%%06zd:%(name)s " %(fmt)s "\\n",',
+        '                      getpid(),',
+        '                      (size_t)_now.tv_sec, (size_t)_now.tv_usec',
+        '                      %(argnames)s);',
         '    }',
         event_id="TRACE_" + event.name.upper(),
         name=event.name,
diff --git a/trace/control.c b/trace/control.c
index 7c84795..9a1e381 100644
--- a/trace/control.c
+++ b/trace/control.c
@@ -14,6 +14,9 @@
 #ifdef CONFIG_TRACE_FTRACE
 #include "trace/ftrace.h"
 #endif
+#ifdef CONFIG_TRACE_LOG
+#include "qemu/log.h"
+#endif
 #include "qemu/error-report.h"
 
 TraceEvent *trace_event_name(const char *name)
@@ -171,6 +174,13 @@ void trace_init_file(const char *file)
 {
 #ifdef CONFIG_TRACE_SIMPLE
     st_set_trace_file(file);
+#elif defined CONFIG_TRACE_LOG
+    /* If both the simple and the log backends are enabled, "-trace file"
+     * only applies to the simple backend; use "-D" for the log backend.
+     */
+    if (file) {
+        qemu_set_log_filename(file);
+    }
 #else
     if (file) {
         fprintf(stderr, "error: -trace file=...: "
diff --git a/util/log.c b/util/log.c
index 901b930..37185a5 100644
--- a/util/log.c
+++ b/util/log.c
@@ -51,6 +51,9 @@ void qemu_log_mask(int mask, const char *fmt, ...)
 void do_qemu_set_log(int log_flags, bool use_own_buffers)
 {
     qemu_loglevel = log_flags;
+#ifdef CONFIG_TRACE_LOG
+    qemu_loglevel |= LOG_TRACE;
+#endif
     if (qemu_loglevel && !qemu_logfile) {
         if (logfilename) {
             qemu_logfile = fopen(logfilename, log_append ? "a" : "w");
diff --git a/vl.c b/vl.c
index 01b39d4..6720839 100644
--- a/vl.c
+++ b/vl.c
@@ -4121,6 +4121,8 @@ int main(int argc, char **argv, char **envp)
             exit(1);
         }
         qemu_set_log(mask);
+    } else {
+        qemu_set_log(0);
     }
 
     if (!trace_init_backends()) {
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 27+ messages in thread

end of thread, other threads:[~2016-01-07 13:55 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-10-26  9:10 [Qemu-devel] [PATCH v2 00/11] simplify usage of tracepoints, and connect them to logging Denis V. Lunev
2015-10-26  9:10 ` [Qemu-devel] [PATCH 01/11] trace: fix documentation Denis V. Lunev
2015-10-26 20:05   ` Christian Borntraeger
2015-10-28 15:15     ` Denis V. Lunev
2015-10-29 14:24       ` Christian Borntraeger
2015-10-29 17:18       ` Stefan Hajnoczi
2015-10-26  9:10 ` [Qemu-devel] [PATCH 02/11] trace: split trace_init_events out of trace_init_backends Denis V. Lunev
2015-10-26  9:10 ` [Qemu-devel] [PATCH 03/11] trace: split trace_init_file " Denis V. Lunev
2015-10-29 17:23   ` Stefan Hajnoczi
2015-10-29 17:52     ` Denis V. Lunev
2015-10-26  9:10 ` [Qemu-devel] [PATCH 04/11] trace: no need to call trace_backend_init in different branches now Denis V. Lunev
2015-10-26 17:18   ` Paolo Bonzini
2015-10-26  9:10 ` [Qemu-devel] [PATCH 05/11] trace: add "-trace enable=..." Denis V. Lunev
2015-10-26  9:10 ` [Qemu-devel] [PATCH 06/11] trace: add "-trace help" Denis V. Lunev
2015-10-26  9:10 ` [Qemu-devel] [PATCH 07/11] log: do not unnecessarily include qom/cpu.h Denis V. Lunev
2015-10-26  9:10 ` [Qemu-devel] [PATCH 08/11] log: move qemu-log.c into util/ directory Denis V. Lunev
2015-10-26 17:20   ` Paolo Bonzini
2015-10-26 18:24     ` Denis V. Lunev
2015-10-26  9:10 ` [Qemu-devel] [PATCH 09/11] trace: convert stderr backend to log Denis V. Lunev
2015-10-26  9:14 ` [Qemu-devel] [PATCH 10/11] trace: switch default backend to "log" Denis V. Lunev
2015-10-26  9:14   ` [Qemu-devel] [PATCH 11/11] log: add "-d trace:PATTERN" Denis V. Lunev
2015-10-26 13:12     ` Lluís Vilanova
2015-10-26 17:07       ` Eric Blake
2015-10-26 19:23         ` Lluís Vilanova
2015-10-29 17:38 ` [Qemu-devel] [PATCH v2 00/11] simplify usage of tracepoints, and connect them to logging Stefan Hajnoczi
  -- strict thread matches above, loose matches on Subject: below --
2015-10-29 20:44 [Qemu-devel] [PATCH v3 " Denis V. Lunev
2015-10-29 20:44 ` [Qemu-devel] [PATCH 09/11] trace: convert stderr backend to log Denis V. Lunev
2016-01-07 13:55 [Qemu-devel] [PATCH v4 00/11] simplify usage of tracepoints, and connect them to logging Denis V. Lunev
2016-01-07 13:55 ` [Qemu-devel] [PATCH 09/11] trace: convert stderr backend to log Denis V. Lunev

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).