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) 
5*4c3d2f93SSteven Rostedt (Google) #define ALIGN_STRUCTFIELD(type) ((int)(offsetof(struct {char a; type b;}, b)))
6*4c3d2f93SSteven 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,					\
10*4c3d2f93SSteven 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,					\
16*4c3d2f93SSteven 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,		\
28*4c3d2f93SSteven Rostedt (Google) 	.size = sizeof(_type[_len]), .align = ALIGN_STRUCTFIELD(_type),	\
2984055411SSteven Rostedt (Google) 	.is_signed = is_signed_type(_type), .filter_type = FILTER_OTHER },
3084055411SSteven Rostedt (Google) 
3184055411SSteven Rostedt (Google) #undef __dynamic_array
3284055411SSteven Rostedt (Google) #define __dynamic_array(_type, _item, _len) {				\
3384055411SSteven Rostedt (Google) 	.type = "__data_loc " #_type "[]", .name = #_item,		\
3484055411SSteven Rostedt (Google) 	.size = 4, .align = 4,						\
3584055411SSteven Rostedt (Google) 	.is_signed = is_signed_type(_type), .filter_type = FILTER_OTHER },
3684055411SSteven Rostedt (Google) 
3784055411SSteven Rostedt (Google) #undef __string
3884055411SSteven Rostedt (Google) #define __string(item, src) __dynamic_array(char, item, -1)
3984055411SSteven Rostedt (Google) 
4084055411SSteven Rostedt (Google) #undef __string_len
4184055411SSteven Rostedt (Google) #define __string_len(item, src, len) __dynamic_array(char, item, -1)
4284055411SSteven Rostedt (Google) 
430563231fSSteven Rostedt (Google) #undef __vstring
440563231fSSteven Rostedt (Google) #define __vstring(item, fmt, ap) __dynamic_array(char, item, -1)
450563231fSSteven Rostedt (Google) 
4684055411SSteven Rostedt (Google) #undef __bitmask
4784055411SSteven Rostedt (Google) #define __bitmask(item, nr_bits) __dynamic_array(unsigned long, item, -1)
4884055411SSteven Rostedt (Google) 
4984055411SSteven Rostedt (Google) #undef __sockaddr
5084055411SSteven Rostedt (Google) #define __sockaddr(field, len) __dynamic_array(u8, field, len)
5184055411SSteven Rostedt (Google) 
5284055411SSteven Rostedt (Google) #undef __rel_dynamic_array
5384055411SSteven Rostedt (Google) #define __rel_dynamic_array(_type, _item, _len) {			\
5484055411SSteven Rostedt (Google) 	.type = "__rel_loc " #_type "[]", .name = #_item,		\
5584055411SSteven Rostedt (Google) 	.size = 4, .align = 4,						\
5684055411SSteven Rostedt (Google) 	.is_signed = is_signed_type(_type), .filter_type = FILTER_OTHER },
5784055411SSteven Rostedt (Google) 
5884055411SSteven Rostedt (Google) #undef __rel_string
5984055411SSteven Rostedt (Google) #define __rel_string(item, src) __rel_dynamic_array(char, item, -1)
6084055411SSteven Rostedt (Google) 
6184055411SSteven Rostedt (Google) #undef __rel_string_len
6284055411SSteven Rostedt (Google) #define __rel_string_len(item, src, len) __rel_dynamic_array(char, item, -1)
6384055411SSteven Rostedt (Google) 
6484055411SSteven Rostedt (Google) #undef __rel_bitmask
6584055411SSteven Rostedt (Google) #define __rel_bitmask(item, nr_bits) __rel_dynamic_array(unsigned long, item, -1)
6684055411SSteven Rostedt (Google) 
6784055411SSteven Rostedt (Google) #undef __rel_sockaddr
6884055411SSteven Rostedt (Google) #define __rel_sockaddr(field, len) __rel_dynamic_array(u8, field, len)
69