From compudj@mail.openrapids.net Tue Jun 26 23:52:58 2012
From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Date: Wed, 27 Jun 2012 02:52:55 -0400
Subject: [LTSI staging] LTTng staging update 2.0.1 to 2.0.4
To: Greg KH <gregkh@linuxfoundation.org>
Cc: ltsi-dev@lists.linuxfoundation.org
Message-ID: <20120627065255.GA6293@Krystal>
Content-Disposition: inline


Update LTTng in LTSI staging from lttng-modules 2.0.1 to 2.0.4.
(available at: git://git.lttng.org/lttng-modules.git)

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
---
 drivers/staging/lttng/README                                                      |   43 +++++++++-
 drivers/staging/lttng/instrumentation/events/lttng-module/signal.h                |   37 ++++++++
 drivers/staging/lttng/instrumentation/syscalls/lttng-syscalls-generate-headers.sh |    2 
 drivers/staging/lttng/lttng-events.c                                              |    2 
 drivers/staging/lttng/lttng-tracer.h                                              |    2 
 drivers/staging/lttng/probes/lttng-events.h                                       |    2 
 drivers/staging/lttng/probes/lttng-probe-statedump.c                              |    1 
 7 files changed, 80 insertions(+), 9 deletions(-)

--- a/drivers/staging/lttng/README
+++ b/drivers/staging/lttng/README
@@ -1,7 +1,7 @@
 LTTng 2.0 modules
 
 Mathieu Desnoyers
-February 8, 2012
+April 6, 2012
 
 LTTng 2.0 kernel modules build against a vanilla or distribution kernel, without
 need for additional patches. Other features:
@@ -37,9 +37,44 @@ LTTng 0.x patchset, but the lttng-module
 0.x, so both tracers cannot be installed at the same time for a given
 kernel version.
 
-LTTng-modules depends on having kallsyms enabled in the kernel it is
-built against. Ideally, if you want to have system call tracing, the
-"Trace Syscalls" feature should be enabled too.
+
+* Kernel config options required
+
+CONFIG_MODULES: required
+  * Kernel modules support.
+CONFIG_KALLSYMS: required
+  * See wrapper/ files. This is necessary until the few required missing
+    symbols are exported to GPL modules from mainline.
+CONFIG_HIGH_RES_TIMERS: required
+  * Needed for LTTng 2.0 clock source.
+CONFIG_TRACEPOINTS: required
+    kernel tracepoint instrumentation
+    * Enabled as side-effect of any of the perf/ftrace/blktrace
+      instrumentation features.
+
+
+* Kernel config options supported (optional)
+
+The following kernel configuration options will affect the features
+available from LTTng:
+
+
+CONFIG_HAVE_SYSCALL_TRACEPOINTS:
+            system call tracing
+               lttng enable-event -k --syscall
+               lttng enable-event -k -a
+CONFIG_PERF_EVENTS:
+            performance counters
+               lttng add-context -t perf:*
+CONFIG_EVENT_TRACING:
+            needed to allow block layer tracing
+CONFIG_KPROBES:
+            Dynamic probe.
+               lttng enable-event -k --probe ...
+CONFIG_KRETPROBES:
+            Dynamic function entry/return probe.
+               lttng enable-event -k --function ...
+
 
 * Note about Perf PMU counters support
 
--- a/drivers/staging/lttng/instrumentation/events/lttng-module/signal.h
+++ b/drivers/staging/lttng/instrumentation/events/lttng-module/signal.h
@@ -5,6 +5,7 @@
 #define _TRACE_SIGNAL_H
 
 #include <linux/tracepoint.h>
+#include <linux/version.h>
 
 #ifndef _TRACE_SIGNAL_DEF
 #define _TRACE_SIGNAL_DEF
@@ -34,6 +35,7 @@
  * SEND_SIG_NOINFO means that si_code is SI_USER, and SEND_SIG_PRIV
  * means that si_code is SI_KERNEL.
  */
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0))
 TRACE_EVENT(signal_generate,
 
 	TP_PROTO(int sig, struct siginfo *info, struct task_struct *task),
@@ -44,7 +46,7 @@ TRACE_EVENT(signal_generate,
 		__field(	int,	sig			)
 		__field(	int,	errno			)
 		__field(	int,	code			)
-		__array(	char,	comm,	TASK_COMM_LEN	)
+		__array_text(	char,	comm,	TASK_COMM_LEN	)
 		__field(	pid_t,	pid			)
 	),
 
@@ -59,6 +61,39 @@ TRACE_EVENT(signal_generate,
 		  __entry->sig, __entry->errno, __entry->code,
 		  __entry->comm, __entry->pid)
 )
+#else
+TRACE_EVENT(signal_generate,
+
+	TP_PROTO(int sig, struct siginfo *info, struct task_struct *task,
+			int group, int result),
+
+	TP_ARGS(sig, info, task, group, result),
+
+	TP_STRUCT__entry(
+		__field(	int,	sig			)
+		__field(	int,	errno			)
+		__field(	int,	code			)
+		__array_text(	char,	comm,	TASK_COMM_LEN	)
+		__field(	pid_t,	pid			)
+		__field(	int,	group			)
+		__field(	int,	result			)
+	),
+
+	TP_fast_assign(
+		tp_assign(sig, sig)
+		TP_STORE_SIGINFO(info)
+		tp_memcpy(comm, task->comm, TASK_COMM_LEN)
+		tp_assign(pid, task->pid)
+		tp_assign(group, group)
+		tp_assign(result, result)
+	),
+
+	TP_printk("sig=%d errno=%d code=%d comm=%s pid=%d grp=%d res=%d",
+		  __entry->sig, __entry->errno, __entry->code,
+		  __entry->comm, __entry->pid, __entry->group,
+		  __entry->result)
+)
+#endif
 
 /**
  * signal_deliver - called when a signal is delivered
--- a/drivers/staging/lttng/instrumentation/syscalls/lttng-syscalls-generate-headers.sh
+++ b/drivers/staging/lttng/instrumentation/syscalls/lttng-syscalls-generate-headers.sh
@@ -59,7 +59,7 @@ if [ "$CLASS" = integers ]; then
 
 NRARGS=0
 
-echo \
+echo -e \
 'SC_DECLARE_EVENT_CLASS_NOARGS(syscalls_noargs,\n'\
 '	TP_STRUCT__entry(),\n'\
 '	TP_fast_assign(),\n'\
--- a/drivers/staging/lttng/lttng-events.c
+++ b/drivers/staging/lttng/lttng-events.c
@@ -292,7 +292,7 @@ struct lttng_event *lttng_event_create(s
 	int ret;
 
 	mutex_lock(&sessions_mutex);
-	if (chan->free_event_id == -1UL)
+	if (chan->free_event_id == -1U)
 		goto full;
 	/*
 	 * This is O(n^2) (for each event, the loop is called at event
--- a/drivers/staging/lttng/lttng-tracer.h
+++ b/drivers/staging/lttng/lttng-tracer.h
@@ -40,7 +40,7 @@
 
 #define LTTNG_MODULES_MAJOR_VERSION 2
 #define LTTNG_MODULES_MINOR_VERSION 0
-#define LTTNG_MODULES_PATCHLEVEL_VERSION 1
+#define LTTNG_MODULES_PATCHLEVEL_VERSION 4
 
 #define LTTNG_VERSION_NAME		"Annedd'ale"
 #define LTTNG_VERSION_DESCRIPTION	\
--- a/drivers/staging/lttng/probes/lttng-events.h
+++ b/drivers/staging/lttng/probes/lttng-events.h
@@ -18,7 +18,7 @@
  * License along with this library; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
-
+#include <linux/uaccess.h>
 #include <linux/debugfs.h>
 #include "lttng.h"
 #include "lttng-types.h"
--- a/drivers/staging/lttng/probes/lttng-probe-statedump.c
+++ b/drivers/staging/lttng/probes/lttng-probe-statedump.c
@@ -27,6 +27,7 @@
 #include <linux/ip.h>
 #include <linux/netdevice.h>
 #include <linux/inetdevice.h>
+#include <linux/sched.h>
 #include "../lttng-events.h"
 
 /*
