diff options
Diffstat (limited to 'include/linux/uprobes.h')
| -rw-r--r-- | include/linux/uprobes.h | 8 | 
1 files changed, 8 insertions, 0 deletions
diff --git a/include/linux/uprobes.h b/include/linux/uprobes.h index 02b83db8e2c..06f28beed7c 100644 --- a/include/linux/uprobes.h +++ b/include/linux/uprobes.h @@ -38,6 +38,8 @@ struct inode;  #define UPROBE_HANDLER_REMOVE		1  #define UPROBE_HANDLER_MASK		1 +#define MAX_URETPROBE_DEPTH		64 +  enum uprobe_filter_ctx {  	UPROBE_FILTER_REGISTER,  	UPROBE_FILTER_UNREGISTER, @@ -46,6 +48,9 @@ enum uprobe_filter_ctx {  struct uprobe_consumer {  	int (*handler)(struct uprobe_consumer *self, struct pt_regs *regs); +	int (*ret_handler)(struct uprobe_consumer *self, +				unsigned long func, +				struct pt_regs *regs);  	bool (*filter)(struct uprobe_consumer *self,  				enum uprobe_filter_ctx ctx,  				struct mm_struct *mm); @@ -68,6 +73,8 @@ struct uprobe_task {  	enum uprobe_task_state		state;  	struct arch_uprobe_task		autask; +	struct return_instance		*return_instances; +	unsigned int			depth;  	struct uprobe			*active_uprobe;  	unsigned long			xol_vaddr; @@ -100,6 +107,7 @@ struct uprobes_state {  extern int __weak set_swbp(struct arch_uprobe *aup, struct mm_struct *mm, unsigned long vaddr);  extern int __weak set_orig_insn(struct arch_uprobe *aup, struct mm_struct *mm, unsigned long vaddr);  extern bool __weak is_swbp_insn(uprobe_opcode_t *insn); +extern bool __weak is_trap_insn(uprobe_opcode_t *insn);  extern int uprobe_register(struct inode *inode, loff_t offset, struct uprobe_consumer *uc);  extern int uprobe_apply(struct inode *inode, loff_t offset, struct uprobe_consumer *uc, bool);  extern void uprobe_unregister(struct inode *inode, loff_t offset, struct uprobe_consumer *uc);  |