----------------------------------------------------------------------
> Date: Mon, 10 Feb 2014 17:10:37 +0000
> From: "Thibault, Daniel" <[email protected]>
>
> I'm trying to find out the recipe for instrumenting a kernel module with
> some custom LTTng tracepoints.
> Oddly, writing the LTTng tracepoint provider kernel module turned out not
> too bad (the READMEs help),
> but I have seen no documentation of the process of instrumenting a module.
Update. Looking at the instrumented kernel compilation units and
define_trace.h, I've come to think I must #define CREATE_TRACE_POINTS just
before #include <trace/events/hello.h> in the instrumented module. What I find
bizarre, though, is that this works for an integer payload field (instrumented
module and LTTng tracepoint provider kernel module compile, tracing the new
kernel events works as expected) but fails miserably with a string payload
field. Looking at other kernel tracepoints that have string payload fields, I
just don't see what I'm doing wrong.
The integer tracepoint:
TRACE_EVENT(hello_init,
TP_PROTO(int anint),
TP_ARGS(anint),
TP_STRUCT__entry(
__field(int, aninteger)
),
TP_fast_assign(
__entry->aninteger = anint;
),
TP_printk(
"hello=%d", __entry->aninteger
)
);
The string tracepoint:
TRACE_EVENT(hello_init,
TP_PROTO(const char * astring),
TP_ARGS(astring),
TP_STRUCT__entry(
__string(hello_string, astring)
),
TP_fast_assign(
__assign_str(hello_string, astring);
),
TP_printk(
"hello=%s", __entry->hello_string
)
);
This time the make says:
make -C /lib/modules/3.2.0-53-virtual/build M=/home/daniel/Documents/mymodule
modules
make[1]: entrant dans le répertoire « /usr/src/linux-headers-3.2.0-53-virtual »
CC [M] /home/daniel/Documents/mymodule/hello.o
In file included from include/trace/ftrace.h:296:0,
from include/trace/define_trace.h:86,
from include/trace/events/hello.h:110,
from /home/daniel/Documents/mymodule/hello.c:5:
include/trace/events/hello.h: In function 'ftrace_raw_output_hello_init':
include/trace/events/hello.h:57:1: erreur: 'struct ftrace_raw_hello_init' has
no member named 'hello_string'
make[2]: *** [/home/daniel/Documents/mymodule/hello.o] Erreur 1
make[1]: *** [_module_/home/daniel/Documents/mymodule] Erreur 2
make[1]: quittant le répertoire « /usr/src/linux-headers-3.2.0-53-virtual »
make: *** [all] Erreur 2
Daniel U. Thibault
Protection des systèmes et contremesures (PSC) | Systems Protection &
Countermeasures (SPC)
Cyber sécurité pour les missions essentielles (CME) | Mission Critical Cyber
Security (MCCS)
R & D pour la défense Canada - Valcartier (RDDC Valcartier) | Defence R&D
Canada - Valcartier (DRDC Valcartier)
2459 route de la Bravoure
Québec QC G3J 1X5
CANADA
Vox : (418) 844-4000 x4245
Fax : (418) 844-4538
NAC : 918V QSDJ <http://www.travelgis.com/map.asp?addr=918V%20QSDJ>
Gouvernement du Canada | Government of Canada
<http://www.valcartier.drdc-rddc.gc.ca/>
_______________________________________________
lttng-dev mailing list
[email protected]
http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev