Patchwork trace: allow disabling events in events file

login
register
mail settings
Submitter Gerd Hoffmann
Date Oct. 26, 2012, 11:46 a.m.
Message ID <1351251994-12846-1-git-send-email-kraxel@redhat.com>
Download mbox | patch
Permalink /patch/194447/
State New
Headers show

Comments

Gerd Hoffmann - Oct. 26, 2012, 11:46 a.m.
Disable trace events prefixed with a '-'.  Useful
to enable a group of tracepoints with exceptions,
like this:

  usb_xhci_port_*
  -usb_xhci_port_read

which will enable all xhci port tracepoints except reads.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 trace/control.c |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletions(-)
Stefan Hajnoczi - Nov. 5, 2012, 7:46 a.m.
On Fri, Oct 26, 2012 at 01:46:34PM +0200, Gerd Hoffmann wrote:
> Disable trace events prefixed with a '-'.  Useful
> to enable a group of tracepoints with exceptions,
> like this:
> 
>   usb_xhci_port_*
>   -usb_xhci_port_read
> 
> which will enable all xhci port tracepoints except reads.
> 
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> ---
>  trace/control.c |    9 ++++++++-
>  1 files changed, 8 insertions(+), 1 deletions(-)

Sorry for the late reply.  Looks good I will send a patch to update the documentation.

Applied to the tracing tree:
http://github.com/stefanha/qemu/commits/tracing

Stefan

Patch

diff --git a/trace/control.c b/trace/control.c
index 22d5863..be05efb 100644
--- a/trace/control.c
+++ b/trace/control.c
@@ -12,6 +12,8 @@ 
 
 void trace_backend_init_events(const char *fname)
 {
+    int ret;
+
     if (fname == NULL) {
         return;
     }
@@ -30,7 +32,12 @@  void trace_backend_init_events(const char *fname)
             if ('#' == line_buf[0]) { /* skip commented lines */
                 continue;
             }
-            if (!trace_event_set_state(line_buf, true)) {
+            if ('-' == line_buf[0]) {
+                ret = trace_event_set_state(line_buf+1, false);
+            } else {
+                ret = trace_event_set_state(line_buf, true);
+            }
+            if (!ret) {
                 fprintf(stderr,
                         "error: trace event '%s' does not exist\n", line_buf);
                 exit(1);