From: William Lee Irwin III Fix up compile with CONFIG_PROC_FS=n. Accomplish this by conditionally declaring create_prof_cpu_mask(), privatizing create_proc_profile(), and unconditionally including profile_hit() and profile_tick(). Signed-off-by: Andrew Morton --- 25-akpm/fs/proc/proc_misc.c | 1 - 25-akpm/include/linux/profile.h | 7 +++++-- 25-akpm/kernel/profile.c | 13 +++++++------ 3 files changed, 12 insertions(+), 9 deletions(-) diff -puN fs/proc/proc_misc.c~prof_pc-proc-fixes fs/proc/proc_misc.c --- 25/fs/proc/proc_misc.c~prof_pc-proc-fixes Fri Aug 6 15:08:12 2004 +++ 25-akpm/fs/proc/proc_misc.c Fri Aug 6 15:08:12 2004 @@ -658,7 +658,6 @@ void __init proc_misc_init(void) (size_t)high_memory - PAGE_OFFSET + PAGE_SIZE; } #endif - create_proc_profile(); #ifdef CONFIG_MAGIC_SYSRQ entry = create_proc_entry("sysrq-trigger", S_IWUSR, NULL); if (entry) diff -puN include/linux/profile.h~prof_pc-proc-fixes include/linux/profile.h --- 25/include/linux/profile.h~prof_pc-proc-fixes Fri Aug 6 15:08:12 2004 +++ 25-akpm/include/linux/profile.h Fri Aug 6 15:08:12 2004 @@ -20,10 +20,13 @@ int __init profile_setup(char * str); /* init basic kernel profiler */ void __init profile_init(void); -void create_prof_cpu_mask(struct proc_dir_entry *); void profile_tick(int, struct pt_regs *); void profile_hit(int, void *); -void create_proc_profile(void); +#ifdef CONFIG_PROC_FS +void create_prof_cpu_mask(struct proc_dir_entry *); +#else +#define create_prof_cpu_mask(x) do { (void)(x); } while (0) +#endif extern unsigned int * prof_buffer; extern unsigned long prof_len; diff -puN kernel/profile.c~prof_pc-proc-fixes kernel/profile.c --- 25/kernel/profile.c~prof_pc-proc-fixes Fri Aug 6 15:08:12 2004 +++ 25-akpm/kernel/profile.c Fri Aug 6 15:08:12 2004 @@ -167,11 +167,6 @@ EXPORT_SYMBOL_GPL(unregister_profile_not EXPORT_SYMBOL_GPL(profile_event_register); EXPORT_SYMBOL_GPL(profile_event_unregister); -#ifdef CONFIG_PROC_FS -#include -#include -#include - void profile_hit(int type, void *__pc) { unsigned long pc; @@ -190,6 +185,11 @@ void profile_tick(int type, struct pt_re profile_hit(type, (void *)profile_pc(regs)); } +#ifdef CONFIG_PROC_FS +#include +#include +#include + static int prof_cpu_mask_read_proc (char *page, char **start, off_t off, int count, int *eof, void *data) { @@ -292,7 +292,7 @@ static struct file_operations proc_profi .write = write_profile, }; -void __init create_proc_profile(void) +static int __init create_proc_profile(void) { struct proc_dir_entry *entry; @@ -303,4 +303,5 @@ void __init create_proc_profile(void) entry->proc_fops = &proc_profile_operations; entry->size = (1+prof_len) * sizeof(unsigned int); } +module_init(create_proc_profile); #endif /* CONFIG_PROC_FS */ _