1 /* SPDX-License-Identifier: GPL-2.0 */
2 
3 /* Stage 4 definitions for creating trace events */
4 
5 #define ALIGN_STRUCTFIELD(type) ((int)(__alignof__(struct {type b;})))
6 
7 #undef __field_ext
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 },
12 
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 },
18 
19 #undef __field
20 #define __field(type, item)	__field_ext(type, item, FILTER_OTHER)
21 
22 #undef __field_struct
23 #define __field_struct(type, item) __field_struct_ext(type, item, FILTER_OTHER)
24 
25 #undef __array
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 },
30 
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 },
36 
37 #undef __string
38 #define __string(item, src) __dynamic_array(char, item, -1)
39 
40 #undef __string_len
41 #define __string_len(item, src, len) __dynamic_array(char, item, -1)
42 
43 #undef __vstring
44 #define __vstring(item, fmt, ap) __dynamic_array(char, item, -1)
45 
46 #undef __bitmask
47 #define __bitmask(item, nr_bits) __dynamic_array(unsigned long, item, -1)
48 
49 #undef __cpumask
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 },
54 
55 #undef __sockaddr
56 #define __sockaddr(field, len) __dynamic_array(u8, field, len)
57 
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 },
63 
64 #undef __rel_string
65 #define __rel_string(item, src) __rel_dynamic_array(char, item, -1)
66 
67 #undef __rel_string_len
68 #define __rel_string_len(item, src, len) __rel_dynamic_array(char, item, -1)
69 
70 #undef __rel_bitmask
71 #define __rel_bitmask(item, nr_bits) __rel_dynamic_array(unsigned long, item, -1)
72 
73 #undef __rel_cpumask
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 },
78 
79 #undef __rel_sockaddr
80 #define __rel_sockaddr(field, len) __rel_dynamic_array(u8, field, len)
81