qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v5 0/5] Fix UST backend for LTTng 2.x
@ 2013-10-25  0:46 Mohamad Gebai
  2013-10-25  0:46 ` [Qemu-devel] [PATCH v5 1/5] Fix configure script " Mohamad Gebai
                   ` (6 more replies)
  0 siblings, 7 replies; 16+ messages in thread
From: Mohamad Gebai @ 2013-10-25  0:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: stefanha, Mohamad Gebai, alex.bennee

Version 5

* Use pkg-config for lttng-ust and urcu-bp libraries in configure (hard-coded
  libraries as a fallback)
* s/Qemu/QEMU in docs/tracing.txt
* Better dependencies for ust-generated files in trace/Makefile.obj

Mohamad Gebai (5):
  Fix configure script for LTTng 2.x
  Modified the tracetool framework for LTTng 2.x
  Adapt Makefiles to the new LTTng ust interface
  Update documentation for LTTng ust tracing
  Add ust generated files to .gitignore

 .gitignore                               |  2 +
 Makefile                                 |  5 ++
 configure                                | 20 ++++++--
 docs/tracing.txt                         | 36 ++++++++++++++
 scripts/tracetool/backend/events.py      | 44 +++++++++++++++++
 scripts/tracetool/backend/ust.py         | 82 +++++++-------------------------
 scripts/tracetool/format/ust_events_c.py | 30 ++++++++++++
 scripts/tracetool/format/ust_events_h.py | 57 ++++++++++++++++++++++
 trace/Makefile.objs                      | 25 ++++++++++
 9 files changed, 230 insertions(+), 71 deletions(-)
 create mode 100644 scripts/tracetool/format/ust_events_c.py
 create mode 100644 scripts/tracetool/format/ust_events_h.py

-- 
1.8.4.rc3

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

* [Qemu-devel] [PATCH v5 1/5] Fix configure script for LTTng 2.x
  2013-10-25  0:46 [Qemu-devel] [PATCH v5 0/5] Fix UST backend for LTTng 2.x Mohamad Gebai
@ 2013-10-25  0:46 ` Mohamad Gebai
  2013-10-25 13:18   ` Alex Bennée
  2014-01-14 13:34   ` Stefan Hajnoczi
  2013-10-25  0:46 ` [Qemu-devel] [PATCH v5 2/5] Modified the tracetool framework " Mohamad Gebai
                   ` (5 subsequent siblings)
  6 siblings, 2 replies; 16+ messages in thread
From: Mohamad Gebai @ 2013-10-25  0:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: stefanha, Mohamad Gebai, alex.bennee

Signed-off-by: Mohamad Gebai <mohamad.gebai@polymtl.ca>
---
 configure | 20 +++++++++++++++-----
 1 file changed, 15 insertions(+), 5 deletions(-)

diff --git a/configure b/configure
index 57ee62a..f20ceaa 100755
--- a/configure
+++ b/configure
@@ -3284,15 +3284,25 @@ fi
 # For 'ust' backend, test if ust headers are present
 if test "$trace_backend" = "ust"; then
   cat > $TMPC << EOF
-#include <ust/tracepoint.h>
-#include <ust/marker.h>
+#include <lttng/tracepoint.h>
 int main(void) { return 0; }
 EOF
   if compile_prog "" "" ; then
-    LIBS="-lust -lurcu-bp $LIBS"
-    libs_qga="-lust -lurcu-bp $libs_qga"
+    if $pkg_config lttng-ust --exists; then
+      lttng_ust_libs=`$pkg_config --libs lttng-ust`
+    else
+      lttng_ust_libs="-llttng-ust"
+    fi
+    if $pkg_config liburcu-bp --exists; then
+      urcu_bp_libs=`$pkg_config --libs liburcu-bp`
+      else
+      urcu_bp_libs="-lurcu-bp"
+    fi
+
+    LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS"
+    libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga"
   else
-    error_exit "Trace backend 'ust' missing libust header files"
+    error_exit "Trace backend 'ust' missing lttng-ust header files"
   fi
 fi
 
-- 
1.8.4.rc3

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

* [Qemu-devel] [PATCH v5 2/5] Modified the tracetool framework for LTTng 2.x
  2013-10-25  0:46 [Qemu-devel] [PATCH v5 0/5] Fix UST backend for LTTng 2.x Mohamad Gebai
  2013-10-25  0:46 ` [Qemu-devel] [PATCH v5 1/5] Fix configure script " Mohamad Gebai
@ 2013-10-25  0:46 ` Mohamad Gebai
  2014-01-14 13:33   ` Stefan Hajnoczi
  2013-10-25  0:46 ` [Qemu-devel] [PATCH v5 3/5] Adapt Makefiles to the new LTTng ust interface Mohamad Gebai
                   ` (4 subsequent siblings)
  6 siblings, 1 reply; 16+ messages in thread
From: Mohamad Gebai @ 2013-10-25  0:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: stefanha, Mohamad Gebai, alex.bennee

* A new format is required to generate definitions for ust tracepoints.
  Files ust_events_h.py and ust_events_c.py define common macros, while
  new function ust_events_h in events.py does the actual definition of
  each tracepoint.
* ust.py generates the new interface for calling userspace tracepoints
  with LTTng 2.x, replacing trace_name(args) to tracepoint(name, args).
* As explained in ust_events_c.py, -Wredundant-decls gives a warning
  when compiling with gcc 4.7 or older. This is specific to lttng-ust so
  for now use a pragma clause to avoid getting a warning.

Signed-off-by: Mohamad Gebai <mohamad.gebai@polymtl.ca>
Reviewed-by: Alex Bennée <alex@bennee.com>
---
 scripts/tracetool/backend/events.py      | 44 +++++++++++++++++
 scripts/tracetool/backend/ust.py         | 82 +++++++-------------------------
 scripts/tracetool/format/ust_events_c.py | 30 ++++++++++++
 scripts/tracetool/format/ust_events_h.py | 57 ++++++++++++++++++++++
 4 files changed, 147 insertions(+), 66 deletions(-)
 create mode 100644 scripts/tracetool/format/ust_events_c.py
 create mode 100644 scripts/tracetool/format/ust_events_h.py

diff --git a/scripts/tracetool/backend/events.py b/scripts/tracetool/backend/events.py
index 5afce3e..1691c90 100644
--- a/scripts/tracetool/backend/events.py
+++ b/scripts/tracetool/backend/events.py
@@ -6,6 +6,8 @@ Generic event description.
 
 This is a dummy backend to establish appropriate frontend/backend compatibility
 checks.
+
+Generates tracepoint definitions for LTTng userspace tracing when using ust as a backend.
 """
 
 __author__     = "Lluís Vilanova <vilanova@ac.upc.edu>"
@@ -16,8 +18,50 @@ __maintainer__ = "Stefan Hajnoczi"
 __email__      = "stefanha@linux.vnet.ibm.com"
 
 
+from tracetool import out
+
 def events_h(events):
     pass
 
 def events_c(events):
     pass
+
+def ust_events_c(events):
+    pass
+
+def ust_events_h(events):
+    for e in events:
+        if len(e.args) > 0:
+            out('TRACEPOINT_EVENT(',
+                '   qemu,',
+                '   %(name)s,',
+                '   TP_ARGS(%(args)s),',
+                '   TP_FIELDS(',
+                name = e.name,
+                args = ", ".join(", ".join(i) for i in e.args),
+                )
+
+            for t,n in e.args:
+                if ('int' in t) or ('long' in t) or ('unsigned' in t) or ('size_t' in t):
+                    out('       ctf_integer(' + t + ', ' + n + ', ' + n + ')')
+                elif ('double' in t) or ('float' in t):
+                    out('       ctf_float(' + t + ', ' + n + ', ' + n + ')')
+                elif ('char *' in t) or ('char*' in t):
+                    out('       ctf_string(' + n + ', ' + n + ')')
+                elif ('void *' in t) or ('void*' in t):
+                    out('       ctf_integer_hex(unsigned long, ' + n + ', ' + n + ')')
+
+            out('   )',
+                ')',
+                '')
+
+        else:
+            out('TRACEPOINT_EVENT(',
+                '   qemu,',
+                '   %(name)s,',
+                '   TP_ARGS(void),',
+                '   TP_FIELDS()',
+                ')',
+                '',
+                name = e.name,
+                )
diff --git a/scripts/tracetool/backend/ust.py b/scripts/tracetool/backend/ust.py
index ea36995..10c0875 100644
--- a/scripts/tracetool/backend/ust.py
+++ b/scripts/tracetool/backend/ust.py
@@ -18,76 +18,26 @@ from tracetool import out
 
 PUBLIC = True
 
-
 def c(events):
-    out('#include <ust/marker.h>',
-        '#undef mutex_lock',
-        '#undef mutex_unlock',
-        '#undef inline',
-        '#undef wmb',
-        '#include "trace.h"')
+    pass
+
 
+def h(events):
+    out('#include <lttng/tracepoint.h>',
+        '#include "trace/generated-ust-provider.h"',
+        '')
     for e in events:
         argnames = ", ".join(e.args.names())
         if len(e.args) > 0:
-            argnames = ', ' + argnames
-
-            out('DEFINE_TRACE(ust_%(name)s);',
-                '',
-                'static void ust_%(name)s_probe(%(args)s)',
-                '{',
-                '    trace_mark(ust, %(name)s, %(fmt)s%(argnames)s);',
-                '}',
-                name = e.name,
-                args = e.args,
-                fmt = e.fmt,
-                argnames = argnames,
-                )
-
-        else:
-            out('DEFINE_TRACE(ust_%(name)s);',
-                '',
-                'static void ust_%(name)s_probe(%(args)s)',
-                '{',
-                '    trace_mark(ust, %(name)s, UST_MARKER_NOARGS);',
-                '}',
-                name = e.name,
-                args = e.args,
-                )
-
-    # register probes
-    out('',
-        'static void __attribute__((constructor)) trace_init(void)',
-        '{')
-
-    for e in events:
-        out('    register_trace_ust_%(name)s(ust_%(name)s_probe);',
+            argnames = ", " + argnames
+
+        out('static inline void trace_%(name)s(%(args)s)',
+            '{',
+            '    tracepoint(qemu, %(name)s%(tp_args)s);'
+            '',
+            '}',
+            '',
             name = e.name,
+            args = e.args,
+            tp_args = argnames,
             )
-
-    out('}')
-
-
-def h(events):
-    out('#include <ust/tracepoint.h>',
-        '#undef mutex_lock',
-        '#undef mutex_unlock',
-        '#undef inline',
-        '#undef wmb')
-
-    for e in events:
-        if len(e.args) > 0:
-            out('DECLARE_TRACE(ust_%(name)s, TP_PROTO(%(args)s), TP_ARGS(%(argnames)s));',
-                '#define trace_%(name)s trace_ust_%(name)s',
-                name = e.name,
-                args = e.args,
-                argnames = ", ".join(e.args.names()),
-                )
-
-        else:
-            out('_DECLARE_TRACEPOINT_NOARGS(ust_%(name)s);',
-                '#define trace_%(name)s trace_ust_%(name)s',
-                name = e.name,
-                )
-
-    out()
diff --git a/scripts/tracetool/format/ust_events_c.py b/scripts/tracetool/format/ust_events_c.py
new file mode 100644
index 0000000..71328f3
--- /dev/null
+++ b/scripts/tracetool/format/ust_events_c.py
@@ -0,0 +1,30 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+"""
+Generate .c for LTTng ust event description.
+"""
+
+__author__     = "Lluís Vilanova <vilanova@ac.upc.edu>"
+__copyright__  = "Copyright 2012, Lluís Vilanova <vilanova@ac.upc.edu>"
+__license__    = "GPL version 2 or (at your option) any later version"
+
+__maintainer__ = "Stefan Hajnoczi"
+__email__      = "stefanha@linux.vnet.ibm.com"
+
+
+from tracetool import out
+
+
+def begin(events):
+    out('/* This file is autogenerated by tracetool, do not edit. */',
+        '',
+        '#define TRACEPOINT_DEFINE',
+        '#define TRACEPOINT_CREATE_PROBES',
+        '',
+        '/* If gcc version 4.7 or older is used, LTTng ust gives a warning when compiling with',
+        '   -Wredundant-decls.',
+        ' */',
+        '#pragma GCC diagnostic ignored "-Wredundant-decls"',
+        '',
+        '#include "generated-ust-provider.h"')
diff --git a/scripts/tracetool/format/ust_events_h.py b/scripts/tracetool/format/ust_events_h.py
new file mode 100644
index 0000000..b8e3de1
--- /dev/null
+++ b/scripts/tracetool/format/ust_events_h.py
@@ -0,0 +1,57 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+"""
+Generate .h for LTTng ust event description.
+"""
+
+__author__     = "Lluís Vilanova <vilanova@ac.upc.edu>"
+__copyright__  = "Copyright 2012, Lluís Vilanova <vilanova@ac.upc.edu>"
+__license__    = "GPL version 2 or (at your option) any later version"
+
+__maintainer__ = "Stefan Hajnoczi"
+__email__      = "stefanha@linux.vnet.ibm.com"
+
+
+from tracetool import out
+
+
+def begin(events):
+    out('/* This file is autogenerated by tracetool, do not edit. */',
+        '',
+        '#undef TRACEPOINT_PROVIDER',
+        '#define TRACEPOINT_PROVIDER qemu',
+        '',
+        '#undef TRACEPOINT_INCLUDE_FILE',
+        '#define TRACEPOINT_INCLUDE_FILE ./generated-ust-provider.h',
+        '',
+        '#if !defined (TRACE__GENERATED_UST_H) || defined(TRACEPOINT_HEADER_MULTI_READ)',
+        '#define TRACE__GENERATED_UST_H',
+        '',
+        '#include "qemu-common.h"',
+        '#include <lttng/tracepoint.h>',
+        '',
+        '/*',
+        ' * LTTng ust 2.0 does not allow you to use TP_ARGS(void) for tracepoints',
+        ' * requiring no arguments. We define these macros introduced in more recent'
+        ' * versions of LTTng ust as a workaround',
+        ' */',
+        '#ifndef _TP_EXPROTO1',
+        '#define _TP_EXPROTO1(a)               void',
+        '#endif',
+        '#ifndef _TP_EXDATA_PROTO1',
+        '#define _TP_EXDATA_PROTO1(a)          void *__tp_data',
+        '#endif',
+        '#ifndef _TP_EXDATA_VAR1',
+        '#define _TP_EXDATA_VAR1(a)            __tp_data',
+        '#endif',
+        '#ifndef _TP_EXVAR1',
+        '#define _TP_EXVAR1(a)',
+        '#endif',
+        '')
+
+def end(events):
+    out('#endif /* TRACE__GENERATED_UST_H */',
+        '',
+        '/* This part must be outside ifdef protection */',
+        '#include <lttng/tracepoint-event.h>')
-- 
1.8.4.rc3

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

* [Qemu-devel] [PATCH v5 3/5] Adapt Makefiles to the new LTTng ust interface
  2013-10-25  0:46 [Qemu-devel] [PATCH v5 0/5] Fix UST backend for LTTng 2.x Mohamad Gebai
  2013-10-25  0:46 ` [Qemu-devel] [PATCH v5 1/5] Fix configure script " Mohamad Gebai
  2013-10-25  0:46 ` [Qemu-devel] [PATCH v5 2/5] Modified the tracetool framework " Mohamad Gebai
@ 2013-10-25  0:46 ` Mohamad Gebai
  2013-10-25  0:46 ` [Qemu-devel] [PATCH v5 4/5] Update documentation for LTTng ust tracing Mohamad Gebai
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 16+ messages in thread
From: Mohamad Gebai @ 2013-10-25  0:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: stefanha, Mohamad Gebai, alex.bennee

Add generation of new files for LTTng ust.

Signed-off-by: Mohamad Gebai <mohamad.gebai@polymtl.ca>
---
 Makefile            |  5 +++++
 trace/Makefile.objs | 25 +++++++++++++++++++++++++
 2 files changed, 30 insertions(+)

diff --git a/Makefile b/Makefile
index b15003f..7935d9b 100644
--- a/Makefile
+++ b/Makefile
@@ -50,6 +50,11 @@ GENERATED_HEADERS += trace/generated-tracers-dtrace.h
 endif
 GENERATED_SOURCES += trace/generated-tracers.c
 
+ifeq ($(TRACE_BACKEND),ust)
+GENERATED_HEADERS += trace/generated-ust-provider.h
+GENERATED_SOURCES += trace/generated-ust.c
+endif
+
 # Don't try to regenerate Makefile or configure
 # We don't generate any of them
 Makefile: ;
diff --git a/trace/Makefile.objs b/trace/Makefile.objs
index 3b88e49..d484f02 100644
--- a/trace/Makefile.objs
+++ b/trace/Makefile.objs
@@ -1,6 +1,30 @@
 # -*- mode: makefile -*-
 
 ######################################################################
+# Auto-generated event descriptions for LTTng ust code
+
+ifeq ($(TRACE_BACKEND),ust)
+$(obj)/generated-ust-provider.h: $(obj)/generated-ust-provider.h-timestamp
+$(obj)/generated-ust-provider.h-timestamp: $(SRC_PATH)/trace-events
+	$(call quiet-command,$(TRACETOOL) \
+		--format=ust-events-h \
+		--backend=events \
+		< $< > $@,"  GEN   $(patsubst %-timestamp,%,$@)")
+	@cmp -s $@ $(patsubst %-timestamp,%,$@) || cp $@ $(patsubst %-timestamp,%,$@)
+
+$(obj)/generated-ust.c: $(obj)/generated-ust.c-timestamp $(BUILD_DIR)/config-host.mak
+$(obj)/generated-ust.c-timestamp: $(SRC_PATH)/trace-events
+	$(call quiet-command,$(TRACETOOL) \
+		--format=ust-events-c \
+		--backend=events \
+		< $< > $@,"  GEN   $(patsubst %-timestamp,%,$@)")
+	@cmp -s $@ $(patsubst %-timestamp,%,$@) || cp $@ $(patsubst %-timestamp,%,$@)
+
+$(obj)/generated-events.h: $(obj)/generated-ust-provider.h
+$(obj)/generated-events.c: $(obj)/generated-ust.c
+endif
+
+######################################################################
 # Auto-generated event descriptions
 
 $(obj)/generated-events.h: $(obj)/generated-events.h-timestamp
@@ -77,5 +101,6 @@ util-obj-$(CONFIG_TRACE_DEFAULT) += default.o
 util-obj-$(CONFIG_TRACE_SIMPLE) += simple.o
 util-obj-$(CONFIG_TRACE_STDERR) += stderr.o
 util-obj-$(CONFIG_TRACE_FTRACE) += ftrace.o
+util-obj-$(CONFIG_TRACE_UST) += generated-ust.o
 util-obj-y += control.o
 util-obj-y += generated-tracers.o
-- 
1.8.4.rc3

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

* [Qemu-devel] [PATCH v5 4/5] Update documentation for LTTng ust tracing
  2013-10-25  0:46 [Qemu-devel] [PATCH v5 0/5] Fix UST backend for LTTng 2.x Mohamad Gebai
                   ` (2 preceding siblings ...)
  2013-10-25  0:46 ` [Qemu-devel] [PATCH v5 3/5] Adapt Makefiles to the new LTTng ust interface Mohamad Gebai
@ 2013-10-25  0:46 ` Mohamad Gebai
  2013-10-25 11:23   ` Alex Bennée
  2013-10-25  0:46 ` [Qemu-devel] [PATCH v5 5/5] Add ust generated files to .gitignore Mohamad Gebai
                   ` (2 subsequent siblings)
  6 siblings, 1 reply; 16+ messages in thread
From: Mohamad Gebai @ 2013-10-25  0:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: stefanha, Mohamad Gebai, alex.bennee

Signed-off-by: Mohamad Gebai <mohamad.gebai@polymtl.ca>
---
 docs/tracing.txt | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/docs/tracing.txt b/docs/tracing.txt
index bfc261b..bf2e15c 100644
--- a/docs/tracing.txt
+++ b/docs/tracing.txt
@@ -214,6 +214,42 @@ The "ust" backend uses the LTTng Userspace Tracer library.  There are no
 monitor commands built into QEMU, instead UST utilities should be used to list,
 enable/disable, and dump traces.
 
+Package lttng-tools is required for userspace tracing. You must ensure that the
+current user belongs to the "tracing" group, or manually launch the
+lttng-sessiond daemon for the current user prior to running any instance of
+QEMU.
+
+While running an instrumented QEMU, LTTng should be able to list all available
+events:
+
+    lttng list -u
+
+Create tracing session:
+
+    lttng create mysession
+
+Enable events:
+
+    lttng enable-event qemu:g_malloc -u
+
+Where the events can either be a comma-separated list of events, or "-a" to
+enable all tracepoint events. Start and stop tracing as needed:
+
+    lttng start
+    lttng stop
+
+View the trace:
+
+    lttng view
+
+Destroy tracing session:
+
+    lttng destroy
+
+Babeltrace can be used at any later time to view the trace:
+
+    babeltrace $HOME/lttng-traces/mysession-<date>-<time>
+
 === SystemTap ===
 
 The "dtrace" backend uses DTrace sdt probes but has only been tested with
-- 
1.8.4.rc3

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

* [Qemu-devel] [PATCH v5 5/5] Add ust generated files to .gitignore
  2013-10-25  0:46 [Qemu-devel] [PATCH v5 0/5] Fix UST backend for LTTng 2.x Mohamad Gebai
                   ` (3 preceding siblings ...)
  2013-10-25  0:46 ` [Qemu-devel] [PATCH v5 4/5] Update documentation for LTTng ust tracing Mohamad Gebai
@ 2013-10-25  0:46 ` Mohamad Gebai
  2013-11-04 16:41 ` [Qemu-devel] [PATCH v5 0/5] Fix UST backend for LTTng 2.x Alex Bennée
  2014-01-14 13:35 ` Stefan Hajnoczi
  6 siblings, 0 replies; 16+ messages in thread
From: Mohamad Gebai @ 2013-10-25  0:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: stefanha, Mohamad Gebai, alex.bennee

Signed-off-by: Mohamad Gebai <mohamad.gebai@polymtl.ca>
Reviewed-by: Alex Bennée <alex@bennee.com>
---
 .gitignore | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/.gitignore b/.gitignore
index 8e1b73f..e024a76 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,6 +9,8 @@ trace/generated-tracers-dtrace.h
 trace/generated-tracers.dtrace
 trace/generated-events.h
 trace/generated-events.c
+trace/generated-ust-provider.h
+trace/generated-ust.c
 libcacard/trace/generated-tracers.c
 *-timestamp
 *-softmmu
-- 
1.8.4.rc3

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

* Re: [Qemu-devel] [PATCH v5 4/5] Update documentation for LTTng ust tracing
  2013-10-25  0:46 ` [Qemu-devel] [PATCH v5 4/5] Update documentation for LTTng ust tracing Mohamad Gebai
@ 2013-10-25 11:23   ` Alex Bennée
  0 siblings, 0 replies; 16+ messages in thread
From: Alex Bennée @ 2013-10-25 11:23 UTC (permalink / raw)
  To: Mohamad Gebai; +Cc: stefanha, Mohamad Gebai, qemu-devel


mohamad.gebai@gmail.com writes:

> Signed-off-by: Mohamad Gebai <mohamad.gebai@polymtl.ca>

All looks good to me now.

Reviewed-by: Alex Bennée <alex@bennee.com>

-- 
Alex Bennée

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

* Re: [Qemu-devel] [PATCH v5 1/5] Fix configure script for LTTng 2.x
  2013-10-25  0:46 ` [Qemu-devel] [PATCH v5 1/5] Fix configure script " Mohamad Gebai
@ 2013-10-25 13:18   ` Alex Bennée
  2013-10-25 13:50     ` Mohamad Gebai
  2014-01-14 13:34   ` Stefan Hajnoczi
  1 sibling, 1 reply; 16+ messages in thread
From: Alex Bennée @ 2013-10-25 13:18 UTC (permalink / raw)
  To: Mohamad Gebai; +Cc: stefanha, Mohamad Gebai, qemu-devel


mohamad.gebai@gmail.com writes:

> Signed-off-by: Mohamad Gebai <mohamad.gebai@polymtl.ca>
> ---
<snip>

Tested on Ubuntu 12.04 with and without the LTTNG PPA and seems to work
well enough.

Reviewed-by: Alex Bennée <alex@bennee.com>

-- 
Alex Bennée

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

* Re: [Qemu-devel] [PATCH v5 1/5] Fix configure script for LTTng 2.x
  2013-10-25 13:18   ` Alex Bennée
@ 2013-10-25 13:50     ` Mohamad Gebai
  2013-10-25 14:33       ` Alex Bennée
  0 siblings, 1 reply; 16+ messages in thread
From: Mohamad Gebai @ 2013-10-25 13:50 UTC (permalink / raw)
  To: Alex Bennée; +Cc: stefanha, qemu-devel, Mohamad Gebai


>> Signed-off-by: Mohamad Gebai <mohamad.gebai@polymtl.ca>
>> ---
> <snip>
>
> Tested on Ubuntu 12.04 with and without the LTTNG PPA and seems to work
> well enough.
>
> Reviewed-by: Alex Bennée <alex@bennee.com>
>
Yes, the bug is actually only in the Ubuntu package (missing liburcu*.pc 
files). It is fixed everywhere else, including the LTTng PPA. There is a 
bug report about it on Launchpad. Either ways, this fall back avoids 
getting an error with the Ubuntu packages.

Thanks!
Mohamad

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

* Re: [Qemu-devel] [PATCH v5 1/5] Fix configure script for LTTng 2.x
  2013-10-25 13:50     ` Mohamad Gebai
@ 2013-10-25 14:33       ` Alex Bennée
  2013-10-25 16:22         ` Mohamad Gebai
  0 siblings, 1 reply; 16+ messages in thread
From: Alex Bennée @ 2013-10-25 14:33 UTC (permalink / raw)
  To: Mohamad Gebai; +Cc: stefanha, qemu-devel, Mohamad Gebai


mohamad.gebai@polymtl.ca writes:

>>> Signed-off-by: Mohamad Gebai <mohamad.gebai@polymtl.ca>
>>> ---
>> <snip>
>>
>> Tested on Ubuntu 12.04 with and without the LTTNG PPA and seems to work
>> well enough.
>>
>> Reviewed-by: Alex Bennée <alex@bennee.com>
>>
> Yes, the bug is actually only in the Ubuntu package (missing liburcu*.pc 
> files). It is fixed everywhere else, including the LTTng PPA. There is a 
> bug report about it on Launchpad. Either ways, this fall back avoids 
> getting an error with the Ubuntu packages.
<snip>

Hopefully Stefan will be able to check on the RPM based ones.

Did you identify a bug report against Ubuntu for these packages?

-- 
Alex Bennée

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

* Re: [Qemu-devel] [PATCH v5 1/5] Fix configure script for LTTng 2.x
  2013-10-25 14:33       ` Alex Bennée
@ 2013-10-25 16:22         ` Mohamad Gebai
  0 siblings, 0 replies; 16+ messages in thread
From: Mohamad Gebai @ 2013-10-25 16:22 UTC (permalink / raw)
  To: Alex Bennée; +Cc: stefanha, qemu-devel, Mohamad Gebai

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

On 10/25/2013 10:33 AM, Alex Bennée wrote:
> mohamad.gebai@polymtl.ca writes:
>> Yes, the bug is actually only in the Ubuntu package (missing liburcu*.pc
>> files). It is fixed everywhere else, including the LTTng PPA. There is a
>> bug report about it on Launchpad. Either ways, this fall back avoids
>> getting an error with the Ubuntu packages.
> <snip>
>
> Hopefully Stefan will be able to check on the RPM based ones.
>
> Did you identify a bug report against Ubuntu for these packages?
>
Yes, you can find it here:
https://bugs.launchpad.net/ubuntu/+source/liburcu/+bug/1243391

[-- Attachment #2: Type: text/html, Size: 1278 bytes --]

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

* Re: [Qemu-devel] [PATCH v5 0/5] Fix UST backend for LTTng 2.x
  2013-10-25  0:46 [Qemu-devel] [PATCH v5 0/5] Fix UST backend for LTTng 2.x Mohamad Gebai
                   ` (4 preceding siblings ...)
  2013-10-25  0:46 ` [Qemu-devel] [PATCH v5 5/5] Add ust generated files to .gitignore Mohamad Gebai
@ 2013-11-04 16:41 ` Alex Bennée
  2013-12-11  1:45   ` Mohamad Gebai
  2014-01-14 13:35 ` Stefan Hajnoczi
  6 siblings, 1 reply; 16+ messages in thread
From: Alex Bennée @ 2013-11-04 16:41 UTC (permalink / raw)
  To: Mohamad Gebai; +Cc: stefanha, Mohamad Gebai, qemu-devel


mohamad.gebai@gmail.com writes:

> Version 5
>
> * Use pkg-config for lttng-ust and urcu-bp libraries in configure (hard-coded
>   libraries as a fallback)
> * s/Qemu/QEMU in docs/tracing.txt
> * Better dependencies for ust-generated files in trace/Makefile.obj
<snip>

Ping Stefan.

Any more need doing to this or can it be merged into your maintainer tree?

-- 
Alex Bennée

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

* Re: [Qemu-devel] [PATCH v5 0/5] Fix UST backend for LTTng 2.x
  2013-11-04 16:41 ` [Qemu-devel] [PATCH v5 0/5] Fix UST backend for LTTng 2.x Alex Bennée
@ 2013-12-11  1:45   ` Mohamad Gebai
  0 siblings, 0 replies; 16+ messages in thread
From: Mohamad Gebai @ 2013-12-11  1:45 UTC (permalink / raw)
  To: Alex Bennée; +Cc: stefanha, qemu-devel

Ping.

I just wanted to know the status of this patch.

Thanks

On 11/04/2013 11:41 AM, Alex Bennée wrote:
> mohamad.gebai@gmail.com writes:
>
>> Version 5
>>
>> * Use pkg-config for lttng-ust and urcu-bp libraries in configure (hard-coded
>>    libraries as a fallback)
>> * s/Qemu/QEMU in docs/tracing.txt
>> * Better dependencies for ust-generated files in trace/Makefile.obj
> <snip>
>
> Ping Stefan.
>
> Any more need doing to this or can it be merged into your maintainer tree?
>

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

* Re: [Qemu-devel] [PATCH v5 2/5] Modified the tracetool framework for LTTng 2.x
  2013-10-25  0:46 ` [Qemu-devel] [PATCH v5 2/5] Modified the tracetool framework " Mohamad Gebai
@ 2014-01-14 13:33   ` Stefan Hajnoczi
  0 siblings, 0 replies; 16+ messages in thread
From: Stefan Hajnoczi @ 2014-01-14 13:33 UTC (permalink / raw)
  To: Mohamad Gebai; +Cc: Mohamad Gebai, alex.bennee, qemu-devel

On Thu, Oct 24, 2013 at 08:46:04PM -0400, Mohamad Gebai wrote:
> * A new format is required to generate definitions for ust tracepoints.
>   Files ust_events_h.py and ust_events_c.py define common macros, while
>   new function ust_events_h in events.py does the actual definition of
>   each tracepoint.
> * ust.py generates the new interface for calling userspace tracepoints
>   with LTTng 2.x, replacing trace_name(args) to tracepoint(name, args).
> * As explained in ust_events_c.py, -Wredundant-decls gives a warning
>   when compiling with gcc 4.7 or older. This is specific to lttng-ust so
>   for now use a pragma clause to avoid getting a warning.
> 
> Signed-off-by: Mohamad Gebai <mohamad.gebai@polymtl.ca>
> Reviewed-by: Alex Bennée <alex@bennee.com>
> ---
>  scripts/tracetool/backend/events.py      | 44 +++++++++++++++++
>  scripts/tracetool/backend/ust.py         | 82 +++++++-------------------------
>  scripts/tracetool/format/ust_events_c.py | 30 ++++++++++++
>  scripts/tracetool/format/ust_events_h.py | 57 ++++++++++++++++++++++
>  4 files changed, 147 insertions(+), 66 deletions(-)
>  create mode 100644 scripts/tracetool/format/ust_events_c.py
>  create mode 100644 scripts/tracetool/format/ust_events_h.py

I tried to understand why the extra ust .c and .h are needed.  It seems
they are really part of how LTTng 2.0+ works by #including your header
back from its header (?!).  So I'm okay with this.

> +def ust_events_h(events):
> +    for e in events:
> +        if len(e.args) > 0:
> +            out('TRACEPOINT_EVENT(',
> +                '   qemu,',
> +                '   %(name)s,',
> +                '   TP_ARGS(%(args)s),',
> +                '   TP_FIELDS(',
> +                name = e.name,
> +                args = ", ".join(", ".join(i) for i in e.args),
> +                )
> +
> +            for t,n in e.args:
> +                if ('int' in t) or ('long' in t) or ('unsigned' in t) or ('size_t' in t):
> +                    out('       ctf_integer(' + t + ', ' + n + ', ' + n + ')')
> +                elif ('double' in t) or ('float' in t):
> +                    out('       ctf_float(' + t + ', ' + n + ', ' + n + ')')
> +                elif ('char *' in t) or ('char*' in t):
> +                    out('       ctf_string(' + n + ', ' + n + ')')
> +                elif ('void *' in t) or ('void*' in t):
> +                    out('       ctf_integer_hex(unsigned long, ' + n + ', ' + n + ')')
> +
> +            out('   )',
> +                ')',
> +                '')
> +
> +        else:
> +            out('TRACEPOINT_EVENT(',
> +                '   qemu,',
> +                '   %(name)s,',
> +                '   TP_ARGS(void),',
> +                '   TP_FIELDS()',
> +                ')',
> +                '',
> +                name = e.name,
> +                )

This file is generic, it should not contain UST backend-specific code.
Let the ust.py backend override ust_events_h() so the code can live
there, and just leave a nop ust_events_h() in events.py.

> +            argnames = ", " + argnames
> +
> +        out('static inline void trace_%(name)s(%(args)s)',
> +            '{',
> +            '    tracepoint(qemu, %(name)s%(tp_args)s);'
> +            '',

Any reason for this empty string?

> diff --git a/scripts/tracetool/format/ust_events_c.py b/scripts/tracetool/format/ust_events_c.py
> new file mode 100644
> index 0000000..71328f3
> --- /dev/null
> +++ b/scripts/tracetool/format/ust_events_c.py
> @@ -0,0 +1,30 @@
> +#!/usr/bin/env python
> +# -*- coding: utf-8 -*-
> +
> +"""
> +Generate .c for LTTng ust event description.
> +"""
> +
> +__author__     = "Lluís Vilanova <vilanova@ac.upc.edu>"
> +__copyright__  = "Copyright 2012, Lluís Vilanova <vilanova@ac.upc.edu>"

Should you be the author?

> +__license__    = "GPL version 2 or (at your option) any later version"
> +
> +__maintainer__ = "Stefan Hajnoczi"
> +__email__      = "stefanha@linux.vnet.ibm.com"

My email address is stefanha@redhat.com now.

> +__author__     = "Lluís Vilanova <vilanova@ac.upc.edu>"
> +__copyright__  = "Copyright 2012, Lluís Vilanova <vilanova@ac.upc.edu>"
> +__license__    = "GPL version 2 or (at your option) any later version"
> +
> +__maintainer__ = "Stefan Hajnoczi"
> +__email__      = "stefanha@linux.vnet.ibm.com"

Same here.

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

* Re: [Qemu-devel] [PATCH v5 1/5] Fix configure script for LTTng 2.x
  2013-10-25  0:46 ` [Qemu-devel] [PATCH v5 1/5] Fix configure script " Mohamad Gebai
  2013-10-25 13:18   ` Alex Bennée
@ 2014-01-14 13:34   ` Stefan Hajnoczi
  1 sibling, 0 replies; 16+ messages in thread
From: Stefan Hajnoczi @ 2014-01-14 13:34 UTC (permalink / raw)
  To: Mohamad Gebai; +Cc: Mohamad Gebai, alex.bennee, qemu-devel

On Thu, Oct 24, 2013 at 08:46:03PM -0400, Mohamad Gebai wrote:
> +    if $pkg_config liburcu-bp --exists; then
> +      urcu_bp_libs=`$pkg_config --libs liburcu-bp`
> +      else

Indentation is off, should be:

+    if $pkg_config liburcu-bp --exists; then
+      urcu_bp_libs=`$pkg_config --libs liburcu-bp`
+    else

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

* Re: [Qemu-devel] [PATCH v5 0/5] Fix UST backend for LTTng 2.x
  2013-10-25  0:46 [Qemu-devel] [PATCH v5 0/5] Fix UST backend for LTTng 2.x Mohamad Gebai
                   ` (5 preceding siblings ...)
  2013-11-04 16:41 ` [Qemu-devel] [PATCH v5 0/5] Fix UST backend for LTTng 2.x Alex Bennée
@ 2014-01-14 13:35 ` Stefan Hajnoczi
  6 siblings, 0 replies; 16+ messages in thread
From: Stefan Hajnoczi @ 2014-01-14 13:35 UTC (permalink / raw)
  To: Mohamad Gebai; +Cc: Mohamad Gebai, alex.bennee, qemu-devel

On Thu, Oct 24, 2013 at 08:46:02PM -0400, Mohamad Gebai wrote:
> Version 5
> 
> * Use pkg-config for lttng-ust and urcu-bp libraries in configure (hard-coded
>   libraries as a fallback)
> * s/Qemu/QEMU in docs/tracing.txt
> * Better dependencies for ust-generated files in trace/Makefile.obj
> 
> Mohamad Gebai (5):
>   Fix configure script for LTTng 2.x
>   Modified the tracetool framework for LTTng 2.x
>   Adapt Makefiles to the new LTTng ust interface
>   Update documentation for LTTng ust tracing
>   Add ust generated files to .gitignore
> 
>  .gitignore                               |  2 +
>  Makefile                                 |  5 ++
>  configure                                | 20 ++++++--
>  docs/tracing.txt                         | 36 ++++++++++++++
>  scripts/tracetool/backend/events.py      | 44 +++++++++++++++++
>  scripts/tracetool/backend/ust.py         | 82 +++++++-------------------------
>  scripts/tracetool/format/ust_events_c.py | 30 ++++++++++++
>  scripts/tracetool/format/ust_events_h.py | 57 ++++++++++++++++++++++
>  trace/Makefile.objs                      | 25 ++++++++++
>  9 files changed, 230 insertions(+), 71 deletions(-)
>  create mode 100644 scripts/tracetool/format/ust_events_c.py
>  create mode 100644 scripts/tracetool/format/ust_events_h.py

Sorry for taking so long to review this.  I have tested it successfully
on Fedora 20.  Just a few comments on the patches but looking good.

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

end of thread, other threads:[~2014-01-14 13:35 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-10-25  0:46 [Qemu-devel] [PATCH v5 0/5] Fix UST backend for LTTng 2.x Mohamad Gebai
2013-10-25  0:46 ` [Qemu-devel] [PATCH v5 1/5] Fix configure script " Mohamad Gebai
2013-10-25 13:18   ` Alex Bennée
2013-10-25 13:50     ` Mohamad Gebai
2013-10-25 14:33       ` Alex Bennée
2013-10-25 16:22         ` Mohamad Gebai
2014-01-14 13:34   ` Stefan Hajnoczi
2013-10-25  0:46 ` [Qemu-devel] [PATCH v5 2/5] Modified the tracetool framework " Mohamad Gebai
2014-01-14 13:33   ` Stefan Hajnoczi
2013-10-25  0:46 ` [Qemu-devel] [PATCH v5 3/5] Adapt Makefiles to the new LTTng ust interface Mohamad Gebai
2013-10-25  0:46 ` [Qemu-devel] [PATCH v5 4/5] Update documentation for LTTng ust tracing Mohamad Gebai
2013-10-25 11:23   ` Alex Bennée
2013-10-25  0:46 ` [Qemu-devel] [PATCH v5 5/5] Add ust generated files to .gitignore Mohamad Gebai
2013-11-04 16:41 ` [Qemu-devel] [PATCH v5 0/5] Fix UST backend for LTTng 2.x Alex Bennée
2013-12-11  1:45   ` Mohamad Gebai
2014-01-14 13:35 ` Stefan Hajnoczi

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