[lttng-dev] custom probe for loadable device driver - no output?
Joe VanAndel
vanandel at ucar.edu
Tue Aug 4 17:46:10 EDT 2015
I’m trying to add LTTng probes to a driver module, but I don’t get any
output from my probe in the LTTng session.
Any idea what else I need to configure to get the output from my probe?
Kernel: 3.10.0
OS: Centos 7.1.1503
LTTng tools : from EfficiOS-RHEL7-x86-64 repository
lttng-modules: 2.6.2
The running kernel has the following enabled:
CONFIG_MODULES
CONFIG_KALLSYMS
CONFIG_HIGH_RES_TIMERS
CONFIG_TRACEPOINTS
I’ve defined/used tracepoints in my driver with the mainline TRACE_EVENT()
macros. My tracepoints are on the open/close entry points of the device.
I’ve added the LTTng adaptation layer for my probe in LTTng-modules.
I’ve started the daemon to load my custom probe
lttng-sessiond -d --extra-kmod-probes=db2k
I’ve verified that my event is available, by running
lttng list --kernel | grep db2k
db2k_hello (loglevel: TRACE_EMERG (0)) (type: tracepoint)
There’s an entry for my probe in
/sys/kernel/debug/tracing/events/db2k/db2k_hello
When I run the following as root:
lttng create trace_db2k
lttng enable-event --kernel --tracepoint db2k_hello --tracepoint
kmem_kmalloc --tracepoint kmem_kfree \
--tracepoint timer_start --tracepoint timer_cancel
lttng start
———————
the output is:
Session trace_db2k created.
Traces will be written in /root/lttng-traces/trace_db2k-20150804-193318
Kernel event db2k_hello created in channel channel0
Tracing started for session trace_db2k
===========
I run a test program that uses the driver, and then stop the session.
# lttng stop
Waiting for data availability.
Tracing stopped for session trace_db2k
# lttng view
Trace directory: /root/lttng-traces/trace_db2k-20150804-193318
<No output>
Here is the “mainline” db2k.h
http://pastebin.com/0i8eWF1a
Here is the
LTTng adaptation db2k.h
http://pastebin.com/fXW9ppqM
Here is the
lttng-probe-db2k.c
http://pastebin.com/WHuWKpPZ
The drive contains the lines:
#define CREATE_TRACE_POINTS
#include "trace/events/db2k.h"
static int
db2k_open(struct inode *inode, struct file *file)
{
int minor = MINOR(inode->i_rdev);
int stat = 0;
DEVICE_EXTENSION *pde = NULL;
dbg("db2k_open called");
trace_db2k_hello(minor, "open");
.
.
}
--
Joe VanAndel
NCAR/EOL
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lttng.org/pipermail/lttng-dev/attachments/20150804/6e02b71d/attachment.html>
More information about the lttng-dev
mailing list