2012-06-19 06:56:58

by Rabin Vincent

[permalink] [raw]
Subject: [PATCH] uprobes: move function declarations out of arch

Move the arch_* function declarations to the common header so that they
don't have to be copy/pasted verbatim across arches.

Signed-off-by: Rabin Vincent <[email protected]>
---
arch/x86/include/asm/uprobes.h | 6 ------
include/linux/uprobes.h | 9 +++++++++
2 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/arch/x86/include/asm/uprobes.h b/arch/x86/include/asm/uprobes.h
index f3971bb..95488b3 100644
--- a/arch/x86/include/asm/uprobes.h
+++ b/arch/x86/include/asm/uprobes.h
@@ -48,10 +48,4 @@ struct arch_uprobe_task {
#endif
};

-extern int arch_uprobe_analyze_insn(struct arch_uprobe *aup, struct mm_struct *mm, unsigned long addr);
-extern int arch_uprobe_pre_xol(struct arch_uprobe *aup, struct pt_regs *regs);
-extern int arch_uprobe_post_xol(struct arch_uprobe *aup, struct pt_regs *regs);
-extern bool arch_uprobe_xol_was_trapped(struct task_struct *tsk);
-extern int arch_uprobe_exception_notify(struct notifier_block *self, unsigned long val, void *data);
-extern void arch_uprobe_abort_xol(struct arch_uprobe *aup, struct pt_regs *regs);
#endif /* _ASM_UPROBES_H */
diff --git a/include/linux/uprobes.h b/include/linux/uprobes.h
index efe4b33..e2d2948 100644
--- a/include/linux/uprobes.h
+++ b/include/linux/uprobes.h
@@ -30,6 +30,8 @@
struct vm_area_struct;
struct mm_struct;
struct inode;
+struct notifier_block;
+struct arch_uprobe;

#ifdef CONFIG_ARCH_SUPPORTS_UPROBES
# include <asm/uprobes.h>
@@ -118,6 +120,13 @@ extern bool uprobe_deny_signal(void);
extern bool __weak arch_uprobe_skip_sstep(struct arch_uprobe *aup, struct pt_regs *regs);
extern void uprobe_clear_state(struct mm_struct *mm);
extern void uprobe_reset_state(struct mm_struct *mm);
+
+extern int arch_uprobe_analyze_insn(struct arch_uprobe *aup, struct mm_struct *mm, unsigned long addr);
+extern int arch_uprobe_pre_xol(struct arch_uprobe *aup, struct pt_regs *regs);
+extern int arch_uprobe_post_xol(struct arch_uprobe *aup, struct pt_regs *regs);
+extern bool arch_uprobe_xol_was_trapped(struct task_struct *tsk);
+extern int arch_uprobe_exception_notify(struct notifier_block *self, unsigned long val, void *data);
+extern void arch_uprobe_abort_xol(struct arch_uprobe *aup, struct pt_regs *regs);
#else /* !CONFIG_UPROBES */
struct uprobes_state {
};
--
1.7.4.3


2012-06-20 08:07:50

by Linus Walleij

[permalink] [raw]
Subject: Re: [PATCH] uprobes: move function declarations out of arch

On Tue, Jun 19, 2012 at 8:55 AM, Rabin Vincent
<[email protected]> wrote:

> Move the arch_* function declarations to the common header so that they
> don't have to be copy/pasted verbatim across arches.
>
> Signed-off-by: Rabin Vincent <[email protected]>

Looping in Arnd as arch maintainer to get some traction.
(Looks good to me!)

Yours,
Linus Walleij

2012-06-20 10:32:18

by Srikar Dronamraju

[permalink] [raw]
Subject: Re: [PATCH] uprobes: move function declarations out of arch

>
> -extern int arch_uprobe_analyze_insn(struct arch_uprobe *aup, struct mm_struct *mm, unsigned long addr);
> -extern int arch_uprobe_pre_xol(struct arch_uprobe *aup, struct pt_regs *regs);
> -extern int arch_uprobe_post_xol(struct arch_uprobe *aup, struct pt_regs *regs);
> -extern bool arch_uprobe_xol_was_trapped(struct task_struct *tsk);
> -extern int arch_uprobe_exception_notify(struct notifier_block *self, unsigned long val, void *data);
> -extern void arch_uprobe_abort_xol(struct arch_uprobe *aup, struct pt_regs *regs);
> #endif /* _ASM_UPROBES_H */
> diff --git a/include/linux/uprobes.h b/include/linux/uprobes.h
> index efe4b33..e2d2948 100644
> --- a/include/linux/uprobes.h
> +++ b/include/linux/uprobes.h
> @@ -30,6 +30,8 @@
> struct vm_area_struct;
> struct mm_struct;
> struct inode;
> +struct notifier_block;
> +struct arch_uprobe;
>

One nit:
Do we need this forward declaration. It should anyway be defined in the
asm/uprobes.h?

> #ifdef CONFIG_ARCH_SUPPORTS_UPROBES
> # include <asm/uprobes.h>
> @@ -118,6 +120,13 @@ extern bool uprobe_deny_signal(void);
> extern bool __weak arch_uprobe_skip_sstep(struct arch_uprobe *aup, struct pt_regs *regs);
> extern void uprobe_clear_state(struct mm_struct *mm);
> extern void uprobe_reset_state(struct mm_struct *mm);
> +
> +extern int arch_uprobe_analyze_insn(struct arch_uprobe *aup, struct mm_struct *mm, unsigned long addr);
> +extern int arch_uprobe_pre_xol(struct arch_uprobe *aup, struct pt_regs *regs);
> +extern int arch_uprobe_post_xol(struct arch_uprobe *aup, struct pt_regs *regs);
> +extern bool arch_uprobe_xol_was_trapped(struct task_struct *tsk);
> +extern int arch_uprobe_exception_notify(struct notifier_block *self, unsigned long val, void *data);
> +extern void arch_uprobe_abort_xol(struct arch_uprobe *aup, struct pt_regs *regs);
> #else /* !CONFIG_UPROBES */
> struct uprobes_state {
> };

I am okay with moving the declarations to include/linux/uprobes.h

--
Thanks and Regards
Srikar