13306fc4aSSteven Rostedt (VMware) /* SPDX-License-Identifier: GPL-2.0 */
23306fc4aSSteven Rostedt (VMware) #ifndef _LINUX_KERNEL_FTRACE_INTERNAL_H
33306fc4aSSteven Rostedt (VMware) #define _LINUX_KERNEL_FTRACE_INTERNAL_H
43306fc4aSSteven Rostedt (VMware)
5*7d8b31b7SArnd Bergmann int __register_ftrace_function(struct ftrace_ops *ops);
6*7d8b31b7SArnd Bergmann int __unregister_ftrace_function(struct ftrace_ops *ops);
7*7d8b31b7SArnd Bergmann
83306fc4aSSteven Rostedt (VMware) #ifdef CONFIG_FUNCTION_TRACER
93306fc4aSSteven Rostedt (VMware)
103306fc4aSSteven Rostedt (VMware) extern struct mutex ftrace_lock;
113306fc4aSSteven Rostedt (VMware) extern struct ftrace_ops global_ops;
123306fc4aSSteven Rostedt (VMware)
133306fc4aSSteven Rostedt (VMware) #ifdef CONFIG_DYNAMIC_FTRACE
143306fc4aSSteven Rostedt (VMware)
153306fc4aSSteven Rostedt (VMware) int ftrace_startup(struct ftrace_ops *ops, int command);
163306fc4aSSteven Rostedt (VMware) int ftrace_shutdown(struct ftrace_ops *ops, int command);
173306fc4aSSteven Rostedt (VMware) int ftrace_ops_test(struct ftrace_ops *ops, unsigned long ip, void *regs);
183306fc4aSSteven Rostedt (VMware)
193306fc4aSSteven Rostedt (VMware) #else /* !CONFIG_DYNAMIC_FTRACE */
203306fc4aSSteven Rostedt (VMware)
213306fc4aSSteven Rostedt (VMware) /* Keep as macros so we do not need to define the commands */
223306fc4aSSteven Rostedt (VMware) # define ftrace_startup(ops, command) \
233306fc4aSSteven Rostedt (VMware) ({ \
243306fc4aSSteven Rostedt (VMware) int ___ret = __register_ftrace_function(ops); \
253306fc4aSSteven Rostedt (VMware) if (!___ret) \
263306fc4aSSteven Rostedt (VMware) (ops)->flags |= FTRACE_OPS_FL_ENABLED; \
273306fc4aSSteven Rostedt (VMware) ___ret; \
283306fc4aSSteven Rostedt (VMware) })
293306fc4aSSteven Rostedt (VMware) # define ftrace_shutdown(ops, command) \
303306fc4aSSteven Rostedt (VMware) ({ \
313306fc4aSSteven Rostedt (VMware) int ___ret = __unregister_ftrace_function(ops); \
323306fc4aSSteven Rostedt (VMware) if (!___ret) \
333306fc4aSSteven Rostedt (VMware) (ops)->flags &= ~FTRACE_OPS_FL_ENABLED; \
343306fc4aSSteven Rostedt (VMware) ___ret; \
353306fc4aSSteven Rostedt (VMware) })
363306fc4aSSteven Rostedt (VMware) static inline int
ftrace_ops_test(struct ftrace_ops * ops,unsigned long ip,void * regs)373306fc4aSSteven Rostedt (VMware) ftrace_ops_test(struct ftrace_ops *ops, unsigned long ip, void *regs)
383306fc4aSSteven Rostedt (VMware) {
393306fc4aSSteven Rostedt (VMware) return 1;
403306fc4aSSteven Rostedt (VMware) }
413306fc4aSSteven Rostedt (VMware) #endif /* CONFIG_DYNAMIC_FTRACE */
423306fc4aSSteven Rostedt (VMware)
433306fc4aSSteven Rostedt (VMware) #ifdef CONFIG_FUNCTION_GRAPH_TRACER
443306fc4aSSteven Rostedt (VMware) extern int ftrace_graph_active;
453306fc4aSSteven Rostedt (VMware) void update_function_graph_func(void);
463306fc4aSSteven Rostedt (VMware) #else /* !CONFIG_FUNCTION_GRAPH_TRACER */
473306fc4aSSteven Rostedt (VMware) # define ftrace_graph_active 0
update_function_graph_func(void)483306fc4aSSteven Rostedt (VMware) static inline void update_function_graph_func(void) { }
493306fc4aSSteven Rostedt (VMware) #endif /* CONFIG_FUNCTION_GRAPH_TRACER */
503306fc4aSSteven Rostedt (VMware)
513306fc4aSSteven Rostedt (VMware) #else /* !CONFIG_FUNCTION_TRACER */
523306fc4aSSteven Rostedt (VMware) #endif /* CONFIG_FUNCTION_TRACER */
533306fc4aSSteven Rostedt (VMware)
543306fc4aSSteven Rostedt (VMware) #endif
55