aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/trace
diff options
context:
space:
mode:
authorSteven Rostedt <srostedt@redhat.com>2009-09-12 19:22:23 -0400
committerSteven Rostedt <rostedt@goodmis.org>2009-09-12 23:08:07 -0400
commitd73150943cf47b6cabcb4f4e52dd25975e820ae2 (patch)
treeba711d32aacb2c5627d2acd636e82b819598120c /kernel/trace
parent0a1c49db8d91c538f104f8d70e560c6fdd589bd4 (diff)
tracing: show details of structures within the ftrace structures
Some of the internal ftrace structures use structures within. The output of a field saying it is just a structure is useless for a format file. A binary reader of the ring buffer needs to know more about how the fields are broken up. This patch adds to the ftrace structure macros new fields to describe the structures inside a structure. Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Diffstat (limited to 'kernel/trace')
-rw-r--r--kernel/trace/trace.h9
-rw-r--r--kernel/trace/trace_entries.h64
2 files changed, 66 insertions, 7 deletions
diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h
index d308195d40aa..b0d287d49a6d 100644
--- a/kernel/trace/trace.h
+++ b/kernel/trace/trace.h
@@ -53,9 +53,18 @@ extern struct tracer boot_tracer;
53#undef __field 53#undef __field
54#define __field(type, item) type item; 54#define __field(type, item) type item;
55 55
56#undef __field_struct
57#define __field_struct(type, item) __field(type, item)
58
59#undef __field_desc
60#define __field_desc(type, container, item)
61
56#undef __array 62#undef __array
57#define __array(type, item, size) type item[size]; 63#define __array(type, item, size) type item[size];
58 64
65#undef __array_desc
66#define __array_desc(type, container, item, size)
67
59#undef __dynamic_array 68#undef __dynamic_array
60#define __dynamic_array(type, item) type item[]; 69#define __dynamic_array(type, item) type item[];
61 70
diff --git a/kernel/trace/trace_entries.h b/kernel/trace/trace_entries.h
index 82c51fdca035..c866d34e0144 100644
--- a/kernel/trace/trace_entries.h
+++ b/kernel/trace/trace_entries.h
@@ -26,6 +26,29 @@
26 * type item[size]; 26 * type item[size];
27 * in the structure. 27 * in the structure.
28 * 28 *
29 * * for structures within structures, the format of the internal
30 * structure is layed out. This allows the internal structure
31 * to be deciphered for the format file. Although these macros
32 * may become out of sync with the internal structure, they
33 * will create a compile error if it happens. Since the
34 * internel structures are just tracing helpers, this is not
35 * an issue.
36 *
37 * When an internal structure is used, it should use:
38 *
39 * __field_struct( type, item )
40 *
41 * instead of __field. This will prevent it from being shown in
42 * the output file. The fields in the structure should use.
43 *
44 * __field_desc( type, container, item )
45 * __array_desc( type, container, item, len )
46 *
47 * type, item and len are the same as __field and __array, but
48 * container is added. This is the name of the item in
49 * __field_struct that this is describing.
50 *
51 *
29 * @print: the print format shown to users in the format file. 52 * @print: the print format shown to users in the format file.
30 */ 53 */
31 54
@@ -50,7 +73,9 @@ FTRACE_ENTRY(funcgraph_entry, ftrace_graph_ent_entry,
50 TRACE_GRAPH_ENT, 73 TRACE_GRAPH_ENT,
51 74
52 F_STRUCT( 75 F_STRUCT(
53 __field( struct ftrace_graph_ent, graph_ent ) 76 __field_struct( struct ftrace_graph_ent, graph_ent )
77 __field_desc( unsigned long, graph_ent, func )
78 __field_desc( int, graph_ent, depth )
54 ), 79 ),
55 80
56 F_printk("--> %lx (%d)", __entry->graph_ent.func, __entry->depth) 81 F_printk("--> %lx (%d)", __entry->graph_ent.func, __entry->depth)
@@ -62,7 +87,12 @@ FTRACE_ENTRY(funcgraph_exit, ftrace_graph_ret_entry,
62 TRACE_GRAPH_RET, 87 TRACE_GRAPH_RET,
63 88
64 F_STRUCT( 89 F_STRUCT(
65 __field( struct ftrace_graph_ret, ret ) 90 __field_struct( struct ftrace_graph_ret, ret )
91 __field_desc( unsigned long, ret, func )
92 __field_desc( unsigned long long, ret, calltime)
93 __field_desc( unsigned long long, ret, rettime )
94 __field_desc( unsigned long, ret, overrun )
95 __field_desc( int, ret, depth )
66 ), 96 ),
67 97
68 F_printk("<-- %lx (%d) (start: %llx end: %llx) over: %d", 98 F_printk("<-- %lx (%d) (start: %llx end: %llx) over: %d",
@@ -218,7 +248,13 @@ FTRACE_ENTRY(mmiotrace_rw, trace_mmiotrace_rw,
218 TRACE_MMIO_RW, 248 TRACE_MMIO_RW,
219 249
220 F_STRUCT( 250 F_STRUCT(
221 __field( struct mmiotrace_rw, rw ) 251 __field_struct( struct mmiotrace_rw, rw )
252 __field_desc( resource_size_t, rw, phys )
253 __field_desc( unsigned long, rw, value )
254 __field_desc( unsigned long, rw, pc )
255 __field_desc( int, rw, map_id )
256 __field_desc( unsigned char, rw, opcode )
257 __field_desc( unsigned char, rw, width )
222 ), 258 ),
223 259
224 F_printk("%lx %lx %lx %d %lx %lx", 260 F_printk("%lx %lx %lx %d %lx %lx",
@@ -231,7 +267,12 @@ FTRACE_ENTRY(mmiotrace_map, trace_mmiotrace_map,
231 TRACE_MMIO_MAP, 267 TRACE_MMIO_MAP,
232 268
233 F_STRUCT( 269 F_STRUCT(
234 __field( struct mmiotrace_map, map ) 270 __field_struct( struct mmiotrace_map, map )
271 __field_desc( resource_size_t, map, phys )
272 __field_desc( unsigned long, map, virt )
273 __field_desc( unsigned long, map, len )
274 __field_desc( int, map, map_id )
275 __field_desc( unsigned char, map, opcode )
235 ), 276 ),
236 277
237 F_printk("%lx %lx %lx %d %lx", 278 F_printk("%lx %lx %lx %d %lx",
@@ -244,7 +285,9 @@ FTRACE_ENTRY(boot_call, trace_boot_call,
244 TRACE_BOOT_CALL, 285 TRACE_BOOT_CALL,
245 286
246 F_STRUCT( 287 F_STRUCT(
247 __field( struct boot_trace_call, boot_call ) 288 __field_struct( struct boot_trace_call, boot_call )
289 __field_desc( pid_t, boot_call, caller )
290 __array_desc( char, boot_call, func, KSYM_SYMBOL_LEN)
248 ), 291 ),
249 292
250 F_printk("%d %s", __entry->caller, __entry->func) 293 F_printk("%d %s", __entry->caller, __entry->func)
@@ -255,7 +298,10 @@ FTRACE_ENTRY(boot_ret, trace_boot_ret,
255 TRACE_BOOT_RET, 298 TRACE_BOOT_RET,
256 299
257 F_STRUCT( 300 F_STRUCT(
258 __field( struct boot_trace_ret, boot_ret ) 301 __field_struct( struct boot_trace_ret, boot_ret )
302 __array_desc( char, boot_ret, func, KSYM_SYMBOL_LEN)
303 __field_desc( int, boot_ret, result )
304 __field_desc( unsigned long, boot_ret, duration )
259 ), 305 ),
260 306
261 F_printk("%s %d %lx", 307 F_printk("%s %d %lx",
@@ -298,7 +344,11 @@ FTRACE_ENTRY(power, trace_power,
298 TRACE_POWER, 344 TRACE_POWER,
299 345
300 F_STRUCT( 346 F_STRUCT(
301 __field( struct power_trace, state_data ) 347 __field_struct( struct power_trace, state_data )
348 __field_desc( s64, state_data, stamp )
349 __field_desc( s64, state_data, end )
350 __field_desc( int, state_data, type )
351 __field_desc( int, state_data, state )
302 ), 352 ),
303 353
304 F_printk("%llx->%llx type:%u state:%u", 354 F_printk("%llx->%llx type:%u state:%u",