~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/linux/trace.h

Version: ~ [ linux-6.11-rc3 ] ~ [ linux-6.10.4 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.45 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.104 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.164 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.223 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.281 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.319 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0 */
  2 #ifndef _LINUX_TRACE_H
  3 #define _LINUX_TRACE_H
  4 
  5 #define TRACE_EXPORT_FUNCTION   BIT(0)
  6 #define TRACE_EXPORT_EVENT      BIT(1)
  7 #define TRACE_EXPORT_MARKER     BIT(2)
  8 
  9 /*
 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.
 13  *
 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.
 17  *
 18  * next         - pointer to the next trace_export
 19  * write        - copy traces which have been delt with ->commit() to
 20  *                the destination
 21  * flags        - which ftrace to be exported
 22  */
 23 struct trace_export {
 24         struct trace_export __rcu       *next;
 25         void (*write)(struct trace_export *, const void *, unsigned int);
 26         int flags;
 27 };
 28 
 29 struct trace_array;
 30 
 31 #ifdef CONFIG_TRACING
 32 
 33 int register_ftrace_export(struct trace_export *export);
 34 int unregister_ftrace_export(struct trace_export *export);
 35 
 36 /**
 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
 40  */
 41 #define trace_array_puts(tr, str)                                       \
 42         ({                                                              \
 43                 str ? __trace_array_puts(tr, _THIS_IP_, str, strlen(str)) : -1; \
 44         })
 45 int __trace_array_puts(struct trace_array *tr, unsigned long ip,
 46                        const char *str, int size);
 47 
 48 void trace_printk_init_buffers(void);
 49 __printf(3, 4)
 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, const char *systems);
 55 int trace_array_destroy(struct trace_array *tr);
 56 
 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);
 62 
 63 #else /* CONFIG_TRACING */
 64 static inline int register_ftrace_export(struct trace_export *export)
 65 {
 66         return -EINVAL;
 67 }
 68 static inline int unregister_ftrace_export(struct trace_export *export)
 69 {
 70         return 0;
 71 }
 72 static inline void trace_printk_init_buffers(void)
 73 {
 74 }
 75 static inline int trace_array_printk(struct trace_array *tr, unsigned long ip,
 76                                      const char *fmt, ...)
 77 {
 78         return 0;
 79 }
 80 static inline int trace_array_init_printk(struct trace_array *tr)
 81 {
 82         return -EINVAL;
 83 }
 84 static inline void trace_array_put(struct trace_array *tr)
 85 {
 86 }
 87 static inline struct trace_array *trace_array_get_by_name(const char *name, const char *systems)
 88 {
 89         return NULL;
 90 }
 91 static inline int trace_array_destroy(struct trace_array *tr)
 92 {
 93         return 0;
 94 }
 95 #endif  /* CONFIG_TRACING */
 96 
 97 #endif  /* _LINUX_TRACE_H */
 98 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php