qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v2] trace: Add wildcard trace event support
@ 2011-10-31  3:29 Mark Wu
  2011-10-31 14:05 ` Stefan Hajnoczi
  0 siblings, 1 reply; 3+ messages in thread
From: Mark Wu @ 2011-10-31  3:29 UTC (permalink / raw)
  To: Stefan Hajnoczi; +Cc: qemu-devel

A basic wildcard matching is supported in both the monitor command
"trace-event" and the events list file. That means you can enable/disable
the events having a common prefix in a batch. For example, virtio-blk trace
events could be enabled using:
    trace-event virtio_blk_* on

Signed-off-by: Mark Wu <wudxw@linux.vnet.ibm.com>
---
 docs/tracing.txt |    9 ++++++++-
 net/queue.c      |    1 +
 trace/simple.c   |   19 +++++++++++++++++--
 trace/stderr.c   |   17 ++++++++++++++++-
 4 files changed, 42 insertions(+), 4 deletions(-)

diff --git a/docs/tracing.txt b/docs/tracing.txt
index 95ca16c..ea29f2c 100644
--- a/docs/tracing.txt
+++ b/docs/tracing.txt
@@ -132,12 +132,19 @@ This functionality is also provided through monitor commands:
   means disabled.
 
 * trace-event NAME on|off
-  Enable/disable a given trace event.
+  Enable/disable a given trace event or a group of events having common prefix
+  through wildcard.
 
 The "-trace events=<file>" command line argument can be used to enable the
 events listed in <file> from the very beginning of the program. This file must
 contain one event name per line.
 
+A basic wildcard matching is supported in both the monitor command "trace
+-event" and the events list file. That means you can enable/disable the events
+having a common prefix in a batch. For example, virtio-blk trace events could
+be enabled using:
+  trace-event virtio_blk_* on
+
 == Trace backends ==
 
 The "tracetool" script automates tedious trace event code generation and also
diff --git a/net/queue.c b/net/queue.c
index 1ab5247..41ffda8 100644
--- a/net/queue.c
+++ b/net/queue.c
@@ -258,3 +258,4 @@ void qemu_net_queue_flush(NetQueue *queue)
         g_free(packet);
     }
 }
+/*  */
diff --git a/trace/simple.c b/trace/simple.c
index b639dda..6339152 100644
--- a/trace/simple.c
+++ b/trace/simple.c
@@ -324,14 +324,29 @@ void trace_print_events(FILE *stream, fprintf_function stream_printf)
 bool trace_event_set_state(const char *name, bool state)
 {
     unsigned int i;
-
+    unsigned int len;
+    bool wildcard = false;
+    bool matched = false;
+
+    len = strlen(name);
+    if (len > 0 && name[len - 1] == '*') {
+        wildcard = true;
+        len -= 1;
+    }
     for (i = 0; i < NR_TRACE_EVENTS; i++) {
+        if (wildcard) {
+            if (!strncmp(trace_list[i].tp_name, name, len)) {
+                trace_list[i].state = state;
+                matched = true;
+            }
+            continue;
+        }
         if (!strcmp(trace_list[i].tp_name, name)) {
             trace_list[i].state = state;
             return true;
         }
     }
-    return false;
+    return matched;
 }
 
 /* Helper function to create a thread with signals blocked.  Use glib's
diff --git a/trace/stderr.c b/trace/stderr.c
index 7107c4a..0810d6f 100644
--- a/trace/stderr.c
+++ b/trace/stderr.c
@@ -15,14 +15,29 @@ void trace_print_events(FILE *stream, fprintf_function stream_printf)
 bool trace_event_set_state(const char *name, bool state)
 {
     unsigned int i;
+    unsigned int len;
+    bool wildcard = false;
+    bool matched = false;
 
+    len = strlen(name);
+    if (len > 0 && name[len - 1] == '*') {
+        wildcard = true;
+        len -= 1;
+    }
     for (i = 0; i < NR_TRACE_EVENTS; i++) {
+        if (wildcard) {
+            if (!strncmp(trace_list[i].tp_name, name, len)) {
+                trace_list[i].state = state;
+                matched = true;
+            }
+            continue;
+        }
         if (!strcmp(trace_list[i].tp_name, name)) {
             trace_list[i].state = state;
             return true;
         }
     }
-    return false;
+    return matched;
 }
 
 bool trace_backend_init(const char *events, const char *file)
-- 
1.7.1

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

* Re: [Qemu-devel] [PATCH v2] trace: Add wildcard trace event support
  2011-10-31  3:29 [Qemu-devel] [PATCH v2] trace: Add wildcard trace event support Mark Wu
@ 2011-10-31 14:05 ` Stefan Hajnoczi
  2011-11-01  2:12   ` Mark Wu
  0 siblings, 1 reply; 3+ messages in thread
From: Stefan Hajnoczi @ 2011-10-31 14:05 UTC (permalink / raw)
  To: Mark Wu; +Cc: Stefan Hajnoczi, qemu-devel

On Mon, Oct 31, 2011 at 11:29:04AM +0800, Mark Wu wrote:
> A basic wildcard matching is supported in both the monitor command
> "trace-event" and the events list file. That means you can enable/disable
> the events having a common prefix in a batch. For example, virtio-blk trace
> events could be enabled using:
>     trace-event virtio_blk_* on
> 
> Signed-off-by: Mark Wu <wudxw@linux.vnet.ibm.com>
> ---
>  docs/tracing.txt |    9 ++++++++-
>  net/queue.c      |    1 +
>  trace/simple.c   |   19 +++++++++++++++++--
>  trace/stderr.c   |   17 ++++++++++++++++-
>  4 files changed, 42 insertions(+), 4 deletions(-)

Thanks, applied to the tracing tree:
http://repo.or.cz/w/qemu/stefanha.git/shortlog/refs/heads/tracing

I removed the net/queue.c hunk from the patch.

Stefan

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

* Re: [Qemu-devel] [PATCH v2] trace: Add wildcard trace event support
  2011-10-31 14:05 ` Stefan Hajnoczi
@ 2011-11-01  2:12   ` Mark Wu
  0 siblings, 0 replies; 3+ messages in thread
From: Mark Wu @ 2011-11-01  2:12 UTC (permalink / raw)
  To: Stefan Hajnoczi; +Cc: Stefan Hajnoczi, qemu-devel

On 10/31/2011 10:05 PM, Stefan Hajnoczi wrote:
> >    net/queue.c      |    1 +
Oops!
Thanks. Very sorry for that! I will be more cautious.

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

end of thread, other threads:[~2011-11-01  2:13 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-10-31  3:29 [Qemu-devel] [PATCH v2] trace: Add wildcard trace event support Mark Wu
2011-10-31 14:05 ` Stefan Hajnoczi
2011-11-01  2:12   ` Mark Wu

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