diff options
author | Steven Rostedt | 2014-06-17 14:59:16 +0200 |
---|---|---|
committer | Steven Rostedt | 2014-06-21 06:18:42 +0200 |
commit | 4d4c9cc839a308be3289a361ccba4447ee140552 (patch) | |
tree | 404a0a22a3700c16ef3437b69fefe46c06cf5f91 /samples/trace_events | |
parent | tracing: syscall_regfunc() should not skip kernel threads (diff) | |
download | kernel-qcow2-linux-4d4c9cc839a308be3289a361ccba4447ee140552.tar.gz kernel-qcow2-linux-4d4c9cc839a308be3289a361ccba4447ee140552.tar.xz kernel-qcow2-linux-4d4c9cc839a308be3289a361ccba4447ee140552.zip |
tracing: Add __field_struct macro for TRACE_EVENT()
Currently the __field() macro in TRACE_EVENT is only good for primitive
values, such as integers and pointers, but it fails on complex data types
such as structures or unions. This is because the __field() macro
determines if the variable is signed or not with the test of:
(((type)(-1)) < (type)1)
Unfortunately, that fails when type is a structure.
Since trace events should support structures as fields a new macro
is created for such a case called __field_struct() which acts exactly
the same as __field() does but it does not do the signed type check
and just uses a constant false for that answer.
Cc: Tony Luck <tony.luck@gmail.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Diffstat (limited to 'samples/trace_events')
-rw-r--r-- | samples/trace_events/trace-events-sample.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/samples/trace_events/trace-events-sample.h b/samples/trace_events/trace-events-sample.h index 6af373236d73..4b0113f73ee9 100644 --- a/samples/trace_events/trace-events-sample.h +++ b/samples/trace_events/trace-events-sample.h @@ -56,7 +56,8 @@ * struct: This defines the way the data will be stored in the ring buffer. * There are currently two types of elements. __field and __array. * a __field is broken up into (type, name). Where type can be any - * type but an array. + * primitive type (integer, long or pointer). __field_struct() can + * be any static complex data value (struct, union, but not an array). * For an array. there are three fields. (type, name, size). The * type of elements in the array, the name of the field and the size * of the array. |