| 1 | // SPDX-License-Identifier: GPL-2.0 |
| 2 | #ifndef __TRACE_EVENTS_H |
| 3 | #define __TRACE_EVENTS_H |
| 4 | |
| 5 | #include <linux/trace_seq.h> |
| 6 | #include "trace.h" |
| 7 | |
| 8 | extern enum print_line_t |
| 9 | trace_print_bputs_msg_only(struct trace_iterator *iter); |
| 10 | extern enum print_line_t |
| 11 | trace_print_bprintk_msg_only(struct trace_iterator *iter); |
| 12 | extern enum print_line_t |
| 13 | trace_print_printk_msg_only(struct trace_iterator *iter); |
| 14 | |
| 15 | extern int |
| 16 | seq_print_ip_sym(struct trace_seq *s, unsigned long ip, |
| 17 | unsigned long sym_flags); |
| 18 | |
| 19 | static inline int seq_print_ip_sym_offset(struct trace_seq *s, unsigned long ip, |
| 20 | unsigned long sym_flags) |
| 21 | { |
| 22 | return seq_print_ip_sym(s, ip, sym_flags: sym_flags | TRACE_ITER(SYM_OFFSET)); |
| 23 | } |
| 24 | static inline int seq_print_ip_sym_no_offset(struct trace_seq *s, unsigned long ip, |
| 25 | unsigned long sym_flags) |
| 26 | { |
| 27 | return seq_print_ip_sym(s, ip, sym_flags: sym_flags & ~TRACE_ITER(SYM_OFFSET)); |
| 28 | } |
| 29 | |
| 30 | extern void trace_seq_print_sym(struct trace_seq *s, unsigned long address, bool offset); |
| 31 | extern int trace_print_context(struct trace_iterator *iter); |
| 32 | extern int trace_print_lat_context(struct trace_iterator *iter); |
| 33 | extern enum print_line_t print_event_fields(struct trace_iterator *iter, |
| 34 | struct trace_event *event); |
| 35 | |
| 36 | extern void trace_event_read_lock(void); |
| 37 | extern void trace_event_read_unlock(void); |
| 38 | extern struct trace_event *ftrace_find_event(int type); |
| 39 | |
| 40 | extern enum print_line_t trace_nop_print(struct trace_iterator *iter, |
| 41 | int flags, struct trace_event *event); |
| 42 | extern int |
| 43 | trace_print_lat_fmt(struct trace_seq *s, struct trace_entry *entry); |
| 44 | |
| 45 | /* used by module unregistering */ |
| 46 | extern int __unregister_trace_event(struct trace_event *event); |
| 47 | extern struct rw_semaphore trace_event_sem; |
| 48 | |
| 49 | #define SEQ_PUT_FIELD(s, x) \ |
| 50 | trace_seq_putmem(s, &(x), sizeof(x)) |
| 51 | |
| 52 | #define SEQ_PUT_HEX_FIELD(s, x) \ |
| 53 | trace_seq_putmem_hex(s, &(x), sizeof(x)) |
| 54 | |
| 55 | #ifdef CONFIG_FUNCTION_TRACE_ARGS |
| 56 | void print_function_args(struct trace_seq *s, unsigned long *args, |
| 57 | unsigned long func); |
| 58 | #else |
| 59 | static inline void print_function_args(struct trace_seq *s, unsigned long *args, |
| 60 | unsigned long func) { |
| 61 | trace_seq_puts(s, str: "()" ); |
| 62 | } |
| 63 | #endif |
| 64 | #endif |
| 65 | |
| 66 | |