1 /* SPDX-License-Identifier: GPL-2.0 */
3 /* Stage 4 definitions for creating trace events */
5 #define ALIGN_STRUCTFIELD(type) ((int)(__alignof__(struct {type b;})))
8 #define __field_ext(_type, _item, _filter_type) { \
9 .type = #_type, .name = #_item, \
10 .size = sizeof(_type), .align = ALIGN_STRUCTFIELD(_type), \
11 .is_signed = is_signed_type(_type), .filter_type = _filter_type },
13 #undef __field_struct_ext
14 #define __field_struct_ext(_type, _item, _filter_type) { \
15 .type = #_type, .name = #_item, \
16 .size = sizeof(_type), .align = ALIGN_STRUCTFIELD(_type), \
17 0, .filter_type = _filter_type },
20 #define __field(type, item) __field_ext(type, item, FILTER_OTHER)
23 #define __field_struct(type, item) __field_struct_ext(type, item, FILTER_OTHER)
26 #define __array(_type, _item, _len) { \
27 .type = #_type"["__stringify(_len)"]", .name = #_item, \
28 .size = sizeof(_type[_len]), .align = ALIGN_STRUCTFIELD(_type), \
29 .is_signed = is_signed_type(_type), .filter_type = FILTER_OTHER },
31 #undef __dynamic_array
32 #define __dynamic_array(_type, _item, _len) { \
33 .type = "__data_loc " #_type "[]", .name = #_item, \
34 .size = 4, .align = 4, \
35 .is_signed = is_signed_type(_type), .filter_type = FILTER_OTHER },
38 #define __string(item, src) __dynamic_array(char, item, -1)
41 #define __string_len(item, src, len) __dynamic_array(char, item, -1)
44 #define __vstring(item, fmt, ap) __dynamic_array(char, item, -1)
47 #define __bitmask(item, nr_bits) __dynamic_array(unsigned long, item, -1)
50 #define __cpumask(item) { \
51 .type = "__data_loc cpumask_t", .name = #item, \
52 .size = 4, .align = 4, \
53 .is_signed = 0, .filter_type = FILTER_OTHER },
56 #define __sockaddr(field, len) __dynamic_array(u8, field, len)
58 #undef __rel_dynamic_array
59 #define __rel_dynamic_array(_type, _item, _len) { \
60 .type = "__rel_loc " #_type "[]", .name = #_item, \
61 .size = 4, .align = 4, \
62 .is_signed = is_signed_type(_type), .filter_type = FILTER_OTHER },
65 #define __rel_string(item, src) __rel_dynamic_array(char, item, -1)
67 #undef __rel_string_len
68 #define __rel_string_len(item, src, len) __rel_dynamic_array(char, item, -1)
71 #define __rel_bitmask(item, nr_bits) __rel_dynamic_array(unsigned long, item, -1)
74 #define __rel_cpumask(item) { \
75 .type = "__rel_loc cpumask_t", .name = #item, \
76 .size = 4, .align = 4, \
77 .is_signed = 0, .filter_type = FILTER_OTHER },
80 #define __rel_sockaddr(field, len) __rel_dynamic_array(u8, field, len)