----------------------------------------------------------------------
> 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

Reply via email to