1 /* SPDX-License-Identifier: GPL-2.0 */
5 #define TRACE_EXPORT_FUNCTION BIT(0)
6 #define TRACE_EXPORT_EVENT BIT(1)
7 #define TRACE_EXPORT_MARKER BIT(2)
10 * The trace export - an export of Ftrace output. The trace_export
11 * can process traces and export them to a registered destination as
12 * an addition to the current only output of Ftrace - i.e. ring buffer.
14 * If you want traces to be sent to some other place rather than ring
15 * buffer only, just need to register a new trace_export and implement
16 * its own .write() function for writing traces to the storage.
18 * next - pointer to the next trace_export
19 * write - copy traces which have been delt with ->commit() to
21 * flags - which ftrace to be exported
24 struct trace_export __rcu *next;
25 void (*write)(struct trace_export *, const void *, unsigned int);
33 int register_ftrace_export(struct trace_export *export);
34 int unregister_ftrace_export(struct trace_export *export);
37 * trace_array_puts - write a constant string into the trace buffer.
38 * @tr: The trace array to write to
39 * @str: The constant string to write
41 #define trace_array_puts(tr, str) \
43 str ? __trace_array_puts(tr, _THIS_IP_, str, strlen(str)) : -1; \
45 int __trace_array_puts(struct trace_array *tr, unsigned long ip,
46 const char *str, int size);
48 void trace_printk_init_buffers(void);
50 int trace_array_printk(struct trace_array *tr, unsigned long ip,
51 const char *fmt, ...);
52 int trace_array_init_printk(struct trace_array *tr);
53 void trace_array_put(struct trace_array *tr);
54 struct trace_array *trace_array_get_by_name(const char *name);
55 int trace_array_destroy(struct trace_array *tr);
57 /* For osnoise tracer */
58 int osnoise_arch_register(void);
59 void osnoise_arch_unregister(void);
60 void osnoise_trace_irq_entry(int id);
61 void osnoise_trace_irq_exit(int id, const char *desc);
63 #else /* CONFIG_TRACING */
64 static inline int register_ftrace_export(struct trace_export *export)
68 static inline int unregister_ftrace_export(struct trace_export *export)
72 static inline void trace_printk_init_buffers(void)
75 static inline int trace_array_printk(struct trace_array *tr, unsigned long ip,
80 static inline int trace_array_init_printk(struct trace_array *tr)
84 static inline void trace_array_put(struct trace_array *tr)
87 static inline struct trace_array *trace_array_get_by_name(const char *name)
91 static inline int trace_array_destroy(struct trace_array *tr)
95 #endif /* CONFIG_TRACING */
97 #endif /* _LINUX_TRACE_H */