[lttng-dev] Instrumenting a module?

Thibault, Daniel Daniel.Thibault at drdc-rddc.gc.ca
Tue Feb 11 11:45:59 EST 2014


----------------------------------------------------------------------
> Date: Mon, 10 Feb 2014 17:10:37 +0000
> From: "Thibault, Daniel" <Daniel.Thibault at drdc-rddc.gc.ca>
>
>    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/>



More information about the lttng-dev mailing list