[lttng-dev] [trap-probe] Add lttng-probe-trap
Francis Deslauriers
fdeslaur at gmail.com
Thu Mar 21 22:06:16 EDT 2013
This probe monitors trap entry and trap exit trace event.
Signed-off-by: Francis Deslauriers <fdeslaur at gmail.com>
---
instrumentation/events/lttng-module/trap.h | 46 +++++++++++++++++++++++++++
instrumentation/events/mainline/trap.h | 47 ++++++++++++++++++++++++++++
probes/Makefile | 1 +
probes/lttng-probe-trap.c | 43 +++++++++++++++++++++++++
4 files changed, 137 insertions(+)
create mode 100644 instrumentation/events/lttng-module/trap.h
create mode 100644 instrumentation/events/mainline/trap.h
create mode 100644 probes/lttng-probe-trap.c
diff --git a/instrumentation/events/lttng-module/trap.h b/instrumentation/events/lttng-module/trap.h
new file mode 100644
index 0000000..124bbba
--- /dev/null
+++ b/instrumentation/events/lttng-module/trap.h
@@ -0,0 +1,46 @@
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM trap
+
+#if !defined(_TRACE_TRAP_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_TRAP_H
+
+#include <linux/tracepoint.h>
+
+TRACE_EVENT(trap_entry,
+
+ TP_PROTO(struct pt_regs *regs, long trap),
+
+ TP_ARGS(regs, trap),
+
+ TP_STRUCT__entry(
+ __field( long, trap )
+ __field( unsigned long, ip )
+
+ ),
+ TP_fast_assign(
+ tp_assign(trap, trap)
+ tp_assign(ip, regs ? instruction_pointer(regs) : 0UL)
+ ),
+
+ TP_printk("number=%ld ip=%lu", __entry->trap, __entry->ip)
+)
+
+TRACE_EVENT(trap_exit,
+
+ TP_PROTO(long trap),
+
+ TP_ARGS(trap),
+
+ TP_STRUCT__entry(
+ __field( long, trap )
+ ),
+ TP_fast_assign(
+ tp_assign(trap, trap)
+ ),
+
+ TP_printk("number=%ld", __entry->trap)
+)
+
+#endif /* _TRACE_TRAP_H */
+/* This part must be outside protection */
+#include "../../../probes/define_trace.h"
diff --git a/instrumentation/events/mainline/trap.h b/instrumentation/events/mainline/trap.h
new file mode 100644
index 0000000..171b9cf
--- /dev/null
+++ b/instrumentation/events/mainline/trap.h
@@ -0,0 +1,47 @@
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM trap
+
+#if !defined(_TRACE_TRAP_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_TRAP_H
+
+#include <linux/tracepoint.h>
+
+TRACE_EVENT(trap_entry,
+
+ TP_PROTO(struct pt_regs *regs, long trap),
+
+ TP_ARGS(regs, trap),
+
+ TP_STRUCT__entry(
+ __field( long, trap )
+ __field( unsigned long, ip )
+ ),
+
+ TP_fast_assign(
+ __entry->trap = trap;
+ __entry->ip = regs ? instruction_pointer(regs) : 0UL;
+ ),
+
+ TP_printk("number=%ld ip=%lu", __entry->trap, __entry->ip)
+);
+
+TRACE_EVENT(trap_exit,
+
+ TP_PROTO(long trap),
+
+ TP_ARGS(trap),
+
+ TP_STRUCT__entry(
+ __field( long, trap )
+ ),
+
+ TP_fast_assign(
+ __entry->trap = trap;
+ ),
+
+ TP_printk("number=%ld", __entry->trap)
+);
+
+#endif /* _TRACE_TRAP_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/probes/Makefile b/probes/Makefile
index 088cd5f..c8d0085 100644
--- a/probes/Makefile
+++ b/probes/Makefile
@@ -15,6 +15,7 @@ obj-m += lttng-probe-timer.o
obj-m += lttng-probe-kmem.o
obj-m += lttng-probe-module.o
obj-m += lttng-probe-power.o
+obj-m += lttng-probe-trap.o
obj-m += lttng-probe-statedump.o
diff --git a/probes/lttng-probe-trap.c b/probes/lttng-probe-trap.c
new file mode 100644
index 0000000..17c1526
--- /dev/null
+++ b/probes/lttng-probe-trap.c
@@ -0,0 +1,43 @@
+/*
+ * probes/lttng-probe-trap.c
+ *
+ * LTTng trap probes.
+ *
+ * Copyright (C) 2010-2012 Mathieu Desnoyers <mathieu.desnoyers at efficios.com>
+ * Copyright (C) 2013 Francis Deslauriers <fdeslaur at gmail.com>.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; only
+ * version 2.1 of the License.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * 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/module.h>
+
+/*
+ * Create the tracepoint static inlines from the kernel to validate that our
+ * trace event macros match the kernel we run on.
+ */
+#include <trace/events/trap.h>
+#include "../wrapper/tracepoint.h"
+/*
+ * Create LTTng tracepoint probes.
+ */
+#define LTTNG_PACKAGE_BUILD
+#define CREATE_TRACE_POINTS
+#define TRACE_INCLUDE_PATH ../instrumentation/events/lttng-module
+
+#include "../instrumentation/events/lttng-module/trap.h"
+
+MODULE_LICENSE("GPL and additional rights");
+MODULE_AUTHOR("Francis Deslauriers <fdeslaur at gmail.com>");
+MODULE_DESCRIPTION("LTTng trap probes");
--
1.7.10.4
More information about the lttng-dev
mailing list