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>
Tento commit je obsažen v:
@@ -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.
|
||||
|
Odkázat v novém úkolu
Zablokovat Uživatele