linux/include/linux/trace.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2#ifndef _LINUX_TRACE_H
   3#define _LINUX_TRACE_H
   4
   5#ifdef CONFIG_TRACING
   6
   7#define TRACE_EXPORT_FUNCTION   BIT(0)
   8#define TRACE_EXPORT_EVENT      BIT(1)
   9#define TRACE_EXPORT_MARKER     BIT(2)
  10
  11/*
  12 * The trace export - an export of Ftrace output. The trace_export
  13 * can process traces and export them to a registered destination as
  14 * an addition to the current only output of Ftrace - i.e. ring buffer.
  15 *
  16 * If you want traces to be sent to some other place rather than ring
  17 * buffer only, just need to register a new trace_export and implement
  18 * its own .write() function for writing traces to the storage.
  19 *
  20 * next         - pointer to the next trace_export
  21 * write        - copy traces which have been delt with ->commit() to
  22 *                the destination
  23 * flags        - which ftrace to be exported
  24 */
  25struct trace_export {
  26        struct trace_export __rcu       *next;
  27        void (*write)(struct trace_export *, const void *, unsigned int);
  28        int flags;
  29};
  30
  31int register_ftrace_export(struct trace_export *export);
  32int unregister_ftrace_export(struct trace_export *export);
  33
  34struct trace_array;
  35
  36void trace_printk_init_buffers(void);
  37__printf(3, 4)
  38int trace_array_printk(struct trace_array *tr, unsigned long ip,
  39                       const char *fmt, ...);
  40int trace_array_init_printk(struct trace_array *tr);
  41void trace_array_put(struct trace_array *tr);
  42struct trace_array *trace_array_get_by_name(const char *name);
  43int trace_array_destroy(struct trace_array *tr);
  44
  45/* For osnoise tracer */
  46int osnoise_arch_register(void);
  47void osnoise_arch_unregister(void);
  48void osnoise_trace_irq_entry(int id);
  49void osnoise_trace_irq_exit(int id, const char *desc);
  50
  51#endif  /* CONFIG_TRACING */
  52
  53#endif  /* _LINUX_TRACE_H */
  54