diff options
Diffstat (limited to 'include/linux/ftrace.h')
| -rw-r--r-- | include/linux/ftrace.h | 17 | 
1 files changed, 11 insertions, 6 deletions
diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h index 92691d85c32..f83e17a40e8 100644 --- a/include/linux/ftrace.h +++ b/include/linux/ftrace.h @@ -74,7 +74,7 @@ typedef void (*ftrace_func_t)(unsigned long ip, unsigned long parent_ip,   * SAVE_REGS - The ftrace_ops wants regs saved at each function called   *            and passed to the callback. If this flag is set, but the   *            architecture does not support passing regs - *            (ARCH_SUPPORTS_FTRACE_SAVE_REGS is not defined), then the + *            (CONFIG_DYNAMIC_FTRACE_WITH_REGS is not defined), then the   *            ftrace_ops will fail to register, unless the next flag   *            is set.   * SAVE_REGS_IF_SUPPORTED - This is the same as SAVE_REGS, but if the @@ -89,6 +89,7 @@ typedef void (*ftrace_func_t)(unsigned long ip, unsigned long parent_ip,   *            that the call back has its own recursion protection. If it does   *            not set this, then the ftrace infrastructure will add recursion   *            protection for the caller. + * STUB   - The ftrace_ops is just a place holder.   */  enum {  	FTRACE_OPS_FL_ENABLED			= 1 << 0, @@ -98,6 +99,7 @@ enum {  	FTRACE_OPS_FL_SAVE_REGS			= 1 << 4,  	FTRACE_OPS_FL_SAVE_REGS_IF_SUPPORTED	= 1 << 5,  	FTRACE_OPS_FL_RECURSION_SAFE		= 1 << 6, +	FTRACE_OPS_FL_STUB			= 1 << 7,  };  struct ftrace_ops { @@ -259,8 +261,10 @@ struct ftrace_probe_ops {  	void			(*func)(unsigned long ip,  					unsigned long parent_ip,  					void **data); -	int			(*callback)(unsigned long ip, void **data); -	void			(*free)(void **data); +	int			(*init)(struct ftrace_probe_ops *ops, +					unsigned long ip, void **data); +	void			(*free)(struct ftrace_probe_ops *ops, +					unsigned long ip, void **data);  	int			(*print)(struct seq_file *m,  					 unsigned long ip,  					 struct ftrace_probe_ops *ops, @@ -394,7 +398,6 @@ ssize_t ftrace_filter_write(struct file *file, const char __user *ubuf,  			    size_t cnt, loff_t *ppos);  ssize_t ftrace_notrace_write(struct file *file, const char __user *ubuf,  			     size_t cnt, loff_t *ppos); -loff_t ftrace_regex_lseek(struct file *file, loff_t offset, int whence);  int ftrace_regex_release(struct inode *inode, struct file *file);  void __init @@ -418,7 +421,7 @@ void ftrace_modify_all_code(int command);  #endif  #ifndef FTRACE_REGS_ADDR -#ifdef ARCH_SUPPORTS_FTRACE_SAVE_REGS +#ifdef CONFIG_DYNAMIC_FTRACE_WITH_REGS  # define FTRACE_REGS_ADDR ((unsigned long)ftrace_regs_caller)  #else  # define FTRACE_REGS_ADDR FTRACE_ADDR @@ -480,7 +483,7 @@ extern int ftrace_make_nop(struct module *mod,   */  extern int ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr); -#ifdef ARCH_SUPPORTS_FTRACE_SAVE_REGS +#ifdef CONFIG_DYNAMIC_FTRACE_WITH_REGS  /**   * ftrace_modify_call - convert from one addr to another (no nop)   * @rec: the mcount call site record @@ -567,6 +570,8 @@ static inline int  ftrace_regex_release(struct inode *inode, struct file *file) { return -ENODEV; }  #endif /* CONFIG_DYNAMIC_FTRACE */ +loff_t ftrace_filter_lseek(struct file *file, loff_t offset, int whence); +  /* totally disable ftrace - can not re-enable after this */  void ftrace_kill(void);  |