File Index
Files and directories
Sign in
FILE

stage3_trace_output.h

File preview with syntax highlighting.

linux-6.19.14/include/trace/stages/stage3_trace_output.h OBJECTIVE-C
  1/* SPDX-License-Identifier: GPL-2.0 */
  2
  3/* Stage 3 definitions for creating trace events */
  4
  5#undef __entry
  6#define __entry field
  7
  8#undef TP_printk
  9#define TP_printk(fmt, args...) fmt "\n", args
 10
 11#undef __get_dynamic_array
 12#define __get_dynamic_array(field)	\
 13		((void *)__entry + (__entry->__data_loc_##field & 0xffff))
 14
 15#undef __get_dynamic_array_len
 16#define __get_dynamic_array_len(field)	\
 17		((__entry->__data_loc_##field >> 16) & 0xffff)
 18
 19#undef __get_str
 20#define __get_str(field) ((char *)__get_dynamic_array(field))
 21
 22#undef __get_rel_dynamic_array
 23#define __get_rel_dynamic_array(field)					\
 24		((void *)__entry + 					\
 25		 offsetof(typeof(*__entry), __rel_loc_##field) +	\
 26		 sizeof(__entry->__rel_loc_##field) +			\
 27		 (__entry->__rel_loc_##field & 0xffff))
 28
 29#undef __get_rel_dynamic_array_len
 30#define __get_rel_dynamic_array_len(field)	\
 31		((__entry->__rel_loc_##field >> 16) & 0xffff)
 32
 33#undef __get_rel_str
 34#define __get_rel_str(field) ((char *)__get_rel_dynamic_array(field))
 35
 36#undef __get_bitmask
 37#define __get_bitmask(field)						\
 38	({								\
 39		void *__bitmask = __get_dynamic_array(field);		\
 40		unsigned int __bitmask_size;				\
 41		__bitmask_size = __get_dynamic_array_len(field);	\
 42		trace_print_bitmask_seq(p, __bitmask, __bitmask_size);	\
 43	})
 44
 45#undef __get_cpumask
 46#define __get_cpumask(field) __get_bitmask(field)
 47
 48#undef __get_rel_bitmask
 49#define __get_rel_bitmask(field)						\
 50	({								\
 51		void *__bitmask = __get_rel_dynamic_array(field);		\
 52		unsigned int __bitmask_size;				\
 53		__bitmask_size = __get_rel_dynamic_array_len(field);	\
 54		trace_print_bitmask_seq(p, __bitmask, __bitmask_size);	\
 55	})
 56
 57#undef __get_rel_cpumask
 58#define __get_rel_cpumask(field) __get_rel_bitmask(field)
 59
 60#undef __get_sockaddr
 61#define __get_sockaddr(field)	((struct sockaddr *)__get_dynamic_array(field))
 62
 63#undef __get_rel_sockaddr
 64#define __get_rel_sockaddr(field)	((struct sockaddr *)__get_rel_dynamic_array(field))
 65
 66#undef __print_flags
 67#define __print_flags(flag, delim, flag_array...)			\
 68	({								\
 69		static const struct trace_print_flags __flags[] =	\
 70			{ flag_array, { -1, NULL }};			\
 71		trace_print_flags_seq(p, delim, flag, __flags);	\
 72	})
 73
 74#undef __print_symbolic
 75#define __print_symbolic(value, symbol_array...)			\
 76	({								\
 77		static const struct trace_print_flags symbols[] =	\
 78			{ symbol_array, { -1, NULL }};			\
 79		trace_print_symbols_seq(p, value, symbols);		\
 80	})
 81
 82#undef __print_flags_u64
 83#undef __print_symbolic_u64
 84#if BITS_PER_LONG == 32
 85#define __print_flags_u64(flag, delim, flag_array...)			\
 86	({								\
 87		static const struct trace_print_flags_u64 __flags[] =	\
 88			{ flag_array, { -1, NULL } };			\
 89		trace_print_flags_seq_u64(p, delim, flag, __flags);	\
 90	})
 91
 92#define __print_symbolic_u64(value, symbol_array...)			\
 93	({								\
 94		static const struct trace_print_flags_u64 symbols[] =	\
 95			{ symbol_array, { -1, NULL } };			\
 96		trace_print_symbols_seq_u64(p, value, symbols);	\
 97	})
 98#else
 99#define __print_flags_u64(flag, delim, flag_array...)			\
100			__print_flags(flag, delim, flag_array)
101
102#define __print_symbolic_u64(value, symbol_array...)			\
103			__print_symbolic(value, symbol_array)
104#endif
105
106#undef __print_hex
107#define __print_hex(buf, buf_len)					\
108	trace_print_hex_seq(p, buf, buf_len, false)
109
110#undef __print_hex_str
111#define __print_hex_str(buf, buf_len)					\
112	trace_print_hex_seq(p, buf, buf_len, true)
113
114#undef __print_array
115#define __print_array(array, count, el_size)				\
116	({								\
117		BUILD_BUG_ON(el_size != 1 && el_size != 2 &&		\
118			     el_size != 4 && el_size != 8);		\
119		trace_print_array_seq(p, array, count, el_size);	\
120	})
121
122#undef __print_dynamic_array
123#define __print_dynamic_array(array, el_size)				\
124	({								\
125		__print_array(__get_dynamic_array(array),		\
126			      __get_dynamic_array_len(array) / (el_size), \
127			      (el_size));				\
128	})
129
130#undef __print_hex_dump
131#define __print_hex_dump(prefix_str, prefix_type,			\
132			 rowsize, groupsize, buf, len, ascii)		\
133	trace_print_hex_dump_seq(p, prefix_str, prefix_type,		\
134				 rowsize, groupsize, buf, len, ascii)
135
136#undef __print_ns_to_secs
137#define __print_ns_to_secs(value)			\
138	({						\
139		u64 ____val = (u64)(value);		\
140		do_div(____val, NSEC_PER_SEC);		\
141		____val;				\
142	})
143
144#undef __print_ns_without_secs
145#define __print_ns_without_secs(value)			\
146	({						\
147		u64 ____val = (u64)(value);		\
148		(u32) do_div(____val, NSEC_PER_SEC);	\
149	})
150
151#undef __get_buf
152#define __get_buf(len)		trace_seq_acquire(p, (len))
~/ Read-only file preview.