xref: /linux/include/linux/trace.h (revision 478409dd683db76cbcfe7bf8332a37f01deb0a2d)
1*478409ddSChunyan Zhang #ifndef _LINUX_TRACE_H
2*478409ddSChunyan Zhang #define _LINUX_TRACE_H
3*478409ddSChunyan Zhang 
4*478409ddSChunyan Zhang #ifdef CONFIG_TRACING
5*478409ddSChunyan Zhang /*
6*478409ddSChunyan Zhang  * The trace export - an export of Ftrace output. The trace_export
7*478409ddSChunyan Zhang  * can process traces and export them to a registered destination as
8*478409ddSChunyan Zhang  * an addition to the current only output of Ftrace - i.e. ring buffer.
9*478409ddSChunyan Zhang  *
10*478409ddSChunyan Zhang  * If you want traces to be sent to some other place rather than ring
11*478409ddSChunyan Zhang  * buffer only, just need to register a new trace_export and implement
12*478409ddSChunyan Zhang  * its own .write() function for writing traces to the storage.
13*478409ddSChunyan Zhang  *
14*478409ddSChunyan Zhang  * next		- pointer to the next trace_export
15*478409ddSChunyan Zhang  * write	- copy traces which have been delt with ->commit() to
16*478409ddSChunyan Zhang  *		  the destination
17*478409ddSChunyan Zhang  */
18*478409ddSChunyan Zhang struct trace_export {
19*478409ddSChunyan Zhang 	struct trace_export __rcu	*next;
20*478409ddSChunyan Zhang 	void (*write)(const void *, unsigned int);
21*478409ddSChunyan Zhang };
22*478409ddSChunyan Zhang 
23*478409ddSChunyan Zhang int register_ftrace_export(struct trace_export *export);
24*478409ddSChunyan Zhang int unregister_ftrace_export(struct trace_export *export);
25*478409ddSChunyan Zhang 
26*478409ddSChunyan Zhang #endif	/* CONFIG_TRACING */
27*478409ddSChunyan Zhang 
28*478409ddSChunyan Zhang #endif	/* _LINUX_TRACE_H */
29