forked from mirrors/linux
		
	 a773d41927
			
		
	
	
		a773d41927
		
	
	
	
	
		
			
			By passing an export descriptor to the write function, users don't need to keep a global static pointer and can rely on container_of() to fetch their own structure. Link: http://lkml.kernel.org/r/20170602102025.5140-1-felipe.balbi@linux.intel.com Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org> Reviewed-by: Chunyan Zhang <zhang.chunyan@linaro.org> Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
		
			
				
	
	
		
			29 lines
		
	
	
	
		
			964 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			29 lines
		
	
	
	
		
			964 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0 */
 | |
| #ifndef _LINUX_TRACE_H
 | |
| #define _LINUX_TRACE_H
 | |
| 
 | |
| #ifdef CONFIG_TRACING
 | |
| /*
 | |
|  * The trace export - an export of Ftrace output. The trace_export
 | |
|  * can process traces and export them to a registered destination as
 | |
|  * an addition to the current only output of Ftrace - i.e. ring buffer.
 | |
|  *
 | |
|  * If you want traces to be sent to some other place rather than ring
 | |
|  * buffer only, just need to register a new trace_export and implement
 | |
|  * its own .write() function for writing traces to the storage.
 | |
|  *
 | |
|  * next		- pointer to the next trace_export
 | |
|  * write	- copy traces which have been delt with ->commit() to
 | |
|  *		  the destination
 | |
|  */
 | |
| struct trace_export {
 | |
| 	struct trace_export __rcu	*next;
 | |
| 	void (*write)(struct trace_export *, const void *, unsigned int);
 | |
| };
 | |
| 
 | |
| int register_ftrace_export(struct trace_export *export);
 | |
| int unregister_ftrace_export(struct trace_export *export);
 | |
| 
 | |
| #endif	/* CONFIG_TRACING */
 | |
| 
 | |
| #endif	/* _LINUX_TRACE_H */
 |