| 1 |
|
| 2 | #ifndef _LINUX_KERNEL_FTRACE_INTERNAL_H
|
| 3 | #define _LINUX_KERNEL_FTRACE_INTERNAL_H
|
| 4 |
|
| 5 | int __register_ftrace_function(struct ftrace_ops *ops);
|
| 6 | int __unregister_ftrace_function(struct ftrace_ops *ops);
|
| 7 |
|
| 8 | #ifdef CONFIG_FUNCTION_TRACER
|
| 9 |
|
| 10 | extern struct mutex ftrace_lock;
|
| 11 | extern struct ftrace_ops global_ops;
|
| 12 |
|
| 13 | #ifdef CONFIG_DYNAMIC_FTRACE
|
| 14 |
|
| 15 | int ftrace_startup(struct ftrace_ops *ops, int command);
|
| 16 | int ftrace_shutdown(struct ftrace_ops *ops, int command);
|
| 17 | int ftrace_ops_test(struct ftrace_ops *ops, unsigned long ip, void *regs);
|
| 18 | int ftrace_startup_subops(struct ftrace_ops *ops, struct ftrace_ops *subops, int command);
|
| 19 | int ftrace_shutdown_subops(struct ftrace_ops *ops, struct ftrace_ops *subops, int command);
|
| 20 |
|
| 21 | #else
|
| 22 |
|
| 23 |
|
| 24 | # define ftrace_startup(ops, command) \
|
| 25 | ({ \
|
| 26 | int ___ret = __register_ftrace_function(ops); \
|
| 27 | if (!___ret) \
|
| 28 | (ops)->flags |= FTRACE_OPS_FL_ENABLED; \
|
| 29 | ___ret; \
|
| 30 | })
|
| 31 | # define ftrace_shutdown(ops, command) \
|
| 32 | ({ \
|
| 33 | int ___ret = __unregister_ftrace_function(ops); \
|
| 34 | if (!___ret) \
|
| 35 | (ops)->flags &= ~FTRACE_OPS_FL_ENABLED; \
|
| 36 | ___ret; \
|
| 37 | })
|
| 38 | static inline int
|
| 39 | ftrace_ops_test(struct ftrace_ops *ops, unsigned long ip, void *regs)
|
| 40 | {
|
| 41 | return 1;
|
| 42 | }
|
| 43 | static inline int ftrace_startup_subops(struct ftrace_ops *ops, struct ftrace_ops *subops, int command)
|
| 44 | {
|
| 45 | return -EINVAL;
|
| 46 | }
|
| 47 | static inline int ftrace_shutdown_subops(struct ftrace_ops *ops, struct ftrace_ops *subops, int command)
|
| 48 | {
|
| 49 | return -EINVAL;
|
| 50 | }
|
| 51 | #endif
|
| 52 |
|
| 53 | #ifdef CONFIG_FUNCTION_GRAPH_TRACER
|
| 54 | extern int ftrace_graph_active;
|
| 55 | # ifdef CONFIG_DYNAMIC_FTRACE
|
| 56 | extern void fgraph_update_pid_func(void);
|
| 57 | # else
|
| 58 | static inline void fgraph_update_pid_func(void) {}
|
| 59 | # endif
|
| 60 | #else
|
| 61 | # define ftrace_graph_active 0
|
| 62 | static inline void fgraph_update_pid_func(void) {}
|
| 63 | #endif
|
| 64 |
|
| 65 | #else
|
| 66 | #endif
|
| 67 |
|
| 68 | #endif
|