From: David Gibson The i386 OProfile code has a function named nmi_exit(), which collides with the nmi_exit() macro in linux/hardirq.h. At the moment, we get away with it, because hardirq.h isn't included in the oprofile code. I hit this as a bug when working with a patch which (indirectly) adds a #include of hardirq.h to oprofile. Regardless, the name collision is probably not a good idea, so this patch fixes it, renaming the oprofile function to op_nmi_exit(). It also renames the nmi_init() and nmi_timer_init() functions similarly, for consistency. Signed-off-by: David Gibson Signed-off-by: Andrew Morton --- arch/i386/oprofile/init.c | 12 ++++++------ arch/i386/oprofile/nmi_int.c | 4 ++-- arch/i386/oprofile/nmi_timer_int.c | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff -puN arch/i386/oprofile/init.c~fix-function-macro-name-collision-on-i386-oprofile arch/i386/oprofile/init.c --- devel/arch/i386/oprofile/init.c~fix-function-macro-name-collision-on-i386-oprofile 2005-08-09 22:13:51.000000000 -0700 +++ devel-akpm/arch/i386/oprofile/init.c 2005-08-09 22:13:51.000000000 -0700 @@ -15,9 +15,9 @@ * with the NMI mode driver. */ -extern int nmi_init(struct oprofile_operations * ops); -extern int nmi_timer_init(struct oprofile_operations * ops); -extern void nmi_exit(void); +extern int op_nmi_init(struct oprofile_operations * ops); +extern int op_nmi_timer_init(struct oprofile_operations * ops); +extern void op_nmi_exit(void); extern void x86_backtrace(struct pt_regs * const regs, unsigned int depth); @@ -28,11 +28,11 @@ int __init oprofile_arch_init(struct opr ret = -ENODEV; #ifdef CONFIG_X86_LOCAL_APIC - ret = nmi_init(ops); + ret = op_nmi_init(ops); #endif #ifdef CONFIG_X86_IO_APIC if (ret < 0) - ret = nmi_timer_init(ops); + ret = op_nmi_timer_init(ops); #endif ops->backtrace = x86_backtrace; @@ -43,6 +43,6 @@ int __init oprofile_arch_init(struct opr void oprofile_arch_exit(void) { #ifdef CONFIG_X86_LOCAL_APIC - nmi_exit(); + op_nmi_exit(); #endif } diff -puN arch/i386/oprofile/nmi_int.c~fix-function-macro-name-collision-on-i386-oprofile arch/i386/oprofile/nmi_int.c --- devel/arch/i386/oprofile/nmi_int.c~fix-function-macro-name-collision-on-i386-oprofile 2005-08-09 22:13:51.000000000 -0700 +++ devel-akpm/arch/i386/oprofile/nmi_int.c 2005-08-09 22:13:51.000000000 -0700 @@ -355,7 +355,7 @@ static int __init ppro_init(char ** cpu_ /* in order to get driverfs right */ static int using_nmi; -int __init nmi_init(struct oprofile_operations *ops) +int __init op_nmi_init(struct oprofile_operations *ops) { __u8 vendor = boot_cpu_data.x86_vendor; __u8 family = boot_cpu_data.x86; @@ -420,7 +420,7 @@ int __init nmi_init(struct oprofile_oper } -void nmi_exit(void) +void op_nmi_exit(void) { if (using_nmi) exit_driverfs(); diff -puN arch/i386/oprofile/nmi_timer_int.c~fix-function-macro-name-collision-on-i386-oprofile arch/i386/oprofile/nmi_timer_int.c --- devel/arch/i386/oprofile/nmi_timer_int.c~fix-function-macro-name-collision-on-i386-oprofile 2005-08-09 22:13:51.000000000 -0700 +++ devel-akpm/arch/i386/oprofile/nmi_timer_int.c 2005-08-09 22:13:51.000000000 -0700 @@ -40,7 +40,7 @@ static void timer_stop(void) } -int __init nmi_timer_init(struct oprofile_operations * ops) +int __init op_nmi_timer_init(struct oprofile_operations * ops) { extern int nmi_active; _