blob: 7fb335cf0ce7c6d2d69fc9de8eede5cb2f0502cb [file] [log] [blame]
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"
/*