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, unsignedlong ip, void *regs); int ftrace_startup_subops(struct ftrace_ops *ops, struct ftrace_ops *subops, int command); int ftrace_shutdown_subops(struct ftrace_ops *ops, struct ftrace_ops *subops, int command);
#else/* !CONFIG_DYNAMIC_FTRACE */
/* Keep as macros so we do not need to define the commands */ # define ftrace_startup(ops, command) \
({ \ int ___ret = __register_ftrace_function(ops); \ if (!___ret) \
(ops)->flags |= FTRACE_OPS_FL_ENABLED; \
___ret; \
}) # define ftrace_shutdown(ops, command) \
({ \ int ___ret = __unregister_ftrace_function(ops); \ if (!___ret) \
(ops)->flags &= ~FTRACE_OPS_FL_ENABLED; \
___ret; \
}) staticinlineint
ftrace_ops_test(struct ftrace_ops *ops, unsignedlong ip, void *regs)
{ return 1;
} staticinlineint ftrace_startup_subops(struct ftrace_ops *ops, struct ftrace_ops *subops, int command)
{ return -EINVAL;
} staticinlineint ftrace_shutdown_subops(struct ftrace_ops *ops, struct ftrace_ops *subops, int command)
{ return -EINVAL;
} #endif/* CONFIG_DYNAMIC_FTRACE */
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.