#ifndef _LINUX_KERNEL_FTRACE_INTERNAL_H
#define _LINUX_KERNEL_FTRACE_INTERNAL_H
#ifdef CONFIG_FUNCTION_TRACER
#define do_for_each_ftrace_op(op, list) \
op = rcu_dereference_raw_notrace(list); \
#define while_for_each_ftrace_op(op) \
while (likely(op = rcu_dereference_raw_notrace((op)->next)) && \
unlikely((op) != &ftrace_list_end))
extern struct ftrace_ops __rcu *ftrace_ops_list;
extern struct ftrace_ops ftrace_list_end;
extern struct mutex ftrace_lock;
extern struct ftrace_ops global_ops;
#ifdef CONFIG_DYNAMIC_FTRACE
int ftrace_startup(struct ftrace_ops *ops, int command);
int ftrace_shutdown(struct ftrace_ops *ops, int command);
int ftrace_ops_test(struct ftrace_ops *ops, unsigned long ip, void *regs);
int __register_ftrace_function(struct ftrace_ops *ops);
int __unregister_ftrace_function(struct ftrace_ops *ops);
# define ftrace_startup(ops, command) \
int ___ret = __register_ftrace_function(ops); \
(ops)->flags |= FTRACE_OPS_FL_ENABLED; \
# define ftrace_shutdown(ops, command) \
int ___ret = __unregister_ftrace_function(ops); \
(ops)->flags &= ~FTRACE_OPS_FL_ENABLED; \
ftrace_ops_test(struct ftrace_ops *ops, unsigned long ip, void *regs)