184055411SSteven Rostedt (Google) /* SPDX-License-Identifier: GPL-2.0 */
284055411SSteven Rostedt (Google) 
384055411SSteven Rostedt (Google) /* Stage 4 definitions for creating trace events */
484055411SSteven Rostedt (Google) 
509794a5aSSteven Rostedt (Google) #define ALIGN_STRUCTFIELD(type) ((int)(__alignof__(struct {type b;})))
64c3d2f93SSteven Rostedt (Google) 
784055411SSteven Rostedt (Google) #undef __field_ext
884055411SSteven Rostedt (Google) #define __field_ext(_type, _item, _filter_type) {			\
984055411SSteven Rostedt (Google) 	.type = #_type, .name = #_item,					\
104c3d2f93SSteven Rostedt (Google) 	.size = sizeof(_type), .align = ALIGN_STRUCTFIELD(_type),	\
1184055411SSteven Rostedt (Google) 	.is_signed = is_signed_type(_type), .filter_type = _filter_type },
1284055411SSteven Rostedt (Google) 
1384055411SSteven Rostedt (Google) #undef __field_struct_ext
1484055411SSteven Rostedt (Google) #define __field_struct_ext(_type, _item, _filter_type) {		\
1584055411SSteven Rostedt (Google) 	.type = #_type, .name = #_item,					\
164c3d2f93SSteven Rostedt (Google) 	.size = sizeof(_type), .align = ALIGN_STRUCTFIELD(_type),	\
1784055411SSteven Rostedt (Google) 	0, .filter_type = _filter_type },
1884055411SSteven Rostedt (Google) 
1984055411SSteven Rostedt (Google) #undef __field
2084055411SSteven Rostedt (Google) #define __field(type, item)	__field_ext(type, item, FILTER_OTHER)
2184055411SSteven Rostedt (Google) 
2284055411SSteven Rostedt (Google) #undef __field_struct
2384055411SSteven Rostedt (Google) #define __field_struct(type, item) __field_struct_ext(type, item, FILTER_OTHER)
2484055411SSteven Rostedt (Google) 
2584055411SSteven Rostedt (Google) #undef __array
2684055411SSteven Rostedt (Google) #define __array(_type, _item, _len) {					\
2784055411SSteven Rostedt (Google) 	.type = #_type"["__stringify(_len)"]", .name = #_item,		\
284c3d2f93SSteven Rostedt (Google) 	.size = sizeof(_type[_len]), .align = ALIGN_STRUCTFIELD(_type),	\
29*b6c7abd1SYafang Shao 	.is_signed = is_signed_type(_type), .filter_type = FILTER_OTHER,\
30*b6c7abd1SYafang Shao 	.len = _len },
3184055411SSteven Rostedt (Google) 
3284055411SSteven Rostedt (Google) #undef __dynamic_array
3384055411SSteven Rostedt (Google) #define __dynamic_array(_type, _item, _len) {				\
3484055411SSteven Rostedt (Google) 	.type = "__data_loc " #_type "[]", .name = #_item,		\
3584055411SSteven Rostedt (Google) 	.size = 4, .align = 4,						\
3684055411SSteven Rostedt (Google) 	.is_signed = is_signed_type(_type), .filter_type = FILTER_OTHER },
3784055411SSteven Rostedt (Google) 
3884055411SSteven Rostedt (Google) #undef __string
3984055411SSteven Rostedt (Google) #define __string(item, src) __dynamic_array(char, item, -1)
4084055411SSteven Rostedt (Google) 
4184055411SSteven Rostedt (Google) #undef __string_len
4284055411SSteven Rostedt (Google) #define __string_len(item, src, len) __dynamic_array(char, item, -1)
4384055411SSteven Rostedt (Google) 
440563231fSSteven Rostedt (Google) #undef __vstring
450563231fSSteven Rostedt (Google) #define __vstring(item, fmt, ap) __dynamic_array(char, item, -1)
460563231fSSteven Rostedt (Google) 
4784055411SSteven Rostedt (Google) #undef __bitmask
4884055411SSteven Rostedt (Google) #define __bitmask(item, nr_bits) __dynamic_array(unsigned long, item, -1)
4984055411SSteven Rostedt (Google) 
508230f27bSSteven Rostedt (Google) #undef __cpumask
51fab89a09SSteven Rostedt (Google) #define __cpumask(item) {						\
52fab89a09SSteven Rostedt (Google) 	.type = "__data_loc cpumask_t", .name = #item,			\
53fab89a09SSteven Rostedt (Google) 	.size = 4, .align = 4,						\
54fab89a09SSteven Rostedt (Google) 	.is_signed = 0, .filter_type = FILTER_OTHER },
558230f27bSSteven Rostedt (Google) 
5684055411SSteven Rostedt (Google) #undef __sockaddr
5784055411SSteven Rostedt (Google) #define __sockaddr(field, len) __dynamic_array(u8, field, len)
5884055411SSteven Rostedt (Google) 
5984055411SSteven Rostedt (Google) #undef __rel_dynamic_array
6084055411SSteven Rostedt (Google) #define __rel_dynamic_array(_type, _item, _len) {			\
6184055411SSteven Rostedt (Google) 	.type = "__rel_loc " #_type "[]", .name = #_item,		\
6284055411SSteven Rostedt (Google) 	.size = 4, .align = 4,						\
6384055411SSteven Rostedt (Google) 	.is_signed = is_signed_type(_type), .filter_type = FILTER_OTHER },
6484055411SSteven Rostedt (Google) 
6584055411SSteven Rostedt (Google) #undef __rel_string
6684055411SSteven Rostedt (Google) #define __rel_string(item, src) __rel_dynamic_array(char, item, -1)
6784055411SSteven Rostedt (Google) 
6884055411SSteven Rostedt (Google) #undef __rel_string_len
6984055411SSteven Rostedt (Google) #define __rel_string_len(item, src, len) __rel_dynamic_array(char, item, -1)
7084055411SSteven Rostedt (Google) 
7184055411SSteven Rostedt (Google) #undef __rel_bitmask
7284055411SSteven Rostedt (Google) #define __rel_bitmask(item, nr_bits) __rel_dynamic_array(unsigned long, item, -1)
7384055411SSteven Rostedt (Google) 
748230f27bSSteven Rostedt (Google) #undef __rel_cpumask
75fab89a09SSteven Rostedt (Google) #define __rel_cpumask(item) {						\
76fab89a09SSteven Rostedt (Google) 	.type = "__rel_loc cpumask_t", .name = #item,			\
77fab89a09SSteven Rostedt (Google) 	.size = 4, .align = 4,						\
78fab89a09SSteven Rostedt (Google) 	.is_signed = 0, .filter_type = FILTER_OTHER },
798230f27bSSteven Rostedt (Google) 
8084055411SSteven Rostedt (Google) #undef __rel_sockaddr
8184055411SSteven Rostedt (Google) #define __rel_sockaddr(field, len) __rel_dynamic_array(u8, field, len)
82