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),	\
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) 
49*8230f27bSSteven Rostedt (Google) #undef __cpumask
50*8230f27bSSteven Rostedt (Google) #define __cpumask(item) __dynamic_array(cpumask_t *, item, -1)
51*8230f27bSSteven Rostedt (Google) 
5284055411SSteven Rostedt (Google) #undef __sockaddr
5384055411SSteven Rostedt (Google) #define __sockaddr(field, len) __dynamic_array(u8, field, len)
5484055411SSteven Rostedt (Google) 
5584055411SSteven Rostedt (Google) #undef __rel_dynamic_array
5684055411SSteven Rostedt (Google) #define __rel_dynamic_array(_type, _item, _len) {			\
5784055411SSteven Rostedt (Google) 	.type = "__rel_loc " #_type "[]", .name = #_item,		\
5884055411SSteven Rostedt (Google) 	.size = 4, .align = 4,						\
5984055411SSteven Rostedt (Google) 	.is_signed = is_signed_type(_type), .filter_type = FILTER_OTHER },
6084055411SSteven Rostedt (Google) 
6184055411SSteven Rostedt (Google) #undef __rel_string
6284055411SSteven Rostedt (Google) #define __rel_string(item, src) __rel_dynamic_array(char, item, -1)
6384055411SSteven Rostedt (Google) 
6484055411SSteven Rostedt (Google) #undef __rel_string_len
6584055411SSteven Rostedt (Google) #define __rel_string_len(item, src, len) __rel_dynamic_array(char, item, -1)
6684055411SSteven Rostedt (Google) 
6784055411SSteven Rostedt (Google) #undef __rel_bitmask
6884055411SSteven Rostedt (Google) #define __rel_bitmask(item, nr_bits) __rel_dynamic_array(unsigned long, item, -1)
6984055411SSteven Rostedt (Google) 
70*8230f27bSSteven Rostedt (Google) #undef __rel_cpumask
71*8230f27bSSteven Rostedt (Google) #define __rel_cpumask(item) __rel_dynamic_array(cpumask_t *, item, -1)
72*8230f27bSSteven Rostedt (Google) 
7384055411SSteven Rostedt (Google) #undef __rel_sockaddr
7484055411SSteven Rostedt (Google) #define __rel_sockaddr(field, len) __rel_dynamic_array(u8, field, len)
75