From ff08f6fe935ff0854990421e80d04c39c7c2a15a Mon Sep 17 00:00:00 2001 From: Arnaldo Carvalho de Melo Date: Tue, 7 Oct 2003 17:54:04 -0300 Subject: [PATCH] o kernel/ksyms.c: move remaining EXPORT_SYMBOLs, remove this file from the tree --- Documentation/DocBook/kernel-api.tmpl | 4 - Documentation/kernel-doc-nano-HOWTO.txt | 3 +- arch/alpha/kernel/init_task.c | 4 + arch/alpha/kernel/irq.c | 9 + arch/alpha/kernel/process.c | 7 + arch/alpha/kernel/smp.c | 3 + arch/alpha/kernel/time.c | 7 + arch/alpha/kernel/traps.c | 2 + arch/alpha/lib/checksum.c | 3 + arch/arm/kernel/init_task.c | 5 + arch/arm/kernel/irq.c | 9 + arch/arm/kernel/process.c | 10 + arch/arm/kernel/time.c | 6 + arch/arm/kernel/traps.c | 2 + arch/arm26/kernel/init_task.c | 5 + arch/arm26/kernel/irq.c | 9 + arch/arm26/kernel/process.c | 11 + arch/arm26/kernel/time.c | 6 + arch/arm26/kernel/traps.c | 2 + arch/cris/arch-v10/lib/old_checksum.c | 3 + arch/cris/kernel/irq.c | 9 + arch/cris/kernel/process.c | 15 +- arch/cris/kernel/time.c | 7 + arch/cris/kernel/traps.c | 2 + arch/h8300/kernel/init_task.c | 4 + arch/h8300/kernel/process.c | 7 + arch/h8300/kernel/time.c | 7 + arch/h8300/lib/checksum.c | 3 + arch/h8300/platform/h8300h/ints.c | 9 + arch/h8300/platform/h8s/ints.c | 9 + arch/i386/kernel/i386_ksyms.c | 2 + arch/i386/kernel/init_task.c | 5 + arch/i386/kernel/irq.c | 9 + arch/i386/kernel/process.c | 4 + arch/i386/kernel/reboot.c | 7 + arch/i386/kernel/time.c | 6 + arch/i386/kernel/traps.c | 2 + arch/i386/mach-visws/reboot.c | 8 +- arch/i386/mach-voyager/voyager_basic.c | 7 + arch/i386/mm/init.c | 4 + arch/ia64/kernel/init_task.c | 5 + arch/ia64/kernel/irq.c | 9 + arch/ia64/kernel/process.c | 2 + arch/ia64/kernel/time.c | 7 + arch/m68k/kernel/ints.c | 9 + arch/m68k/kernel/process.c | 10 + arch/m68k/kernel/time.c | 7 + arch/m68k/kernel/traps.c | 2 + arch/m68knommu/kernel/init_task.c | 4 + arch/m68knommu/kernel/process.c | 7 + arch/m68knommu/kernel/time.c | 7 + arch/m68knommu/lib/checksum.c | 3 + arch/m68knommu/platform/5307/ints.c | 9 + arch/m68knommu/platform/68328/ints.c | 5 + arch/m68knommu/platform/68360/ints.c | 5 + arch/mips/baget/irq.c | 9 + arch/mips/baget/time.c | 5 + arch/mips/dec/time.c | 5 + arch/mips/galileo-boards/ev96100/time.c | 5 + arch/mips/kernel/init_task.c | 5 + arch/mips/kernel/irq.c | 8 + arch/mips/kernel/reset.c | 7 + arch/mips/kernel/smp.c | 2 + arch/mips/kernel/time.c | 5 + arch/mips/kernel/traps.c | 2 + arch/mips/mm-32/init.c | 4 + arch/mips/mm-64/init.c | 4 + arch/parisc/kernel/cache.c | 5 + arch/parisc/kernel/init_task.c | 5 + arch/parisc/kernel/irq.c | 9 + arch/parisc/kernel/parisc_ksyms.c | 1 - arch/parisc/kernel/process.c | 11 + arch/parisc/kernel/smp.c | 5 + arch/parisc/kernel/time.c | 7 + arch/parisc/kernel/traps.c | 1 + arch/parisc/lib/checksum.c | 2 + arch/ppc/kernel/irq.c | 9 + arch/ppc/kernel/process.c | 2 + arch/ppc/kernel/setup.c | 6 + arch/ppc/kernel/smp.c | 3 + arch/ppc/kernel/time.c | 6 + arch/ppc/mm/init.c | 4 + arch/ppc/syslib/ppc8xx_pic.c | 3 + arch/ppc64/kernel/init_task.c | 5 + arch/ppc64/kernel/irq.c | 9 + arch/ppc64/kernel/process.c | 3 + arch/ppc64/kernel/setup.c | 6 + arch/ppc64/kernel/smp.c | 3 + arch/ppc64/kernel/time.c | 7 + arch/s390/kernel/init_task.c | 4 + arch/s390/kernel/setup.c | 7 + arch/s390/kernel/smp.c | 2 + arch/s390/kernel/time.c | 7 + arch/s390/kernel/traps.c | 2 + arch/sh/kernel/init_task.c | 5 + arch/sh/kernel/irq.c | 9 + arch/sh/kernel/process.c | 11 + arch/sh/kernel/time.c | 7 + arch/sh/kernel/traps.c | 1 + arch/sparc/kernel/init_task.c | 4 + arch/sparc/kernel/irq.c | 9 + arch/sparc/kernel/process.c | 7 + arch/sparc/kernel/sparc_ksyms.c | 1 - arch/sparc/kernel/time.c | 7 + arch/sparc/mm/init.c | 4 + arch/sparc64/kernel/init_task.c | 5 + arch/sparc64/kernel/irq.c | 9 + arch/sparc64/kernel/power.c | 3 + arch/sparc64/kernel/process.c | 5 + arch/sparc64/kernel/sparc64_ksyms.c | 1 - arch/sparc64/kernel/time.c | 7 + arch/sparc64/kernel/traps.c | 3 + arch/um/kernel/checksum.c | 3 + arch/um/kernel/init_task.c | 5 + arch/um/kernel/irq.c | 9 + arch/um/kernel/mem.c | 4 + arch/um/kernel/process_kern.c | 4 + arch/um/kernel/reboot.c | 7 + arch/um/kernel/smp.c | 3 + arch/um/kernel/sysrq.c | 2 + arch/um/kernel/time.c | 5 + arch/um/kernel/time_kern.c | 3 + arch/v850/kernel/anna.c | 7 + arch/v850/kernel/as85ep1.c | 7 + arch/v850/kernel/bug.c | 2 + arch/v850/kernel/fpga85e2c.c | 7 + arch/v850/kernel/init_task.c | 5 + arch/v850/kernel/irq.c | 9 + arch/v850/kernel/rte_cb.c | 7 + arch/v850/kernel/sim.c | 7 + arch/v850/kernel/sim85e2.c | 7 + arch/v850/kernel/time.c | 7 + arch/v850/lib/checksum.c | 3 + arch/x86_64/kernel/init_task.c | 4 + arch/x86_64/kernel/irq.c | 9 + arch/x86_64/kernel/process.c | 4 + arch/x86_64/kernel/reboot.c | 7 + arch/x86_64/kernel/time.c | 6 + arch/x86_64/kernel/traps.c | 2 + arch/x86_64/lib/csum-partial.c | 2 + drivers/block/genhd.c | 22 +- drivers/block/ll_rw_blk.c | 158 ++++++++----- drivers/char/random.c | 26 ++- drivers/char/tty_io.c | 8 + drivers/char/tty_ioctl.c | 2 + drivers/ide/ide.c | 1 + drivers/net/sk98lin/skdim.c | 4 +- fs/dcache.c | 2 + fs/nfsd/vfs.c | 2 +- include/linux/root_dev.h | 2 + init/do_mounts.c | 3 + init/main.c | 7 + init/version.c | 3 + kernel/Makefile | 2 +- kernel/capability.c | 4 + kernel/exit.c | 10 + kernel/fork.c | 18 ++ kernel/ksyms.c | 294 ------------------------ kernel/panic.c | 7 + kernel/pid.c | 3 + kernel/printk.c | 2 + kernel/ptrace.c | 3 + kernel/resource.c | 17 ++ kernel/sched.c | 2 + kernel/softirq.c | 14 ++ kernel/sys.c | 32 ++- kernel/time.c | 9 + kernel/timer.c | 16 +- lib/ctype.c | 3 +- lib/dump_stack.c | 2 + lib/percpu_counter.c | 4 +- lib/string.c | 6 + lib/vsprintf.c | 18 ++ mm/filemap.c | 1 + mm/highmem.c | 9 + mm/memory.c | 15 ++ mm/mmap.c | 10 + mm/page_alloc.c | 15 ++ mm/readahead.c | 7 + mm/slab.c | 24 ++ mm/swap.c | 6 + mm/truncate.c | 7 + mm/vmalloc.c | 13 ++ mm/vmscan.c | 5 + 184 files changed, 1191 insertions(+), 394 deletions(-) delete mode 100644 kernel/ksyms.c diff --git a/Documentation/DocBook/kernel-api.tmpl b/Documentation/DocBook/kernel-api.tmpl index a8ea707a3a463..5f11984a04f39 100644 --- a/Documentation/DocBook/kernel-api.tmpl +++ b/Documentation/DocBook/kernel-api.tmpl @@ -315,8 +315,4 @@ X!Idrivers/video/console/fonts.c --> - diff --git a/Documentation/kernel-doc-nano-HOWTO.txt b/Documentation/kernel-doc-nano-HOWTO.txt index fb42e8662b580..c406ce67edd0c 100644 --- a/Documentation/kernel-doc-nano-HOWTO.txt +++ b/Documentation/kernel-doc-nano-HOWTO.txt @@ -139,8 +139,7 @@ collected from files listed in Documentation/DocBook/Makefile. _not_ exported using EXPORT_SYMBOL. !D is used to name additional files to search for functions -exported using EXPORT_SYMBOL. For example many symbols are only exported -in kernel/ksyms.c, therefore kernel-api.sgml include this file with !D. +exported using EXPORT_SYMBOL. !F is replaced by the documentation, in , for the functions listed. diff --git a/arch/alpha/kernel/init_task.c b/arch/alpha/kernel/init_task.c index 570582b28d440..60722f0355f9d 100644 --- a/arch/alpha/kernel/init_task.c +++ b/arch/alpha/kernel/init_task.c @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -13,6 +14,9 @@ static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); struct mm_struct init_mm = INIT_MM(init_mm); struct task_struct init_task = INIT_TASK(init_task); +EXPORT_SYMBOL(init_mm); +EXPORT_SYMBOL(init_task); + union thread_union init_thread_union __attribute__((section(".data.init_thread"))) = { INIT_THREAD_INFO(init_task) }; diff --git a/arch/alpha/kernel/irq.c b/arch/alpha/kernel/irq.c index 64235468334ea..f165203fc459e 100644 --- a/arch/alpha/kernel/irq.c +++ b/arch/alpha/kernel/irq.c @@ -12,6 +12,7 @@ #include #include +#include #include #include #include @@ -472,6 +473,8 @@ request_irq(unsigned int irq, irqreturn_t (*handler)(int, void *, struct pt_regs return retval; } +EXPORT_SYMBOL(request_irq); + void free_irq(unsigned int irq, void *dev_id) { @@ -518,6 +521,8 @@ free_irq(unsigned int irq, void *dev_id) } } +EXPORT_SYMBOL(free_irq); + int show_interrupts(struct seq_file *p, void *v) { @@ -752,6 +757,8 @@ probe_irq_on(void) return val; } +EXPORT_SYMBOL(probe_irq_on); + /* * Return a mask of triggered interrupts (this * can handle only legacy ISA interrupts). @@ -823,6 +830,8 @@ probe_irq_off(unsigned long val) return irq_found; } +EXPORT_SYMBOL(probe_irq_off); + #ifdef CONFIG_SMP void synchronize_irq(unsigned int irq) { diff --git a/arch/alpha/kernel/process.c b/arch/alpha/kernel/process.c index 975e9312f8b95..e427bae12ffee 100644 --- a/arch/alpha/kernel/process.c +++ b/arch/alpha/kernel/process.c @@ -10,6 +10,7 @@ #include #include +#include #include #include #include @@ -164,18 +165,24 @@ machine_restart(char *restart_cmd) common_shutdown(LINUX_REBOOT_CMD_RESTART, restart_cmd); } +EXPORT_SYMBOL(machine_restart); + void machine_halt(void) { common_shutdown(LINUX_REBOOT_CMD_HALT, NULL); } +EXPORT_SYMBOL(machine_halt); + void machine_power_off(void) { common_shutdown(LINUX_REBOOT_CMD_POWER_OFF, NULL); } +EXPORT_SYMBOL(machine_power_off); + /* Used by sysrq-p, among others. I don't believe r9-r15 are ever saved in the context it's used. */ diff --git a/arch/alpha/kernel/smp.c b/arch/alpha/kernel/smp.c index 8fd6f3c03e3a7..dafc4ca4e3246 100644 --- a/arch/alpha/kernel/smp.c +++ b/arch/alpha/kernel/smp.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -73,6 +74,8 @@ static int smp_secondary_alive __initdata = 0; unsigned long cpu_present_mask; cpumask_t cpu_online_map; +EXPORT_SYMBOL(cpu_online_map); + /* cpus reported in the hwrpb */ static unsigned long hwrpb_cpu_present_mask __initdata = 0; diff --git a/arch/alpha/kernel/time.c b/arch/alpha/kernel/time.c index 4b8d93a8209b8..40df69a4d57a6 100644 --- a/arch/alpha/kernel/time.c +++ b/arch/alpha/kernel/time.c @@ -27,6 +27,7 @@ */ #include #include +#include #include #include #include @@ -52,6 +53,8 @@ u64 jiffies_64 = INITIAL_JIFFIES; +EXPORT_SYMBOL(jiffies_64); + extern unsigned long wall_jiffies; /* kernel/timer.c */ static int set_rtc_mmss(unsigned long); @@ -457,6 +460,8 @@ do_gettimeofday(struct timeval *tv) tv->tv_usec = usec; } +EXPORT_SYMBOL(do_gettimeofday); + int do_settimeofday(struct timespec *tv) { @@ -501,6 +506,8 @@ do_settimeofday(struct timespec *tv) return 0; } +EXPORT_SYMBOL(do_settimeofday); + /* * In order to set the CMOS clock precisely, set_rtc_mmss has to be diff --git a/arch/alpha/kernel/traps.c b/arch/alpha/kernel/traps.c index 412cd3672573e..0596b1158315c 100644 --- a/arch/alpha/kernel/traps.c +++ b/arch/alpha/kernel/traps.c @@ -177,6 +177,8 @@ void dump_stack(void) show_stack(NULL, NULL); } +EXPORT_SYMBOL(dump_stack); + void die_if_kernel(char * str, struct pt_regs *regs, long err, unsigned long *r9_15) { diff --git a/arch/alpha/lib/checksum.c b/arch/alpha/lib/checksum.c index 9f2daa0301fe8..89044e6385fe9 100644 --- a/arch/alpha/lib/checksum.c +++ b/arch/alpha/lib/checksum.c @@ -9,6 +9,7 @@ * Rick Gorton */ +#include #include #include @@ -173,6 +174,8 @@ unsigned int csum_partial(const unsigned char * buff, int len, unsigned int sum) return result; } +EXPORT_SYMBOL(csum_partial); + /* * this routine is used for miscellaneous IP-like checksums, mainly * in icmp.c diff --git a/arch/arm/kernel/init_task.c b/arch/arm/kernel/init_task.c index a8371b453b534..d7c3f2667a833 100644 --- a/arch/arm/kernel/init_task.c +++ b/arch/arm/kernel/init_task.c @@ -2,6 +2,7 @@ * linux/arch/arm/kernel/init_task.c */ #include +#include #include #include #include @@ -16,6 +17,8 @@ static struct signal_struct init_signals = INIT_SIGNALS(init_signals); static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); struct mm_struct init_mm = INIT_MM(init_mm); +EXPORT_SYMBOL(init_mm); + /* * Initial thread structure. * @@ -36,3 +39,5 @@ union thread_union init_thread_union * All other task structs will be allocated on slabs in fork.c */ struct task_struct init_task = INIT_TASK(init_task); + +EXPORT_SYMBOL(init_task); diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c index 6900c243e7487..dc68c93d43f4f 100644 --- a/arch/arm/kernel/irq.c +++ b/arch/arm/kernel/irq.c @@ -19,6 +19,7 @@ */ #include #include +#include #include #include #include @@ -653,6 +654,8 @@ int request_irq(unsigned int irq, irqreturn_t (*handler)(int, void *, struct pt_ return retval; } +EXPORT_SYMBOL(request_irq); + /** * free_irq - free an interrupt * @irq: Interrupt line to free @@ -696,6 +699,8 @@ void free_irq(unsigned int irq, void *dev_id) } } +EXPORT_SYMBOL(free_irq); + static DECLARE_MUTEX(probe_sem); /* Start the interrupt probing. Unlike other architectures, @@ -750,6 +755,8 @@ unsigned long probe_irq_on(void) return irqs; } +EXPORT_SYMBOL(probe_irq_on); + unsigned int probe_irq_mask(unsigned long irqs) { unsigned int mask = 0, i; @@ -801,6 +808,8 @@ out: return irq_found; } +EXPORT_SYMBOL(probe_irq_off); + void __init init_irq_proc(void) { } diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c index 51eba65be0db7..5084effd60055 100644 --- a/arch/arm/kernel/process.c +++ b/arch/arm/kernel/process.c @@ -45,11 +45,15 @@ void disable_hlt(void) hlt_counter++; } +EXPORT_SYMBOL(disable_hlt); + void enable_hlt(void) { hlt_counter--; } +EXPORT_SYMBOL(enable_hlt); + static int __init nohlt_setup(char *__unused) { hlt_counter = 1; @@ -119,12 +123,16 @@ void machine_halt(void) { } +EXPORT_SYMBOL(machine_halt); + void machine_power_off(void) { if (pm_power_off) pm_power_off(); } +EXPORT_SYMBOL(machine_power_off); + void machine_restart(char * __unused) { /* @@ -153,6 +161,8 @@ void machine_restart(char * __unused) while (1); } +EXPORT_SYMBOL(machine_restart); + void show_regs(struct pt_regs * regs) { unsigned long flags; diff --git a/arch/arm/kernel/time.c b/arch/arm/kernel/time.c index d9edb669a9988..abaaa11f7e833 100644 --- a/arch/arm/kernel/time.c +++ b/arch/arm/kernel/time.c @@ -35,6 +35,8 @@ u64 jiffies_64 = INITIAL_JIFFIES; +EXPORT_SYMBOL(jiffies_64); + extern unsigned long wall_jiffies; /* this needs a better home */ @@ -222,6 +224,8 @@ void do_gettimeofday(struct timeval *tv) tv->tv_usec = usec; } +EXPORT_SYMBOL(do_gettimeofday); + int do_settimeofday(struct timespec *tv) { time_t wtm_sec, sec = tv->tv_sec; @@ -255,6 +259,8 @@ int do_settimeofday(struct timespec *tv) return 0; } +EXPORT_SYMBOL(do_settimeofday); + static struct irqaction timer_irq = { .name = "timer", .flags = SA_INTERRUPT, diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c index 168a86db48916..2693e11db32a6 100644 --- a/arch/arm/kernel/traps.c +++ b/arch/arm/kernel/traps.c @@ -178,6 +178,8 @@ void dump_stack(void) #endif } +EXPORT_SYMBOL(dump_stack); + void show_stack(struct task_struct *tsk, unsigned long *sp) { unsigned long fp; diff --git a/arch/arm26/kernel/init_task.c b/arch/arm26/kernel/init_task.c index c8d062071974b..d40e768bdbc9a 100644 --- a/arch/arm26/kernel/init_task.c +++ b/arch/arm26/kernel/init_task.c @@ -5,6 +5,7 @@ * */ #include +#include #include #include #include @@ -19,6 +20,8 @@ static struct signal_struct init_signals = INIT_SIGNALS(init_signals); static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); struct mm_struct init_mm = INIT_MM(init_mm); +EXPORT_SYMBOL(init_mm); + /* * Initial thread structure. * @@ -39,3 +42,5 @@ union thread_union init_thread_union * All other task structs will be allocated on slabs in fork.c */ struct task_struct init_task = INIT_TASK(init_task); + +EXPORT_SYMBOL(init_task); diff --git a/arch/arm26/kernel/irq.c b/arch/arm26/kernel/irq.c index 28220356efd13..3322d98e677b4 100644 --- a/arch/arm26/kernel/irq.c +++ b/arch/arm26/kernel/irq.c @@ -19,6 +19,7 @@ * Naturally it's not a 1:1 relation, but there are similarities. */ #include +#include #include #include #include @@ -560,6 +561,8 @@ int request_irq(unsigned int irq, irqreturn_t (*handler)(int, void *, struct pt_ return retval; } +EXPORT_SYMBOL(request_irq); + /** * free_irq - free an interrupt * @irq: Interrupt line to free @@ -603,6 +606,8 @@ out: spin_unlock_irqrestore(&irq_controller_lock, flags); } +EXPORT_SYMBOL(free_irq); + /* Start the interrupt probing. Unlike other architectures, * we don't return a mask of interrupts from probe_irq_on, * but return the number of interrupts enabled for the probe. @@ -653,6 +658,8 @@ unsigned long probe_irq_on(void) return irqs; } +EXPORT_SYMBOL(probe_irq_on); + /* * Possible return values: * >= 0 - interrupt number @@ -687,6 +694,8 @@ out: return irq_found; } +EXPORT_SYMBOL(probe_irq_off); + void __init init_irq_proc(void) { } diff --git a/arch/arm26/kernel/process.c b/arch/arm26/kernel/process.c index bf8e0367be887..d55c789e6da76 100644 --- a/arch/arm26/kernel/process.c +++ b/arch/arm26/kernel/process.c @@ -12,6 +12,7 @@ #include #include +#include #include #include #include @@ -42,11 +43,15 @@ void disable_hlt(void) hlt_counter++; } +EXPORT_SYMBOL(disable_hlt); + void enable_hlt(void) { hlt_counter--; } +EXPORT_SYMBOL(enable_hlt); + static int __init nohlt_setup(char *__unused) { hlt_counter = 1; @@ -115,6 +120,8 @@ void machine_halt(void) leds_event(led_halted); } +EXPORT_SYMBOL(machine_halt); + void machine_power_off(void) { leds_event(led_halted); @@ -122,6 +129,8 @@ void machine_power_off(void) pm_power_off(); } +EXPORT_SYMBOL(machine_power_off); + void machine_restart(char * __unused) { /* @@ -152,6 +161,8 @@ void machine_restart(char * __unused) while (1); } +EXPORT_SYMBOL(machine_restart); + void show_regs(struct pt_regs * regs) { unsigned long flags; diff --git a/arch/arm26/kernel/time.c b/arch/arm26/kernel/time.c index 6da692023ded1..1a7a8c85503bd 100644 --- a/arch/arm26/kernel/time.c +++ b/arch/arm26/kernel/time.c @@ -36,6 +36,8 @@ u64 jiffies_64 = INITIAL_JIFFIES; +EXPORT_SYMBOL(jiffies_64); + extern unsigned long wall_jiffies; /* this needs a better home */ @@ -148,6 +150,8 @@ void do_gettimeofday(struct timeval *tv) tv->tv_usec = usec; } +EXPORT_SYMBOL(do_gettimeofday); + int do_settimeofday(struct timespec *tv) { if ((unsigned long)tv->tv_nsec >= NSEC_PER_SEC) @@ -178,6 +182,8 @@ int do_settimeofday(struct timespec *tv) return 0; } +EXPORT_SYMBOL(do_settimeofday); + static irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) { do_timer(regs); diff --git a/arch/arm26/kernel/traps.c b/arch/arm26/kernel/traps.c index d0e1bc6cf4742..d2ffd9016c074 100644 --- a/arch/arm26/kernel/traps.c +++ b/arch/arm26/kernel/traps.c @@ -134,6 +134,8 @@ static void dump_instr(struct pt_regs *regs) dump_mem("Stack: ", sp, 8192+(unsigned long)tsk->thread_info); } +EXPORT_SYMBOL(dump_stack); + void dump_stack(void) { #ifdef CONFIG_DEBUG_ERRORS diff --git a/arch/cris/arch-v10/lib/old_checksum.c b/arch/cris/arch-v10/lib/old_checksum.c index 42f2a2133caa8..901a68d0b71bb 100644 --- a/arch/cris/arch-v10/lib/old_checksum.c +++ b/arch/cris/arch-v10/lib/old_checksum.c @@ -19,6 +19,7 @@ */ #include +#include #undef PROFILE_CHECKSUM @@ -80,3 +81,5 @@ unsigned int csum_partial(const unsigned char * buff, int len, unsigned int sum) BITOFF; return(sum); } + +EXPORT_SYMBOL(csum_partial); diff --git a/arch/cris/kernel/irq.c b/arch/cris/kernel/irq.c index 934f8715b5afc..d61fa25474637 100644 --- a/arch/cris/kernel/irq.c +++ b/arch/cris/kernel/irq.c @@ -22,6 +22,7 @@ */ #include +#include #include #include @@ -70,12 +71,16 @@ probe_irq_on() return 0; } +EXPORT_SYMBOL(probe_irq_on); + int probe_irq_off(unsigned long x) { return 0; } +EXPORT_SYMBOL(probe_irq_off); + /* * Initial irq handlers. */ @@ -253,6 +258,8 @@ int request_irq(unsigned int irq, kfree(action); return retval; } + +EXPORT_SYMBOL(request_irq); void free_irq(unsigned int irq, void *dev_id) { @@ -282,6 +289,8 @@ void free_irq(unsigned int irq, void *dev_id) printk("Trying to free free IRQ%d\n",irq); } +EXPORT_SYMBOL(free_irq); + void weird_irq(void) { local_irq_disable(); diff --git a/arch/cris/kernel/process.c b/arch/cris/kernel/process.c index 23a5d13c18eaf..3db645340bf60 100644 --- a/arch/cris/kernel/process.c +++ b/arch/cris/kernel/process.c @@ -96,6 +96,7 @@ #include #include #include +#include #include #include #include @@ -119,6 +120,8 @@ static struct signal_struct init_signals = INIT_SIGNALS(init_signals); static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); struct mm_struct init_mm = INIT_MM(init_mm); +EXPORT_SYMBOL(init_mm); + /* * Initial thread structure. * @@ -137,7 +140,7 @@ union thread_union init_thread_union */ struct task_struct init_task = INIT_TASK(init_task); - +EXPORT_SYMBOL(init_task); /* * The hlt_counter, disable_hlt and enable_hlt is just here as a hook if @@ -155,10 +158,14 @@ void disable_hlt(void) hlt_counter++; } +EXPORT_SYMBOL(disable_hlt); + void enable_hlt(void) { hlt_counter--; } + +EXPORT_SYMBOL(enable_hlt); /* * The following aren't currently used. @@ -193,6 +200,8 @@ void machine_restart(void) hard_reset_now(); } +EXPORT_SYMBOL(machine_restart); + /* * Similar to machine_power_off, but don't shut off power. Add code * here to freeze the system for e.g. post-mortem debug purpose when @@ -203,12 +212,16 @@ void machine_halt(void) { } +EXPORT_SYMBOL(machine_halt); + /* If or when software power-off is implemented, add code here. */ void machine_power_off(void) { } +EXPORT_SYMBOL(machine_power_off); + /* * When a process does an "exec", machine state like FPU and debug * registers need to be reset. This is a hook function for that. diff --git a/arch/cris/kernel/time.c b/arch/cris/kernel/time.c index caee8e4fd39b0..d6499c35802ce 100644 --- a/arch/cris/kernel/time.c +++ b/arch/cris/kernel/time.c @@ -24,6 +24,7 @@ #include #include +#include #include #include #include @@ -31,6 +32,8 @@ u64 jiffies_64 = INITIAL_JIFFIES; +EXPORT_SYMBOL(jiffies_64); + int have_rtc; /* used to remember if we have an RTC or not */; #define TICK_SIZE tick @@ -72,6 +75,8 @@ void do_gettimeofday(struct timeval *tv) tv->tv_usec = usec; } +EXPORT_SYMBOL(do_gettimeofday); + int do_settimeofday(struct timespec *tv) { unsigned long flags; @@ -106,6 +111,8 @@ int do_settimeofday(struct timespec *tv) return 0; } +EXPORT_SYMBOL(do_settimeofday); + /* * BUG: This routine does not handle hour overflow properly; it just diff --git a/arch/cris/kernel/traps.c b/arch/cris/kernel/traps.c index 5273241e072da..2a757b825c44b 100644 --- a/arch/cris/kernel/traps.c +++ b/arch/cris/kernel/traps.c @@ -142,6 +142,8 @@ void dump_stack(void) show_stack(NULL, NULL); } +EXPORT_SYMBOL(dump_stack); + void __init trap_init(void) { diff --git a/arch/h8300/kernel/init_task.c b/arch/h8300/kernel/init_task.c index 6f0a8c72e5c35..6a8e7475b4c2a 100644 --- a/arch/h8300/kernel/init_task.c +++ b/arch/h8300/kernel/init_task.c @@ -2,6 +2,7 @@ * linux/arch/h8300/kernel/init_task.c */ #include +#include #include #include #include @@ -16,6 +17,8 @@ static struct signal_struct init_signals = INIT_SIGNALS(init_signals); static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); struct mm_struct init_mm = INIT_MM(init_mm); +EXPORT_SYMBOL(init_mm); + /* * Initial task structure. * @@ -24,6 +27,7 @@ struct mm_struct init_mm = INIT_MM(init_mm); __asm__(".align 4"); struct task_struct init_task = INIT_TASK(init_task); +EXPORT_SYMBOL(init_task); /* * Initial thread structure. diff --git a/arch/h8300/kernel/process.c b/arch/h8300/kernel/process.c index 1624e40911fd3..bd6ccd542399a 100644 --- a/arch/h8300/kernel/process.c +++ b/arch/h8300/kernel/process.c @@ -24,6 +24,7 @@ #include #include +#include #include #include #include @@ -89,6 +90,8 @@ void machine_restart(char * __unused) __asm__("jmp @@0"); } +EXPORT_SYMBOL(machine_restart); + void machine_halt(void) { local_irq_disable(); @@ -96,6 +99,8 @@ void machine_halt(void) for (;;); } +EXPORT_SYMBOL(machine_halt); + void machine_power_off(void) { local_irq_disable(); @@ -103,6 +108,8 @@ void machine_power_off(void) for (;;); } +EXPORT_SYMBOL(machine_power_off); + void show_regs(struct pt_regs * regs) { printk("\n"); diff --git a/arch/h8300/kernel/time.c b/arch/h8300/kernel/time.c index 002f00c7ecf67..3637f91fa7a6a 100644 --- a/arch/h8300/kernel/time.c +++ b/arch/h8300/kernel/time.c @@ -18,6 +18,7 @@ #include /* CONFIG_HEARTBEAT */ #include +#include #include #include #include @@ -33,6 +34,8 @@ u64 jiffies_64; +EXPORT_SYMBOL(jiffies_64); + static inline void do_profile (unsigned long pc) { if (prof_buffer && current->pid) { @@ -110,6 +113,8 @@ void do_gettimeofday(struct timeval *tv) tv->tv_usec = usec; } +EXPORT_SYMBOL(do_gettimeofday); + int do_settimeofday(struct timespec *tv) { if ((unsigned long)tv->tv_nsec >= NSEC_PER_SEC) @@ -136,3 +141,5 @@ int do_settimeofday(struct timespec *tv) write_sequnlock_irq(&xtime_lock); return 0; } + +EXPORT_SYMBOL(do_settimeofday); diff --git a/arch/h8300/lib/checksum.c b/arch/h8300/lib/checksum.c index 6ea20ed7d3846..ffab85ba7272b 100644 --- a/arch/h8300/lib/checksum.c +++ b/arch/h8300/lib/checksum.c @@ -32,6 +32,7 @@ of the assembly has to go. */ #include +#include static inline unsigned short from32to16(unsigned long x) { @@ -123,6 +124,8 @@ unsigned int csum_partial(const unsigned char * buff, int len, unsigned int sum) return result; } +EXPORT_SYMBOL(csum_partial); + /* * this routine is used for miscellaneous IP-like checksums, mainly * in icmp.c diff --git a/arch/h8300/platform/h8300h/ints.c b/arch/h8300/platform/h8300h/ints.c index da4a39f2b2025..e62375f7a5ccd 100644 --- a/arch/h8300/platform/h8300h/ints.c +++ b/arch/h8300/platform/h8300h/ints.c @@ -13,6 +13,7 @@ * Copyright 1999 D. Jeff Dionne */ +#include #include #include #include @@ -155,6 +156,8 @@ int request_irq(unsigned int irq, return 0; } +EXPORT_SYMBOL(request_irq); + void free_irq(unsigned int irq, void *dev_id) { if (irq >= NR_IRQS) { @@ -171,6 +174,8 @@ void free_irq(unsigned int irq, void *dev_id) } } +EXPORT_SYMBOL(free_irq); + /* * Do we need these probe functions on the m68k? */ @@ -179,11 +184,15 @@ unsigned long probe_irq_on (void) return 0; } +EXPORT_SYMBOL(probe_irq_on); + int probe_irq_off (unsigned long irqs) { return 0; } +EXPORT_SYMBOL(probe_irq_off); + void enable_irq(unsigned int irq) { if (irq >= EXT_IRQ0 && irq <= EXT_IRQ5) { diff --git a/arch/h8300/platform/h8s/ints.c b/arch/h8300/platform/h8s/ints.c index dd07edcbf0fca..727f965d28a18 100644 --- a/arch/h8300/platform/h8s/ints.c +++ b/arch/h8300/platform/h8s/ints.c @@ -13,6 +13,7 @@ * Copyright 1999 D. Jeff Dionne */ +#include #include #include #include @@ -201,6 +202,8 @@ int request_irq(unsigned int irq, return 0; } +EXPORT_SYMBOL(request_irq); + void free_irq(unsigned int irq, void *dev_id) { if (irq >= NR_IRQS) @@ -228,16 +231,22 @@ void free_irq(unsigned int irq, void *dev_id) } } +EXPORT_SYMBOL(free_irq); + unsigned long probe_irq_on (void) { return 0; } +EXPORT_SYMBOL(probe_irq_on); + int probe_irq_off (unsigned long irqs) { return 0; } +EXPORT_SYMBOL(probe_irq_off); + void enable_irq(unsigned int irq) { if (irq >= EXT_IRQ0 && irq <= EXT_IRQ15) diff --git a/arch/i386/kernel/i386_ksyms.c b/arch/i386/kernel/i386_ksyms.c index 4b770c5dfe8bb..09e87744c79ef 100644 --- a/arch/i386/kernel/i386_ksyms.c +++ b/arch/i386/kernel/i386_ksyms.c @@ -211,3 +211,5 @@ EXPORT_SYMBOL(eddnr); #if defined(CONFIG_X86_SPEEDSTEP_SMI) || defined(CONFIG_X86_SPEEDSTEP_SMI_MODULE) EXPORT_SYMBOL(ist_info); #endif + +EXPORT_SYMBOL(csum_partial); diff --git a/arch/i386/kernel/init_task.c b/arch/i386/kernel/init_task.c index a2a7181dac620..7467ba601211e 100644 --- a/arch/i386/kernel/init_task.c +++ b/arch/i386/kernel/init_task.c @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -14,6 +15,8 @@ static struct signal_struct init_signals = INIT_SIGNALS(init_signals); static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); struct mm_struct init_mm = INIT_MM(init_mm); +EXPORT_SYMBOL(init_mm); + /* * Initial thread structure. * @@ -32,6 +35,8 @@ union thread_union init_thread_union */ struct task_struct init_task = INIT_TASK(init_task); +EXPORT_SYMBOL(init_task); + /* * per-CPU TSS segments. Threads are completely 'soft' on Linux, * no more per-task TSS's. The TSS size is kept cacheline-aligned diff --git a/arch/i386/kernel/irq.c b/arch/i386/kernel/irq.c index 244bb0e4771e0..e5ba16a6f9613 100644 --- a/arch/i386/kernel/irq.c +++ b/arch/i386/kernel/irq.c @@ -19,6 +19,7 @@ #include #include +#include #include #include #include @@ -579,6 +580,8 @@ int request_irq(unsigned int irq, return retval; } +EXPORT_SYMBOL(request_irq); + /** * free_irq - free an interrupt * @irq: Interrupt line to free @@ -633,6 +636,8 @@ void free_irq(unsigned int irq, void *dev_id) } } +EXPORT_SYMBOL(free_irq); + /* * IRQ autodetection code.. * @@ -726,6 +731,8 @@ unsigned long probe_irq_on(void) return val; } +EXPORT_SYMBOL(probe_irq_on); + /* * Return a mask of triggered interrupts (this * can handle only legacy ISA interrupts). @@ -824,6 +831,8 @@ int probe_irq_off(unsigned long val) return irq_found; } +EXPORT_SYMBOL(probe_irq_off); + /* this was setup_x86_irq but it seems pretty generic */ int setup_irq(unsigned int irq, struct irqaction * new) { diff --git a/arch/i386/kernel/process.c b/arch/i386/kernel/process.c index 9675594018250..b706916eccc61 100644 --- a/arch/i386/kernel/process.c +++ b/arch/i386/kernel/process.c @@ -76,11 +76,15 @@ void disable_hlt(void) hlt_counter++; } +EXPORT_SYMBOL(disable_hlt); + void enable_hlt(void) { hlt_counter--; } +EXPORT_SYMBOL(enable_hlt); + /* * We use this if we don't have any better * idle routine.. diff --git a/arch/i386/kernel/reboot.c b/arch/i386/kernel/reboot.c index fb28a5a000ff6..a87a866024d1b 100644 --- a/arch/i386/kernel/reboot.c +++ b/arch/i386/kernel/reboot.c @@ -3,6 +3,7 @@ */ #include +#include #include #include #include @@ -276,13 +277,19 @@ void machine_restart(char * __unused) machine_real_restart(jump_to_bios, sizeof(jump_to_bios)); } +EXPORT_SYMBOL(machine_restart); + void machine_halt(void) { } +EXPORT_SYMBOL(machine_halt); + void machine_power_off(void) { if (pm_power_off) pm_power_off(); } +EXPORT_SYMBOL(machine_power_off); + diff --git a/arch/i386/kernel/time.c b/arch/i386/kernel/time.c index 4e62eda8100e6..a1a583b6bc043 100644 --- a/arch/i386/kernel/time.c +++ b/arch/i386/kernel/time.c @@ -73,6 +73,8 @@ int pit_latch_buggy; /* extern */ u64 jiffies_64 = INITIAL_JIFFIES; +EXPORT_SYMBOL(jiffies_64); + unsigned long cpu_khz; /* Detected as we calibrate the TSC */ extern unsigned long wall_jiffies; @@ -115,6 +117,8 @@ void do_gettimeofday(struct timeval *tv) tv->tv_usec = usec; } +EXPORT_SYMBOL(do_gettimeofday); + int do_settimeofday(struct timespec *tv) { time_t wtm_sec, sec = tv->tv_sec; @@ -148,6 +152,8 @@ int do_settimeofday(struct timespec *tv) return 0; } +EXPORT_SYMBOL(do_settimeofday); + static int set_rtc_mmss(unsigned long nowtime) { int retval; diff --git a/arch/i386/kernel/traps.c b/arch/i386/kernel/traps.c index 70b78cdef1fe8..db4e89ef4cbc2 100644 --- a/arch/i386/kernel/traps.c +++ b/arch/i386/kernel/traps.c @@ -158,6 +158,8 @@ void dump_stack(void) show_trace(current, &stack); } +EXPORT_SYMBOL(dump_stack); + void show_registers(struct pt_regs *regs) { int i; diff --git a/arch/i386/mach-visws/reboot.c b/arch/i386/mach-visws/reboot.c index 1bc7b71ccbdf8..8fc9fdc75c119 100644 --- a/arch/i386/mach-visws/reboot.c +++ b/arch/i386/mach-visws/reboot.c @@ -1,4 +1,4 @@ - +#include #include #include #include @@ -24,6 +24,8 @@ void machine_restart(char * __unused) outb(PIIX4_RESET_VAL, PIIX4_RESET_PORT); } +EXPORT_SYMBOL(machine_restart); + void machine_power_off(void) { unsigned short pm_status; @@ -43,6 +45,10 @@ void machine_power_off(void) outl(PIIX_SPECIAL_STOP, 0xCFC); } +EXPORT_SYMBOL(machine_power_off); + void machine_halt(void) { } + +EXPORT_SYMBOL(machine_halt); diff --git a/arch/i386/mach-voyager/voyager_basic.c b/arch/i386/mach-voyager/voyager_basic.c index 1a3c9f3ab4550..528bc8f8d566b 100644 --- a/arch/i386/mach-voyager/voyager_basic.c +++ b/arch/i386/mach-voyager/voyager_basic.c @@ -13,6 +13,7 @@ */ #include +#include #include #include #include @@ -279,6 +280,8 @@ machine_restart(char *cmd) } } +EXPORT_SYMBOL(machine_restart); + void mca_nmi_hook(void) { @@ -314,8 +317,12 @@ machine_halt(void) machine_power_off(); } +EXPORT_SYMBOL(machine_halt); + void machine_power_off(void) { if (pm_power_off) pm_power_off(); } + +EXPORT_SYMBOL(machine_power_off); diff --git a/arch/i386/mm/init.c b/arch/i386/mm/init.c index b7ab9f6668d8c..0202ccab598dd 100644 --- a/arch/i386/mm/init.c +++ b/arch/i386/mm/init.c @@ -7,6 +7,7 @@ */ #include +#include #include #include #include @@ -190,6 +191,9 @@ static inline int page_is_ram(unsigned long pagenr) pte_t *kmap_pte; pgprot_t kmap_prot; +EXPORT_SYMBOL(kmap_prot); +EXPORT_SYMBOL(kmap_pte); + #define kmap_get_fixmap_pte(vaddr) \ pte_offset_kernel(pmd_offset(pgd_offset_k(vaddr), (vaddr)), (vaddr)) diff --git a/arch/ia64/kernel/init_task.c b/arch/ia64/kernel/init_task.c index 241a84cacba67..46cf054d344e8 100644 --- a/arch/ia64/kernel/init_task.c +++ b/arch/ia64/kernel/init_task.c @@ -8,6 +8,7 @@ #include #include +#include #include #include @@ -20,6 +21,8 @@ static struct signal_struct init_signals = INIT_SIGNALS(init_signals); static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); struct mm_struct init_mm = INIT_MM(init_mm); +EXPORT_SYMBOL(init_mm); + /* * Initial task structure. * @@ -38,3 +41,5 @@ union { .task = INIT_TASK(init_task_mem.s.task), .thread_info = INIT_THREAD_INFO(init_task_mem.s.task) }}; + +EXPORT_SYMBOL(init_task); diff --git a/arch/ia64/kernel/irq.c b/arch/ia64/kernel/irq.c index a4d20341920d3..7e2680cbaadf0 100644 --- a/arch/ia64/kernel/irq.c +++ b/arch/ia64/kernel/irq.c @@ -19,6 +19,7 @@ #include #include +#include #include #include #include @@ -596,6 +597,8 @@ int request_irq(unsigned int irq, return retval; } +EXPORT_SYMBOL(request_irq); + /** * free_irq - free an interrupt * @irq: Interrupt line to free @@ -650,6 +653,8 @@ void free_irq(unsigned int irq, void *dev_id) } } +EXPORT_SYMBOL(free_irq); + /* * IRQ autodetection code.. * @@ -743,6 +748,8 @@ unsigned long probe_irq_on(void) return val; } +EXPORT_SYMBOL(probe_irq_on); + /** * probe_irq_mask - scan a bitmap of interrupt lines * @val: mask of interrupts to consider @@ -831,6 +838,8 @@ int probe_irq_off(unsigned long val) return irq_found; } +EXPORT_SYMBOL(probe_irq_off); + int setup_irq(unsigned int irq, struct irqaction * new) { int shared = 0; diff --git a/arch/ia64/kernel/process.c b/arch/ia64/kernel/process.c index a43075467efad..5e0d57e5c5463 100644 --- a/arch/ia64/kernel/process.c +++ b/arch/ia64/kernel/process.c @@ -82,6 +82,8 @@ dump_stack (void) show_stack(NULL, NULL); } +EXPORT_SYMBOL(dump_stack); + void show_regs (struct pt_regs *regs) { diff --git a/arch/ia64/kernel/time.c b/arch/ia64/kernel/time.c index c8ccbbdc0ece0..d572f1a2073ab 100644 --- a/arch/ia64/kernel/time.c +++ b/arch/ia64/kernel/time.c @@ -12,6 +12,7 @@ #include #include +#include #include #include #include @@ -31,6 +32,8 @@ extern unsigned long wall_jiffies; u64 jiffies_64 = INITIAL_JIFFIES; +EXPORT_SYMBOL(jiffies_64); + #define TIME_KEEPER_ID 0 /* smp_processor_id() of time-keeper */ #ifdef CONFIG_IA64_DEBUG_IRQ @@ -125,6 +128,8 @@ do_settimeofday (struct timespec *tv) return 0; } +EXPORT_SYMBOL(do_settimeofday); + void do_gettimeofday (struct timeval *tv) { @@ -185,6 +190,8 @@ do_gettimeofday (struct timeval *tv) tv->tv_usec = usec; } +EXPORT_SYMBOL(do_gettimeofday); + /* * The profiling function is SMP safe. (nothing can mess * around with "current", and the profiling counters are diff --git a/arch/m68k/kernel/ints.c b/arch/m68k/kernel/ints.c index 9c41b72cb1240..7f42d001228ab 100644 --- a/arch/m68k/kernel/ints.c +++ b/arch/m68k/kernel/ints.c @@ -26,6 +26,7 @@ */ #include +#include #include #include #include @@ -127,11 +128,15 @@ int request_irq(unsigned int irq, return mach_request_irq(irq, handler, flags, devname, dev_id); } +EXPORT_SYMBOL(request_irq); + void free_irq(unsigned int irq, void *dev_id) { mach_free_irq(irq, dev_id); } +EXPORT_SYMBOL(free_irq); + int sys_request_irq(unsigned int irq, irqreturn_t (*handler)(int, void *, struct pt_regs *), unsigned long flags, const char *devname, void *dev_id) @@ -195,6 +200,8 @@ unsigned long probe_irq_on (void) return 0; } +EXPORT_SYMBOL(probe_irq_on); + int probe_irq_off (unsigned long irqs) { #ifdef CONFIG_Q40 @@ -204,6 +211,8 @@ int probe_irq_off (unsigned long irqs) return 0; } +EXPORT_SYMBOL(probe_irq_off); + static void dummy_enable_irq(unsigned int irq) { printk("calling uninitialized enable_irq()\n"); diff --git a/arch/m68k/kernel/process.c b/arch/m68k/kernel/process.c index 0fdc63c71dd70..8d72a5c5b0c78 100644 --- a/arch/m68k/kernel/process.c +++ b/arch/m68k/kernel/process.c @@ -12,6 +12,7 @@ #include #include +#include #include #include #include @@ -45,6 +46,8 @@ static struct signal_struct init_signals = INIT_SIGNALS(init_signals); static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); struct mm_struct init_mm = INIT_MM(init_mm); +EXPORT_SYMBOL(init_mm); + union thread_union init_thread_union __attribute__((section(".data.init_task"), aligned(THREAD_SIZE))) = { INIT_THREAD_INFO(init_task) }; @@ -52,6 +55,7 @@ __attribute__((section(".data.init_task"), aligned(THREAD_SIZE))) /* initial task structure */ struct task_struct init_task = INIT_TASK(init_task); +EXPORT_SYMBOL(init_task); asmlinkage void ret_from_fork(void); @@ -111,6 +115,8 @@ void machine_restart(char * __unused) for (;;); } +EXPORT_SYMBOL(machine_restart); + void machine_halt(void) { if (mach_halt) @@ -118,6 +124,8 @@ void machine_halt(void) for (;;); } +EXPORT_SYMBOL(machine_halt); + void machine_power_off(void) { if (mach_power_off) @@ -125,6 +133,8 @@ void machine_power_off(void) for (;;); } +EXPORT_SYMBOL(machine_power_off); + void show_regs(struct pt_regs * regs) { printk("\n"); diff --git a/arch/m68k/kernel/time.c b/arch/m68k/kernel/time.c index 8934a229abeff..e6e42d41e288e 100644 --- a/arch/m68k/kernel/time.c +++ b/arch/m68k/kernel/time.c @@ -12,6 +12,7 @@ #include /* CONFIG_HEARTBEAT */ #include +#include #include #include #include @@ -28,6 +29,8 @@ u64 jiffies_64 = INITIAL_JIFFIES; +EXPORT_SYMBOL(jiffies_64); + static inline int set_rtc_mmss(unsigned long nowtime) { if (mach_set_clock_mmss) @@ -139,6 +142,8 @@ void do_gettimeofday(struct timeval *tv) tv->tv_usec = usec; } +EXPORT_SYMBOL(do_gettimeofday); + int do_settimeofday(struct timespec *tv) { time_t wtm_sec, sec = tv->tv_sec; @@ -172,6 +177,8 @@ int do_settimeofday(struct timespec *tv) return 0; } +EXPORT_SYMBOL(do_settimeofday); + /* * Scheduler clock - returns current time in ns units. */ diff --git a/arch/m68k/kernel/traps.c b/arch/m68k/kernel/traps.c index 90cfd26c8ad39..6d8a2a960044d 100644 --- a/arch/m68k/kernel/traps.c +++ b/arch/m68k/kernel/traps.c @@ -953,6 +953,8 @@ void dump_stack(void) show_trace(&stack); } +EXPORT_SYMBOL(dump_stack); + void bad_super_trap (struct frame *fp) { console_verbose(); diff --git a/arch/m68knommu/kernel/init_task.c b/arch/m68knommu/kernel/init_task.c index c7438903f41d4..51ee0a032b9c3 100644 --- a/arch/m68knommu/kernel/init_task.c +++ b/arch/m68knommu/kernel/init_task.c @@ -2,6 +2,7 @@ * linux/arch/m68knommu/kernel/init_task.c */ #include +#include #include #include #include @@ -16,6 +17,8 @@ static struct signal_struct init_signals = INIT_SIGNALS(init_signals); static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); struct mm_struct init_mm = INIT_MM(init_mm); +EXPORT_SYMBOL(init_mm); + /* * Initial task structure. * @@ -24,6 +27,7 @@ struct mm_struct init_mm = INIT_MM(init_mm); __asm__(".align 4"); struct task_struct init_task = INIT_TASK(init_task); +EXPORT_SYMBOL(init_task); /* * Initial thread structure. diff --git a/arch/m68knommu/kernel/process.c b/arch/m68knommu/kernel/process.c index def29a9728a2b..c8b87371641af 100644 --- a/arch/m68knommu/kernel/process.c +++ b/arch/m68knommu/kernel/process.c @@ -14,6 +14,7 @@ */ #include +#include #include #include #include @@ -72,6 +73,8 @@ void machine_restart(char * __unused) for (;;); } +EXPORT_SYMBOL(machine_restart); + void machine_halt(void) { if (mach_halt) @@ -79,6 +82,8 @@ void machine_halt(void) for (;;); } +EXPORT_SYMBOL(machine_halt); + void machine_power_off(void) { if (mach_power_off) @@ -86,6 +91,8 @@ void machine_power_off(void) for (;;); } +EXPORT_SYMBOL(machine_power_off); + void show_regs(struct pt_regs * regs) { printk("\n"); diff --git a/arch/m68knommu/kernel/time.c b/arch/m68knommu/kernel/time.c index 1d1183d5e70a7..01074a94a4d8b 100644 --- a/arch/m68knommu/kernel/time.c +++ b/arch/m68knommu/kernel/time.c @@ -12,6 +12,7 @@ #include #include +#include #include #include #include @@ -28,6 +29,8 @@ u64 jiffies_64 = INITIAL_JIFFIES; +EXPORT_SYMBOL(jiffies_64); + extern unsigned long wall_jiffies; @@ -164,6 +167,8 @@ void do_gettimeofday(struct timeval *tv) tv->tv_usec = usec; } +EXPORT_SYMBOL(do_gettimeofday); + int do_settimeofday(struct timespec *tv) { time_t wtm_sec, sec = tv->tv_sec; @@ -196,3 +201,5 @@ int do_settimeofday(struct timespec *tv) write_sequnlock_irq(&xtime_lock); return 0; } + +EXPORT_SYMBOL(do_settimeofday); diff --git a/arch/m68knommu/lib/checksum.c b/arch/m68knommu/lib/checksum.c index 45fec20db2b24..eed62d7e87f5b 100644 --- a/arch/m68knommu/lib/checksum.c +++ b/arch/m68knommu/lib/checksum.c @@ -32,6 +32,7 @@ of the assembly has to go. */ #include +#include static inline unsigned short from32to16(unsigned long x) { @@ -123,6 +124,8 @@ unsigned int csum_partial(const unsigned char * buff, int len, unsigned int sum) return result; } +EXPORT_SYMBOL(csum_partial); + /* * this routine is used for miscellaneous IP-like checksums, mainly * in icmp.c diff --git a/arch/m68knommu/platform/5307/ints.c b/arch/m68knommu/platform/5307/ints.c index f3cbebab43139..1ccb7070fb8ba 100644 --- a/arch/m68knommu/platform/5307/ints.c +++ b/arch/m68knommu/platform/5307/ints.c @@ -15,6 +15,7 @@ * for more details. */ +#include #include #include #include @@ -136,6 +137,8 @@ int request_irq( return 0; } +EXPORT_SYMBOL(request_irq); + void free_irq(unsigned int irq, void *dev_id) { if (irq >= NR_IRQS) { @@ -162,6 +165,8 @@ void free_irq(unsigned int irq, void *dev_id) irq_list[irq].devname = NULL; } +EXPORT_SYMBOL(free_irq); + int sys_request_irq(unsigned int irq, irqreturn_t (*handler)(int, void *, struct pt_regs *), @@ -222,11 +227,15 @@ unsigned long probe_irq_on (void) return 0; } +EXPORT_SYMBOL(probe_irq_on); + int probe_irq_off (unsigned long irqs) { return 0; } +EXPORT_SYMBOL(probe_irq_off); + asmlinkage void process_int(unsigned long vec, struct pt_regs *fp) { if (vec >= VEC_INT1 && vec <= VEC_INT7) { diff --git a/arch/m68knommu/platform/68328/ints.c b/arch/m68knommu/platform/68328/ints.c index 290fdd07b7b0f..15c72cadd3ef4 100644 --- a/arch/m68knommu/platform/68328/ints.c +++ b/arch/m68knommu/platform/68328/ints.c @@ -9,6 +9,7 @@ * Copyright 1999 D. Jeff Dionne */ +#include #include #include #include @@ -172,6 +173,8 @@ int request_irq(unsigned int irq, void (*handler)(int, void *, struct pt_regs *) return 0; } +EXPORT_SYMBOL(request_irq); + void free_irq(unsigned int irq, void *dev_id) { if (irq >= NR_IRQS) { @@ -191,6 +194,8 @@ void free_irq(unsigned int irq, void *dev_id) IMR |= 1< +#include #include #include #include @@ -216,6 +217,8 @@ int request_irq(unsigned int irq, void (*handler)(int, void *, struct pt_regs *) return 0; } +EXPORT_SYMBOL(request_irq); + void free_irq(unsigned int irq, void *dev_id) { if (irq >= INTERNAL_IRQS) { @@ -234,6 +237,8 @@ void free_irq(unsigned int irq, void *dev_id) *(volatile unsigned long *)0xfffff304 |= 1< #include #include +#include #include #include #include @@ -337,6 +338,8 @@ int request_irq(unsigned int irq, return retval; } +EXPORT_SYMBOL(request_irq); + void free_irq(unsigned int irq, void *dev_id) { struct irqaction * action, **p; @@ -361,18 +364,24 @@ void free_irq(unsigned int irq, void *dev_id) printk("Trying to free free IRQ%d\n",irq); } +EXPORT_SYMBOL(free_irq); + unsigned long probe_irq_on (void) { /* TODO */ return 0; } +EXPORT_SYMBOL(probe_irq_on); + int probe_irq_off (unsigned long irqs) { /* TODO */ return 0; } +EXPORT_SYMBOL(probe_irq_off); + static void write_err_interrupt(int irq, void *dev_id, struct pt_regs * regs) { diff --git a/arch/mips/baget/time.c b/arch/mips/baget/time.c index b1e67e29b5130..205bde31215e5 100644 --- a/arch/mips/baget/time.c +++ b/arch/mips/baget/time.c @@ -6,6 +6,7 @@ #include #include +#include #include #include #include @@ -87,6 +88,8 @@ void do_gettimeofday(struct timeval *tv) } while (read_seqretry(&xtime_lock, seq)); } +EXPORT_SYMBOL(do_gettimeofday); + void do_settimeofday(struct timeval *tv) { write_seqlock_irq(&xtime_lock); @@ -98,3 +101,5 @@ void do_settimeofday(struct timeval *tv) time_esterror = NTP_PHASE_LIMIT; write_sequnlock_irq(&xtime_lock); } + +EXPORT_SYMBOL(do_settimeofday); diff --git a/arch/mips/dec/time.c b/arch/mips/dec/time.c index 657226b08653a..cafc8eaa05fa5 100644 --- a/arch/mips/dec/time.c +++ b/arch/mips/dec/time.c @@ -9,6 +9,7 @@ * */ #include +#include #include #include #include @@ -238,6 +239,8 @@ void do_gettimeofday(struct timeval *tv) tv->tv_usec = usec; } +EXPORT_SYMBOL(do_gettimeofday); + void do_settimeofday(struct timeval *tv) { write_seqlock_irq(&xtime_lock); @@ -264,6 +267,8 @@ void do_settimeofday(struct timeval *tv) write_sequnlock_irq(&xtime_lock); } +EXPORT_SYMBOL(do_settimeofday); + /* * In order to set the CMOS clock precisely, set_rtc_mmss has to be * called 500 ms after the second nowtime has started, because when diff --git a/arch/mips/galileo-boards/ev96100/time.c b/arch/mips/galileo-boards/ev96100/time.c index 2ed5b2755a887..c3cc08527397c 100644 --- a/arch/mips/galileo-boards/ev96100/time.c +++ b/arch/mips/galileo-boards/ev96100/time.c @@ -34,6 +34,7 @@ */ #include #include +#include #include #include @@ -222,6 +223,8 @@ void do_gettimeofday(struct timeval *tv) tv->tv_usec = usec; } +EXPORT_SYMBOL(do_gettimeofday); + void do_settimeofday(struct timeval *tv) { write_seqlock_irq(&xtime_lock); @@ -248,6 +251,8 @@ void do_settimeofday(struct timeval *tv) write_sequnlock_irq(&xtime_lock); } +EXPORT_SYMBOL(do_settimeofday); + /* * There are a lot of conceptually broken versions of the MIPS timer interrupt * handler floating around. This one is rather different, but the algorithm diff --git a/arch/mips/kernel/init_task.c b/arch/mips/kernel/init_task.c index a3540eaa199da..cfc910d482a04 100644 --- a/arch/mips/kernel/init_task.c +++ b/arch/mips/kernel/init_task.c @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -12,6 +13,8 @@ static struct signal_struct init_signals = INIT_SIGNALS(init_signals); static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); struct mm_struct init_mm = INIT_MM(init_mm); +EXPORT_SYMBOL(init_mm); + /* * Initial thread structure. * @@ -32,3 +35,5 @@ union thread_union init_thread_union * All other task structs will be allocated on slabs in fork.c */ struct task_struct init_task = INIT_TASK(init_task); + +EXPORT_SYMBOL(init_task); diff --git a/arch/mips/kernel/irq.c b/arch/mips/kernel/irq.c index bb093eb35d957..85c40b9548b3c 100644 --- a/arch/mips/kernel/irq.c +++ b/arch/mips/kernel/irq.c @@ -494,6 +494,8 @@ int request_irq(unsigned int irq, return retval; } +EXPORT_SYMBOL(request_irq); + /** * free_irq - free an interrupt * @irq: Interrupt line to free @@ -548,6 +550,8 @@ void free_irq(unsigned int irq, void *dev_id) } } +EXPORT_SYMBOL(free_irq); + /* * IRQ autodetection code.. * @@ -641,6 +645,8 @@ unsigned long probe_irq_on(void) return val; } +EXPORT_SYMBOL(probe_irq_on); + /* * Return a mask of triggered interrupts (this * can handle only legacy ISA interrupts). @@ -739,6 +745,8 @@ int probe_irq_off(unsigned long val) return irq_found; } +EXPORT_SYMBOL(probe_irq_off); + /* this was setup_x86_irq but it seems pretty generic */ int setup_irq(unsigned int irq, struct irqaction * new) { diff --git a/arch/mips/kernel/reset.c b/arch/mips/kernel/reset.c index 5c0db64db0ca1..7e0a9821931ad 100644 --- a/arch/mips/kernel/reset.c +++ b/arch/mips/kernel/reset.c @@ -7,6 +7,7 @@ * Copyright (C) 2001 MIPS Technologies, Inc. */ #include +#include #include #include #include @@ -25,12 +26,18 @@ void machine_restart(char *command) _machine_restart(command); } +EXPORT_SYMBOL(machine_restart); + void machine_halt(void) { _machine_halt(); } +EXPORT_SYMBOL(machine_halt); + void machine_power_off(void) { _machine_power_off(); } + +EXPORT_SYMBOL(machine_power_off); diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c index 67f7eddd30fb9..5ecfcb8fd2734 100644 --- a/arch/mips/kernel/smp.c +++ b/arch/mips/kernel/smp.c @@ -48,6 +48,8 @@ cpumask_t cpu_online_map; /* Bitmask of currently online CPUs */ int __cpu_number_map[NR_CPUS]; int __cpu_logical_map[NR_CPUS]; +EXPORT_SYMBOL(cpu_online_map); + /* These are defined by the board-specific code. */ /* diff --git a/arch/mips/kernel/time.c b/arch/mips/kernel/time.c index 2626c8b878c19..c508fd4f7a546 100644 --- a/arch/mips/kernel/time.c +++ b/arch/mips/kernel/time.c @@ -39,6 +39,8 @@ u64 jiffies_64 = INITIAL_JIFFIES; +EXPORT_SYMBOL(jiffies_64); + /* * forward reference */ @@ -99,6 +101,8 @@ void do_gettimeofday(struct timeval *tv) tv->tv_usec = usec; } +EXPORT_SYMBOL(do_gettimeofday); + int do_settimeofday(struct timespec *tv) { time_t wtm_sec, sec = tv->tv_sec; @@ -132,6 +136,7 @@ int do_settimeofday(struct timespec *tv) return 0; } +EXPORT_SYMBOL(do_settimeofday); /* * Gettimeoffset routines. These routines returns the time duration diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c index 85bfd44d732b4..f45a7fc853073 100644 --- a/arch/mips/kernel/traps.c +++ b/arch/mips/kernel/traps.c @@ -141,6 +141,8 @@ void dump_stack(void) show_trace(current, &stack); } +EXPORT_SYMBOL(dump_stack); + void show_code(unsigned int *pc) { long i; diff --git a/arch/mips/mm-32/init.c b/arch/mips/mm-32/init.c index f1a52ffbb1372..021f3e9a75bd5 100644 --- a/arch/mips/mm-32/init.c +++ b/arch/mips/mm-32/init.c @@ -10,6 +10,7 @@ */ #include #include +#include #include #include #include @@ -81,6 +82,9 @@ unsigned long setup_zero_pages(void) pte_t *kmap_pte; pgprot_t kmap_prot; +EXPORT_SYMBOL(kmap_prot); +EXPORT_SYMBOL(kmap_pte); + #define kmap_get_fixmap_pte(vaddr) \ pte_offset_kernel(pmd_offset(pgd_offset_k(vaddr), (vaddr)), (vaddr)) diff --git a/arch/mips/mm-64/init.c b/arch/mips/mm-64/init.c index 40f616a4dfb0f..1375a82cf14cc 100644 --- a/arch/mips/mm-64/init.c +++ b/arch/mips/mm-64/init.c @@ -10,6 +10,7 @@ */ #include #include +#include #include #include #include @@ -81,6 +82,9 @@ unsigned long setup_zero_pages(void) pte_t *kmap_pte; pgprot_t kmap_prot; +EXPORT_SYMBOL(kmap_prot); +EXPORT_SYMBOL(kmap_pte); + #define kmap_get_fixmap_pte(vaddr) \ pte_offset_kernel(pmd_offset(pgd_offset_k(vaddr), (vaddr)), (vaddr)) diff --git a/arch/parisc/kernel/cache.c b/arch/parisc/kernel/cache.c index 63110ae4d200d..9979780ecbb61 100644 --- a/arch/parisc/kernel/cache.c +++ b/arch/parisc/kernel/cache.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include @@ -29,6 +30,7 @@ int split_tlb; int dcache_stride; int icache_stride; +EXPORT_SYMBOL(dcache_stride); struct pdc_cache_info cache_info; #ifndef CONFIG_PA20 @@ -49,6 +51,7 @@ flush_cache_all_local(void) flush_instruction_cache_local(); flush_data_cache_local(); } +EXPORT_SYMBOL(flush_cache_all_local); /* flushes EVERYTHING (tlb & cache) */ @@ -58,6 +61,7 @@ flush_all_caches(void) flush_cache_all(); flush_tlb_all(); } +EXPORT_SYMBOL(flush_all_caches); void update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t pte) @@ -289,3 +293,4 @@ void __flush_dcache_page(struct page *page) } } +EXPORT_SYMBOL(__flush_dcache_page); diff --git a/arch/parisc/kernel/init_task.c b/arch/parisc/kernel/init_task.c index 76a650c4a16a7..da0e9b9f50223 100644 --- a/arch/parisc/kernel/init_task.c +++ b/arch/parisc/kernel/init_task.c @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -13,6 +14,8 @@ static struct signal_struct init_signals = INIT_SIGNALS(init_signals); static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); struct mm_struct init_mm = INIT_MM(init_mm); +EXPORT_SYMBOL(init_mm); + /* * Initial task structure. * @@ -36,5 +39,7 @@ unsigned long pg0[PT_INITIAL * PTRS_PER_PTE] __attribute__ ((aligned(4096))) = { * * All other task structs will be allocated on slabs in fork.c */ +EXPORT_SYMBOL(init_task); + __asm__(".data"); struct task_struct init_task = INIT_TASK(init_task); diff --git a/arch/parisc/kernel/irq.c b/arch/parisc/kernel/irq.c index 4b5ce6a17bfab..f9c981f9adc99 100644 --- a/arch/parisc/kernel/irq.c +++ b/arch/parisc/kernel/irq.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -652,6 +653,8 @@ int request_irq(unsigned int irq, return 0; } +EXPORT_SYMBOL(request_irq); + void free_irq(unsigned int irq, void *dev_id) { struct irqaction *action, **p; @@ -694,6 +697,8 @@ void free_irq(unsigned int irq, void *dev_id) printk(KERN_ERR "Trying to free free IRQ%d\n",irq); } +EXPORT_SYMBOL(free_irq); + #ifdef CONFIG_SMP void synchronize_irq(unsigned int irqnum) @@ -787,6 +792,8 @@ unsigned long probe_irq_on(void) return val; } +EXPORT_SYMBOL(probe_irq_on); + /* * Return the one interrupt that triggered (this can * handle any interrupt source). @@ -846,6 +853,8 @@ int probe_irq_off(unsigned long val) return irq_found; } +EXPORT_SYMBOL(probe_irq_off); + unsigned int probe_irq_mask(unsigned long irqs) { return 0; diff --git a/arch/parisc/kernel/parisc_ksyms.c b/arch/parisc/kernel/parisc_ksyms.c index 4cd0cb06618e8..db2895f232565 100644 --- a/arch/parisc/kernel/parisc_ksyms.c +++ b/arch/parisc/kernel/parisc_ksyms.c @@ -69,7 +69,6 @@ EXPORT_SYMBOL(flush_kernel_dcache_range_asm); EXPORT_SYMBOL(flush_kernel_dcache_page); EXPORT_SYMBOL(flush_data_cache_local); EXPORT_SYMBOL(flush_kernel_icache_range_asm); -EXPORT_SYMBOL(__flush_dcache_page); EXPORT_SYMBOL(flush_all_caches); EXPORT_SYMBOL(dcache_stride); EXPORT_SYMBOL(flush_cache_all_local); diff --git a/arch/parisc/kernel/process.c b/arch/parisc/kernel/process.c index 99c62d846a481..2dc03e1c752a3 100644 --- a/arch/parisc/kernel/process.c +++ b/arch/parisc/kernel/process.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -39,11 +40,15 @@ void disable_hlt(void) hlt_counter++; } +EXPORT_SYMBOL(disable_hlt); + void enable_hlt(void) { hlt_counter--; } +EXPORT_SYMBOL(enable_hlt); + void default_idle(void) { barrier(); @@ -119,6 +124,8 @@ void machine_restart(char *cmd) } +EXPORT_SYMBOL(machine_restart); + void machine_halt(void) { /* @@ -127,6 +134,8 @@ void machine_halt(void) */ } +EXPORT_SYMBOL(machine_halt); + /* * This routine is called from sys_reboot to actually turn off the @@ -152,6 +161,8 @@ void machine_power_off(void) KERN_EMERG "Please power this system off now."); } +EXPORT_SYMBOL(machine_power_off); + /* * Create a kernel thread diff --git a/arch/parisc/kernel/smp.c b/arch/parisc/kernel/smp.c index a4d604ff4d40c..7837596d9d269 100644 --- a/arch/parisc/kernel/smp.c +++ b/arch/parisc/kernel/smp.c @@ -26,6 +26,7 @@ #include #include +#include #include #include #include @@ -65,12 +66,16 @@ static volatile int cpu_now_booting = 0; /* track which CPU is booting */ cpumask_t cpu_online_map = CPU_MASK_NONE; /* Bitmap of online CPUs */ #define IS_LOGGED_IN(cpunum) (cpu_isset(cpunum, cpu_online_map)) +EXPORT_SYMBOL(cpu_online_map); + int smp_num_cpus = 1; int smp_threads_ready = 0; unsigned long cache_decay_ticks; static int max_cpus = -1; /* Command line */ cpumask_t cpu_present_mask; +EXPORT_SYMBOL(cpu_present_mask); + struct smp_call_struct { void (*func) (void *info); void *info; diff --git a/arch/parisc/kernel/time.c b/arch/parisc/kernel/time.c index b6da001f8681b..58a9077c4dcba 100644 --- a/arch/parisc/kernel/time.c +++ b/arch/parisc/kernel/time.c @@ -12,6 +12,7 @@ */ #include #include +#include #include #include #include @@ -34,6 +35,8 @@ u64 jiffies_64 = INITIAL_JIFFIES; +EXPORT_SYMBOL(jiffies_64); + /* xtime and wall_jiffies keep wall-clock time */ extern unsigned long wall_jiffies; @@ -193,6 +196,8 @@ do_gettimeofday (struct timeval *tv) tv->tv_usec = usec; } +EXPORT_SYMBOL(do_gettimeofday); + int do_settimeofday (struct timespec *tv) { @@ -228,6 +233,8 @@ do_settimeofday (struct timespec *tv) return 0; } +EXPORT_SYMBOL(do_settimeofday); + /* * XXX: We can do better than this. * Returns nanoseconds diff --git a/arch/parisc/kernel/traps.c b/arch/parisc/kernel/traps.c index e1e102e2eb838..4cdf46e496264 100644 --- a/arch/parisc/kernel/traps.c +++ b/arch/parisc/kernel/traps.c @@ -129,6 +129,7 @@ void dump_stack(void) show_trace(current, &stack); } +EXPORT_SYMBOL(dump_stack); #ifndef __LP64__ static int kstack_depth_to_print = 64 * 4; diff --git a/arch/parisc/lib/checksum.c b/arch/parisc/lib/checksum.c index 368a095c5e74f..abd29ac69f46b 100644 --- a/arch/parisc/lib/checksum.c +++ b/arch/parisc/lib/checksum.c @@ -96,6 +96,8 @@ unsigned int csum_partial(const unsigned char *buff, int len, unsigned int sum) return result; } +EXPORT_SYMBOL(csum_partial); + /* * copy while checksumming, otherwise like csum_partial */ diff --git a/arch/ppc/kernel/irq.c b/arch/ppc/kernel/irq.c index ec77733cb8b20..e7bf1e5825b2d 100644 --- a/arch/ppc/kernel/irq.c +++ b/arch/ppc/kernel/irq.c @@ -27,6 +27,7 @@ */ #include +#include #include #include #include @@ -214,6 +215,8 @@ void free_irq(unsigned int irq, void* dev_id) return; } +EXPORT_SYMBOL(free_irq); + int request_irq(unsigned int irq, irqreturn_t (*handler)(int, void *, struct pt_regs *), unsigned long irqflags, const char * devname, void *dev_id) @@ -252,6 +255,8 @@ int request_irq(unsigned int irq, return 0; } +EXPORT_SYMBOL(request_irq); + /* * Generic enable/disable code: this just calls * down into the PIC-specific version for the actual @@ -530,11 +535,15 @@ unsigned long probe_irq_on (void) return 0; } +EXPORT_SYMBOL(probe_irq_on); + int probe_irq_off (unsigned long irqs) { return 0; } +EXPORT_SYMBOL(probe_irq_off); + unsigned int probe_irq_mask(unsigned long irqs) { return 0; diff --git a/arch/ppc/kernel/process.c b/arch/ppc/kernel/process.c index d3c858e359d6f..ba96af588c4bc 100644 --- a/arch/ppc/kernel/process.c +++ b/arch/ppc/kernel/process.c @@ -498,6 +498,8 @@ void dump_stack(void) show_stack(current, NULL); } +EXPORT_SYMBOL(dump_stack); + void show_stack(struct task_struct *tsk, unsigned long *stack) { unsigned long sp, stack_top, prev_sp, ret; diff --git a/arch/ppc/kernel/setup.c b/arch/ppc/kernel/setup.c index 7b399de14a852..0eb3575a496bd 100644 --- a/arch/ppc/kernel/setup.c +++ b/arch/ppc/kernel/setup.c @@ -119,16 +119,22 @@ void machine_restart(char *cmd) ppc_md.restart(cmd); } +EXPORT_SYMBOL(machine_restart); + void machine_power_off(void) { ppc_md.power_off(); } +EXPORT_SYMBOL(machine_power_off); + void machine_halt(void) { ppc_md.halt(); } +EXPORT_SYMBOL(machine_halt); + void (*pm_power_off)(void) = machine_power_off; #ifdef CONFIG_TAU diff --git a/arch/ppc/kernel/smp.c b/arch/ppc/kernel/smp.c index a1e7e665a3919..9d8e34c4702b1 100644 --- a/arch/ppc/kernel/smp.c +++ b/arch/ppc/kernel/smp.c @@ -10,6 +10,7 @@ #include #include +#include #include #include #include @@ -52,6 +53,8 @@ cpumask_t cpu_possible_map; int smp_hw_index[NR_CPUS]; struct thread_info *secondary_ti; +EXPORT_SYMBOL(cpu_online_map); + /* SMP operations for this machine */ static struct smp_ops_t *smp_ops; diff --git a/arch/ppc/kernel/time.c b/arch/ppc/kernel/time.c index 22e6d29d9cb7d..26ac94c72b582 100644 --- a/arch/ppc/kernel/time.c +++ b/arch/ppc/kernel/time.c @@ -69,6 +69,8 @@ /* XXX false sharing with below? */ u64 jiffies_64 = INITIAL_JIFFIES; +EXPORT_SYMBOL(jiffies_64); + unsigned long disarm_decr[NR_CPUS]; extern struct timezone sys_tz; @@ -239,6 +241,8 @@ void do_gettimeofday(struct timeval *tv) tv->tv_usec = usec; } +EXPORT_SYMBOL(do_gettimeofday); + int do_settimeofday(struct timespec *tv) { time_t wtm_sec, new_sec = tv->tv_sec; @@ -293,6 +297,8 @@ int do_settimeofday(struct timespec *tv) return 0; } +EXPORT_SYMBOL(do_settimeofday); + /* This function is only called on the boot processor */ void __init time_init(void) { diff --git a/arch/ppc/mm/init.c b/arch/ppc/mm/init.c index 39cf6bf4cf5a8..e65213ea0b6ec 100644 --- a/arch/ppc/mm/init.c +++ b/arch/ppc/mm/init.c @@ -19,6 +19,7 @@ */ #include +#include #include #include #include @@ -80,6 +81,9 @@ extern char __openfirmware_begin, __openfirmware_end; #ifdef CONFIG_HIGHMEM pte_t *kmap_pte; pgprot_t kmap_prot; + +EXPORT_SYMBOL(kmap_prot); +EXPORT_SYMBOL(kmap_pte); #endif void MMU_init(void); diff --git a/arch/ppc/syslib/ppc8xx_pic.c b/arch/ppc/syslib/ppc8xx_pic.c index 4fb1a2bb47b91..8481a415af06d 100644 --- a/arch/ppc/syslib/ppc8xx_pic.c +++ b/arch/ppc/syslib/ppc8xx_pic.c @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -196,3 +197,5 @@ int request_irq(unsigned int irq, } #endif } + +EXPORT_SYMBOL(request_irq); diff --git a/arch/ppc64/kernel/init_task.c b/arch/ppc64/kernel/init_task.c index 546636ee5a876..38cb7aeb12233 100644 --- a/arch/ppc64/kernel/init_task.c +++ b/arch/ppc64/kernel/init_task.c @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -11,6 +12,8 @@ static struct signal_struct init_signals = INIT_SIGNALS(init_signals); static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); struct mm_struct init_mm = INIT_MM(init_mm); +EXPORT_SYMBOL(init_mm); + /* * Initial thread structure. * @@ -28,3 +31,5 @@ union thread_union init_thread_union * All other task structs will be allocated on slabs in fork.c */ struct task_struct init_task = INIT_TASK(init_task); + +EXPORT_SYMBOL(init_task); diff --git a/arch/ppc64/kernel/irq.c b/arch/ppc64/kernel/irq.c index d1b1af298f80a..869c27539f811 100644 --- a/arch/ppc64/kernel/irq.c +++ b/arch/ppc64/kernel/irq.c @@ -24,6 +24,7 @@ */ #include +#include #include #include #include @@ -216,11 +217,15 @@ int request_irq(unsigned int irq, return 0; } +EXPORT_SYMBOL(request_irq); + void free_irq(unsigned int irq, void *dev_id) { request_irq(irq, NULL, 0, NULL, dev_id); } +EXPORT_SYMBOL(free_irq); + /* * Generic enable/disable code: this just calls * down into the PIC-specific version for the actual @@ -603,11 +608,15 @@ unsigned long probe_irq_on (void) return 0; } +EXPORT_SYMBOL(probe_irq_on); + int probe_irq_off (unsigned long irqs) { return 0; } +EXPORT_SYMBOL(probe_irq_off); + unsigned int probe_irq_mask(unsigned long irqs) { return 0; diff --git a/arch/ppc64/kernel/process.c b/arch/ppc64/kernel/process.c index 4477ea92dceb8..0b16f7615ad52 100644 --- a/arch/ppc64/kernel/process.c +++ b/arch/ppc64/kernel/process.c @@ -17,6 +17,7 @@ */ #include +#include #include #include #include @@ -431,6 +432,8 @@ void dump_stack(void) show_stack(current, (unsigned long *)_get_SP()); } +EXPORT_SYMBOL(dump_stack); + void show_trace_task(struct task_struct *tsk) { show_stack(tsk, (unsigned long *)tsk->thread.ksp); diff --git a/arch/ppc64/kernel/setup.c b/arch/ppc64/kernel/setup.c index bc6b7aeb6b180..b0d0d54c8a46e 100644 --- a/arch/ppc64/kernel/setup.c +++ b/arch/ppc64/kernel/setup.c @@ -228,17 +228,23 @@ void machine_restart(char *cmd) { ppc_md.restart(cmd); } + +EXPORT_SYMBOL(machine_restart); void machine_power_off(void) { ppc_md.power_off(); } + +EXPORT_SYMBOL(machine_power_off); void machine_halt(void) { ppc_md.halt(); } +EXPORT_SYMBOL(machine_halt); + unsigned long ppc_proc_freq; unsigned long ppc_tb_freq; diff --git a/arch/ppc64/kernel/smp.c b/arch/ppc64/kernel/smp.c index e7a99f4983e43..5c35dcae6f97f 100644 --- a/arch/ppc64/kernel/smp.c +++ b/arch/ppc64/kernel/smp.c @@ -17,6 +17,7 @@ #include #include +#include #include #include #include @@ -55,6 +56,8 @@ unsigned long cache_decay_ticks; /* initialised so it doesn't end up in bss */ cpumask_t cpu_online_map = CPU_MASK_NONE; +EXPORT_SYMBOL(cpu_online_map); + static struct smp_ops_t *smp_ops; static volatile unsigned int cpu_callin_map[NR_CPUS]; diff --git a/arch/ppc64/kernel/time.c b/arch/ppc64/kernel/time.c index 2f5366cb9848d..3f652e5e6a3ee 100644 --- a/arch/ppc64/kernel/time.c +++ b/arch/ppc64/kernel/time.c @@ -35,6 +35,7 @@ #include #include +#include #include #include #include @@ -67,6 +68,8 @@ void smp_local_timer_interrupt(struct pt_regs *); u64 jiffies_64 = INITIAL_JIFFIES; +EXPORT_SYMBOL(jiffies_64); + /* keep track of when we need to update the rtc */ time_t last_rtc_update; extern int piranha_simulator; @@ -345,6 +348,8 @@ void do_gettimeofday(struct timeval *tv) tv->tv_usec = usec; } +EXPORT_SYMBOL(do_gettimeofday); + int do_settimeofday(struct timespec *tv) { time_t wtm_sec, new_sec = tv->tv_sec; @@ -411,6 +416,8 @@ int do_settimeofday(struct timespec *tv) return 0; } +EXPORT_SYMBOL(do_settimeofday); + /* * This function is a copy of the architecture independent function * but which calls do_settimeofday rather than setting the xtime diff --git a/arch/s390/kernel/init_task.c b/arch/s390/kernel/init_task.c index efab42c45fb8d..652c42325eca6 100644 --- a/arch/s390/kernel/init_task.c +++ b/arch/s390/kernel/init_task.c @@ -7,6 +7,7 @@ */ #include +#include #include #include @@ -19,6 +20,8 @@ static struct signal_struct init_signals = INIT_SIGNALS(init_signals); static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); struct mm_struct init_mm = INIT_MM(init_mm); +EXPORT_SYMBOL(init_mm); + /* * Initial thread structure. * @@ -37,3 +40,4 @@ union thread_union init_thread_union */ struct task_struct init_task = INIT_TASK(init_task); +EXPORT_SYMBOL(init_task); diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c index 30ea8fbaf5816..3798020fbbd56 100644 --- a/arch/s390/kernel/setup.c +++ b/arch/s390/kernel/setup.c @@ -15,6 +15,7 @@ */ #include +#include #include #include #include @@ -289,16 +290,22 @@ void machine_restart(char *command) _machine_restart(command); } +EXPORT_SYMBOL(machine_restart); + void machine_halt(void) { _machine_halt(); } +EXPORT_SYMBOL(machine_halt); + void machine_power_off(void) { _machine_power_off(); } +EXPORT_SYMBOL(machine_power_off); + /* * Setup function called from init/main.c just after the banner * was printed. diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c index daf01c8c90d1b..14646c5a10b32 100644 --- a/arch/s390/kernel/smp.c +++ b/arch/s390/kernel/smp.c @@ -55,6 +55,8 @@ cpumask_t cpu_online_map; cpumask_t cpu_possible_map; unsigned long cache_decay_ticks = 0; +EXPORT_SYMBOL(cpu_online_map); + /* * Reboot, halt and power_off routines for SMP. */ diff --git a/arch/s390/kernel/time.c b/arch/s390/kernel/time.c index 16b41456093eb..98200f412f712 100644 --- a/arch/s390/kernel/time.c +++ b/arch/s390/kernel/time.c @@ -12,6 +12,7 @@ */ #include +#include #include #include #include @@ -48,6 +49,8 @@ u64 jiffies_64 = INITIAL_JIFFIES; +EXPORT_SYMBOL(jiffies_64); + static ext_int_info_t ext_int_info_timer; static u64 init_timer_cc; static u64 jiffies_timer_cc; @@ -109,6 +112,8 @@ void do_gettimeofday(struct timeval *tv) tv->tv_usec = usec; } +EXPORT_SYMBOL(do_gettimeofday); + int do_settimeofday(struct timespec *tv) { time_t wtm_sec, sec = tv->tv_sec; @@ -140,6 +145,8 @@ int do_settimeofday(struct timespec *tv) return 0; } +EXPORT_SYMBOL(do_settimeofday); + #ifndef CONFIG_ARCH_S390X static inline __u32 diff --git a/arch/s390/kernel/traps.c b/arch/s390/kernel/traps.c index 75439982f1032..6efb3cfa4d830 100644 --- a/arch/s390/kernel/traps.c +++ b/arch/s390/kernel/traps.c @@ -147,6 +147,8 @@ void dump_stack(void) show_stack(0, 0); } +EXPORT_SYMBOL(dump_stack); + void show_registers(struct pt_regs *regs) { mm_segment_t old_fs; diff --git a/arch/sh/kernel/init_task.c b/arch/sh/kernel/init_task.c index ea14ba9f0cb6f..469a988d4d66f 100644 --- a/arch/sh/kernel/init_task.c +++ b/arch/sh/kernel/init_task.c @@ -1,4 +1,5 @@ #include +#include #include #include @@ -11,6 +12,8 @@ static struct signal_struct init_signals = INIT_SIGNALS(init_signals); static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); struct mm_struct init_mm = INIT_MM(init_mm); +EXPORT_SYMBOL(init_mm); + /* * Initial thread structure. * @@ -28,3 +31,5 @@ union thread_union init_thread_union * All other task structs will be allocated on slabs in fork.c */ struct task_struct init_task = INIT_TASK(init_task); + +EXPORT_SYMBOL(init_task); diff --git a/arch/sh/kernel/irq.c b/arch/sh/kernel/irq.c index 4b4896fc379e9..c226e0913a380 100644 --- a/arch/sh/kernel/irq.c +++ b/arch/sh/kernel/irq.c @@ -14,6 +14,7 @@ */ #include +#include #include #include #include @@ -354,6 +355,8 @@ int request_irq(unsigned int irq, return retval; } +EXPORT_SYMBOL(request_irq); + void free_irq(unsigned int irq, void *dev_id) { irq_desc_t *desc; @@ -391,6 +394,8 @@ void free_irq(unsigned int irq, void *dev_id) } } +EXPORT_SYMBOL(free_irq); + static DECLARE_MUTEX(probe_sem); /* @@ -475,6 +480,8 @@ unsigned long probe_irq_on(void) return val; } +EXPORT_SYMBOL(probe_irq_on); + int probe_irq_off(unsigned long val) { int i, irq_found, nr_irqs; @@ -506,6 +513,8 @@ int probe_irq_off(unsigned long val) return irq_found; } +EXPORT_SYMBOL(probe_irq_off); + int setup_irq(unsigned int irq, struct irqaction * new) { int shared = 0; diff --git a/arch/sh/kernel/process.c b/arch/sh/kernel/process.c index 73e631ff2147b..4873d8380c80e 100644 --- a/arch/sh/kernel/process.c +++ b/arch/sh/kernel/process.c @@ -11,6 +11,7 @@ * This file handles the architecture-dependent parts of process handling.. */ +#include #include #include #include @@ -33,11 +34,15 @@ void disable_hlt(void) hlt_counter++; } +EXPORT_SYMBOL(disable_hlt); + void enable_hlt(void) { hlt_counter--; } +EXPORT_SYMBOL(enable_hlt); + void default_idle(void) { /* endless idle loop with no priority at all */ @@ -71,16 +76,22 @@ void machine_restart(char * __unused) "mov.l @%1, %0" : : "r" (0x10000000), "r" (0x80000001)); } +EXPORT_SYMBOL(machine_restart); + void machine_halt(void) { while (1) asm volatile("sleep" : : : "memory"); } +EXPORT_SYMBOL(machine_halt); + void machine_power_off(void) { } +EXPORT_SYMBOL(machine_power_off); + void show_regs(struct pt_regs * regs) { printk("\n"); diff --git a/arch/sh/kernel/time.c b/arch/sh/kernel/time.c index 6898847a14335..8bf9a5ca6e666 100644 --- a/arch/sh/kernel/time.c +++ b/arch/sh/kernel/time.c @@ -13,6 +13,7 @@ #include #include +#include #include #include #include @@ -72,6 +73,8 @@ spinlock_t tmu0_lock = SPIN_LOCK_UNLOCKED; u64 jiffies_64 = INITIAL_JIFFIES; +EXPORT_SYMBOL(jiffies_64); + /* XXX: Can we initialize this in a routine somewhere? Dreamcast doesn't want * these routines anywhere... */ #ifdef CONFIG_SH_RTC @@ -177,6 +180,8 @@ void do_gettimeofday(struct timeval *tv) tv->tv_usec = usec; } +EXPORT_SYMBOL(do_gettimeofday); + int do_settimeofday(struct timespec *tv) { time_t wtm_sec, sec = tv->tv_sec; @@ -211,6 +216,8 @@ int do_settimeofday(struct timespec *tv) return 0; } +EXPORT_SYMBOL(do_settimeofday); + /* last time the RTC clock got updated */ static long last_rtc_update; diff --git a/arch/sh/kernel/traps.c b/arch/sh/kernel/traps.c index 59b2ca6295085..ddddb3333addc 100644 --- a/arch/sh/kernel/traps.c +++ b/arch/sh/kernel/traps.c @@ -647,3 +647,4 @@ void dump_stack(void) show_stack(NULL, NULL); } +EXPORT_SYMBOL(dump_stack); diff --git a/arch/sparc/kernel/init_task.c b/arch/sparc/kernel/init_task.c index 814ea28ad6bfd..8b451b235665f 100644 --- a/arch/sparc/kernel/init_task.c +++ b/arch/sparc/kernel/init_task.c @@ -1,4 +1,5 @@ #include +#include #include #include @@ -12,6 +13,9 @@ static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); struct mm_struct init_mm = INIT_MM(init_mm); struct task_struct init_task = INIT_TASK(init_task); +EXPORT_SYMBOL(init_mm); +EXPORT_SYMBOL(init_task); + /* .text section in head.S is aligned at 8k boundary and this gets linked * right after that so that the init_thread_union is aligned properly as well. * If this is not aligned on a 8k boundry, then you should change code diff --git a/arch/sparc/kernel/irq.c b/arch/sparc/kernel/irq.c index 6ef18cef15fd5..d53d1ec989a9a 100644 --- a/arch/sparc/kernel/irq.c +++ b/arch/sparc/kernel/irq.c @@ -12,6 +12,7 @@ */ #include +#include #include #include #include @@ -203,6 +204,8 @@ void free_irq(unsigned int irq, void *dev_id) restore_flags(flags); } +EXPORT_SYMBOL(free_irq); + #ifdef CONFIG_SMP /* Who has the global irq brlock */ @@ -621,6 +624,8 @@ int request_irq(unsigned int irq, return 0; } +EXPORT_SYMBOL(request_irq); + /* We really don't need these at all on the Sparc. We only have * stubs here because they are exported to modules. */ @@ -629,11 +634,15 @@ unsigned long probe_irq_on(void) return 0; } +EXPORT_SYMBOL(probe_irq_on); + int probe_irq_off(unsigned long mask) { return 0; } +EXPORT_SYMBOL(probe_irq_off); + /* djhr * This could probably be made indirect too and assigned in the CPU * bits of the code. That would be much nicer I think and would also diff --git a/arch/sparc/kernel/process.c b/arch/sparc/kernel/process.c index e6decaa9daf91..ad2ebf4fda5a1 100644 --- a/arch/sparc/kernel/process.c +++ b/arch/sparc/kernel/process.c @@ -13,6 +13,7 @@ #include #include +#include #include #include #include @@ -157,6 +158,8 @@ void machine_halt(void) panic("Halt failed!"); } +EXPORT_SYMBOL(machine_halt); + void machine_restart(char * cmd) { char *p; @@ -177,6 +180,8 @@ void machine_restart(char * cmd) panic("Reboot failed!"); } +EXPORT_SYMBOL(machine_restart); + void machine_power_off(void) { #ifdef CONFIG_SUN_AUXIO @@ -186,6 +191,8 @@ void machine_power_off(void) machine_halt(); } +EXPORT_SYMBOL(machine_power_off); + static spinlock_t sparc_backtrace_lock = SPIN_LOCK_UNLOCKED; void __show_backtrace(unsigned long fp) diff --git a/arch/sparc/kernel/sparc_ksyms.c b/arch/sparc/kernel/sparc_ksyms.c index 58a369d725296..72c5443bb2cac 100644 --- a/arch/sparc/kernel/sparc_ksyms.c +++ b/arch/sparc/kernel/sparc_ksyms.c @@ -224,7 +224,6 @@ EXPORT_SYMBOL(svr4_setcontext); EXPORT_SYMBOL(svr4_getcontext); EXPORT_SYMBOL(_sigpause_common); -/* Should really be in linux/kernel/ksyms.c */ EXPORT_SYMBOL(dump_thread); /* prom symbols */ diff --git a/arch/sparc/kernel/time.c b/arch/sparc/kernel/time.c index dc252b470328a..5549a6fd172bf 100644 --- a/arch/sparc/kernel/time.c +++ b/arch/sparc/kernel/time.c @@ -17,6 +17,7 @@ */ #include #include +#include #include #include #include @@ -47,6 +48,8 @@ extern unsigned long wall_jiffies; u64 jiffies_64 = INITIAL_JIFFIES; +EXPORT_SYMBOL(jiffies_64); + spinlock_t rtc_lock = SPIN_LOCK_UNLOCKED; enum sparc_clock_type sp_clock_typ; spinlock_t mostek_lock = SPIN_LOCK_UNLOCKED; @@ -500,6 +503,8 @@ void do_gettimeofday(struct timeval *tv) tv->tv_usec = usec; } +EXPORT_SYMBOL(do_gettimeofday); + int do_settimeofday(struct timespec *tv) { int ret; @@ -510,6 +515,8 @@ int do_settimeofday(struct timespec *tv) return ret; } +EXPORT_SYMBOL(do_settimeofday); + static int sbus_do_settimeofday(struct timespec *tv) { time_t wtm_sec, sec = tv->tv_sec; diff --git a/arch/sparc/mm/init.c b/arch/sparc/mm/init.c index 191d05fc979c0..320882925ca86 100644 --- a/arch/sparc/mm/init.c +++ b/arch/sparc/mm/init.c @@ -8,6 +8,7 @@ */ #include +#include #include #include #include @@ -57,6 +58,9 @@ unsigned long highstart_pfn, highend_pfn; pte_t *kmap_pte; pgprot_t kmap_prot; +EXPORT_SYMBOL(kmap_prot); +EXPORT_SYMBOL(kmap_pte); + /* These are set in {srmmu,sun4c}_paging_init() */ unsigned long fix_kmap_begin; unsigned long fix_kmap_end; diff --git a/arch/sparc64/kernel/init_task.c b/arch/sparc64/kernel/init_task.c index e0712ddcdcb6a..41fa4bd408ffd 100644 --- a/arch/sparc64/kernel/init_task.c +++ b/arch/sparc64/kernel/init_task.c @@ -1,4 +1,5 @@ #include +#include #include #include @@ -12,6 +13,8 @@ static struct signal_struct init_signals = INIT_SIGNALS(init_signals); static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); struct mm_struct init_mm = INIT_MM(init_mm); +EXPORT_SYMBOL(init_mm); + /* .text section in head.S is aligned at 2 page boundary and this gets linked * right after that so that the init_thread_union is aligned properly as well. * We really don't need this special alignment like the Intel does, but @@ -33,5 +36,7 @@ char init_task_stack[THREAD_SIZE - INIT_THREAD_SIZE] = { 0 }; * * All other task structs will be allocated on slabs in fork.c */ +EXPORT_SYMBOL(init_task); + __asm__(".data"); struct task_struct init_task = INIT_TASK(init_task); diff --git a/arch/sparc64/kernel/irq.c b/arch/sparc64/kernel/irq.c index f1493471fc0bd..81bce655dd8e5 100644 --- a/arch/sparc64/kernel/irq.c +++ b/arch/sparc64/kernel/irq.c @@ -7,6 +7,7 @@ */ #include +#include #include #include #include @@ -486,6 +487,8 @@ free_and_enomem: return -ENOMEM; } +EXPORT_SYMBOL(request_irq); + void free_irq(unsigned int irq, void *dev_id) { struct irqaction *action; @@ -608,6 +611,8 @@ out: spin_unlock_irqrestore(&irq_action_lock, flags); } +EXPORT_SYMBOL(free_irq); + #ifdef CONFIG_SMP void synchronize_irq(unsigned int irq) { @@ -959,11 +964,15 @@ unsigned long probe_irq_on(void) return 0; } +EXPORT_SYMBOL(probe_irq_on); + int probe_irq_off(unsigned long mask) { return 0; } +EXPORT_SYMBOL(probe_irq_off); + #ifdef CONFIG_SMP static int retarget_one_irq(struct irqaction *p, int goal_cpu) { diff --git a/arch/sparc64/kernel/power.c b/arch/sparc64/kernel/power.c index 93132adbec082..b7e865eb71544 100644 --- a/arch/sparc64/kernel/power.c +++ b/arch/sparc64/kernel/power.c @@ -6,6 +6,7 @@ #include #include +#include #include #include #include @@ -61,6 +62,8 @@ void machine_power_off(void) machine_halt(); } +EXPORT_SYMBOL(machine_power_off); + #ifdef CONFIG_PCI static int powerd(void *__unused) { diff --git a/arch/sparc64/kernel/process.c b/arch/sparc64/kernel/process.c index 84ae8431c6532..2119eefc2d83d 100644 --- a/arch/sparc64/kernel/process.c +++ b/arch/sparc64/kernel/process.c @@ -14,6 +14,7 @@ #include #include +#include #include #include #include @@ -125,6 +126,8 @@ void machine_halt(void) panic("Halt failed!"); } +EXPORT_SYMBOL(machine_halt); + void machine_alt_power_off(void) { if (!serial_console && prom_palette) @@ -153,6 +156,8 @@ void machine_restart(char * cmd) panic("Reboot failed!"); } +EXPORT_SYMBOL(machine_restart); + static void show_regwindow32(struct pt_regs *regs) { struct reg_window32 *rw; diff --git a/arch/sparc64/kernel/sparc64_ksyms.c b/arch/sparc64/kernel/sparc64_ksyms.c index cb3ecbfdbd163..63ea286fec4eb 100644 --- a/arch/sparc64/kernel/sparc64_ksyms.c +++ b/arch/sparc64/kernel/sparc64_ksyms.c @@ -250,7 +250,6 @@ EXPORT_SYMBOL(io_remap_page_range); EXPORT_SYMBOL(_sigpause_common); EXPORT_SYMBOL(verify_compat_iovec); -/* Should really be in linux/kernel/ksyms.c */ EXPORT_SYMBOL(dump_thread); EXPORT_SYMBOL(dump_fpu); EXPORT_SYMBOL(pte_alloc_one_kernel); diff --git a/arch/sparc64/kernel/time.c b/arch/sparc64/kernel/time.c index 2039cf7157822..4871140c13ed5 100644 --- a/arch/sparc64/kernel/time.c +++ b/arch/sparc64/kernel/time.c @@ -11,6 +11,7 @@ #include #include +#include #include #include #include @@ -55,6 +56,8 @@ extern unsigned long wall_jiffies; u64 jiffies_64 = INITIAL_JIFFIES; +EXPORT_SYMBOL(jiffies_64); + static unsigned long mstk48t08_regs = 0UL; static unsigned long mstk48t59_regs = 0UL; @@ -1126,6 +1129,8 @@ int do_settimeofday(struct timespec *tv) return 0; } +EXPORT_SYMBOL(do_settimeofday); + /* Ok, my cute asm atomicity trick doesn't work anymore. * There are just too many variables that need to be protected * now (both members of xtime, wall_jiffies, et al.) @@ -1157,6 +1162,8 @@ void do_gettimeofday(struct timeval *tv) tv->tv_usec = usec; } +EXPORT_SYMBOL(do_gettimeofday); + static int set_rtc_mmss(unsigned long nowtime) { int real_seconds, real_minutes, chip_minutes; diff --git a/arch/sparc64/kernel/traps.c b/arch/sparc64/kernel/traps.c index 44057dd8ddd43..88dd0693f5e95 100644 --- a/arch/sparc64/kernel/traps.c +++ b/arch/sparc64/kernel/traps.c @@ -10,6 +10,7 @@ */ #include +#include #include /* for jiffies */ #include #include @@ -1767,6 +1768,8 @@ void dump_stack(void) show_stack(current, ksp); } +EXPORT_SYMBOL(dump_stack); + void die_if_kernel(char *str, struct pt_regs *regs) { static int die_counter; diff --git a/arch/um/kernel/checksum.c b/arch/um/kernel/checksum.c index 6e27cb0322581..fa50a9b81ca20 100644 --- a/arch/um/kernel/checksum.c +++ b/arch/um/kernel/checksum.c @@ -1,5 +1,6 @@ #include "asm/uaccess.h" #include "linux/errno.h" +#include "linux/module.h" extern unsigned int arch_csum_partial(const char *buff, int len, int sum); @@ -8,6 +9,8 @@ extern unsigned int csum_partial(char *buff, int len, int sum) return(arch_csum_partial(buff, len, sum)); } +EXPORT_SYMBOL(csum_partial); + unsigned int csum_partial_copy_to(const char *src, char *dst, int len, int sum, int *err_ptr) { diff --git a/arch/um/kernel/init_task.c b/arch/um/kernel/init_task.c index ee7aedfabe9c5..7d6bb961d89e0 100644 --- a/arch/um/kernel/init_task.c +++ b/arch/um/kernel/init_task.c @@ -5,6 +5,7 @@ #include "linux/config.h" #include "linux/mm.h" +#include "linux/module.h" #include "linux/sched.h" #include "linux/init_task.h" #include "linux/version.h" @@ -18,6 +19,8 @@ struct mm_struct init_mm = INIT_MM(init_mm); static struct files_struct init_files = INIT_FILES; static struct signal_struct init_signals = INIT_SIGNALS(init_signals); +EXPORT_SYMBOL(init_mm); + /* * Initial task structure. * @@ -26,6 +29,8 @@ static struct signal_struct init_signals = INIT_SIGNALS(init_signals); struct task_struct init_task = INIT_TASK(init_task); +EXPORT_SYMBOL(init_task); + /* * Initial thread structure. * diff --git a/arch/um/kernel/irq.c b/arch/um/kernel/irq.c index 05c8fba31ee54..f8f5dfe78db02 100644 --- a/arch/um/kernel/irq.c +++ b/arch/um/kernel/irq.c @@ -7,6 +7,7 @@ #include "linux/config.h" #include "linux/kernel.h" +#include "linux/module.h" #include "linux/smp.h" #include "linux/irq.h" #include "linux/kernel_stat.h" @@ -429,6 +430,8 @@ int request_irq(unsigned int irq, return retval; } +EXPORT_SYMBOL(request_irq); + int um_request_irq(unsigned int irq, int fd, int type, void (*handler)(int, void *, struct pt_regs *), unsigned long irqflags, const char * devname, @@ -557,6 +560,8 @@ void free_irq(unsigned int irq, void *dev_id) } } +EXPORT_SYMBOL(free_irq); + /* These are initialized by sysctl_init, which is called from init/main.c */ static struct proc_dir_entry * root_irq_dir; static struct proc_dir_entry * irq_dir [NR_IRQS]; @@ -751,11 +756,15 @@ unsigned long probe_irq_on(void) return(0); } +EXPORT_SYMBOL(probe_irq_on); + int probe_irq_off(unsigned long val) { return(0); } +EXPORT_SYMBOL(probe_irq_off); + static unsigned int startup_SIGIO_irq(unsigned int irq) { return(0); diff --git a/arch/um/kernel/mem.c b/arch/um/kernel/mem.c index 9d3ae3fffdafc..5bcef3e3e7ba1 100644 --- a/arch/um/kernel/mem.c +++ b/arch/um/kernel/mem.c @@ -4,6 +4,7 @@ */ #include "linux/config.h" +#include "linux/module.h" #include "linux/types.h" #include "linux/mm.h" #include "linux/fs.h" @@ -129,6 +130,9 @@ void set_kmem_end(unsigned long new) pte_t *kmap_pte; pgprot_t kmap_prot; +EXPORT_SYMBOL(kmap_prot); +EXPORT_SYMBOL(kmap_pte); + #define kmap_get_fixmap_pte(vaddr) \ pte_offset_kernel(pmd_offset(pgd_offset_k(vaddr), (vaddr)), (vaddr)) diff --git a/arch/um/kernel/process_kern.c b/arch/um/kernel/process_kern.c index 18c53d71658ec..e17600a9b3876 100644 --- a/arch/um/kernel/process_kern.c +++ b/arch/um/kernel/process_kern.c @@ -278,11 +278,15 @@ void enable_hlt(void) panic("enable_hlt"); } +EXPORT_SYMBOL(enable_hlt); + void disable_hlt(void) { panic("disable_hlt"); } +EXPORT_SYMBOL(disable_hlt); + extern int signal_frame_size; void *um_kmalloc(int size) diff --git a/arch/um/kernel/reboot.c b/arch/um/kernel/reboot.c index 61d7a4e6000f5..3e4ab2963be5a 100644 --- a/arch/um/kernel/reboot.c +++ b/arch/um/kernel/reboot.c @@ -3,6 +3,7 @@ * Licensed under the GPL */ +#include "linux/module.h" #include "linux/sched.h" #include "user_util.h" #include "kern_util.h" @@ -46,6 +47,8 @@ void machine_restart(char * __unused) CHOOSE_MODE(reboot_tt(), reboot_skas()); } +EXPORT_SYMBOL(machine_restart); + void machine_power_off(void) { do_uml_exitcalls(); @@ -53,11 +56,15 @@ void machine_power_off(void) CHOOSE_MODE(halt_tt(), halt_skas()); } +EXPORT_SYMBOL(machine_power_off); + void machine_halt(void) { machine_power_off(); } +EXPORT_SYMBOL(machine_halt); + /* * Overrides for Emacs so that we follow Linus's tabbing style. * Emacs will notice this stuff at the end of the file and automatically diff --git a/arch/um/kernel/smp.c b/arch/um/kernel/smp.c index f4ca0885bf7f3..34f826c086983 100644 --- a/arch/um/kernel/smp.c +++ b/arch/um/kernel/smp.c @@ -8,6 +8,7 @@ #ifdef CONFIG_SMP #include "linux/sched.h" +#include "linux/module.h" #include "linux/threads.h" #include "linux/interrupt.h" #include "linux/err.h" @@ -24,6 +25,8 @@ /* CPU online map, set by smp_boot_cpus */ unsigned long cpu_online_map = cpumask_of_cpu(0); +EXPORT_SYMBOL(cpu_online_map); + /* Per CPU bogomips and other parameters * The only piece used here is the ipi pipe, which is set before SMP is * started and never changed. diff --git a/arch/um/kernel/sysrq.c b/arch/um/kernel/sysrq.c index 4936445793b7a..078dc11132d3d 100644 --- a/arch/um/kernel/sysrq.c +++ b/arch/um/kernel/sysrq.c @@ -43,6 +43,8 @@ void dump_stack(void) show_trace(&stack); } +EXPORT_SYMBOL(dump_stack); + void show_trace_task(struct task_struct *tsk) { unsigned long esp = PT_REGS_SP(&tsk->thread.regs); diff --git a/arch/um/kernel/time.c b/arch/um/kernel/time.c index 69c7b39082c41..737bd2e6ecf6a 100644 --- a/arch/um/kernel/time.c +++ b/arch/um/kernel/time.c @@ -9,6 +9,7 @@ #include #include #include +#include "linux/module.h" #include "user_util.h" #include "kern_util.h" #include "user.h" @@ -94,6 +95,8 @@ void do_gettimeofday(struct timeval *tv) time_unlock(flags); } +EXPORT_SYMBOL(do_gettimeofday); + int do_settimeofday(struct timespec *tv) { struct timeval now; @@ -112,6 +115,8 @@ int do_settimeofday(struct timespec *tv) time_unlock(flags); } +EXPORT_SYMBOL(do_settimeofday); + void idle_sleep(int secs) { struct timespec ts; diff --git a/arch/um/kernel/time_kern.c b/arch/um/kernel/time_kern.c index 8ae06b0d7cce3..752fd03f2bcd6 100644 --- a/arch/um/kernel/time_kern.c +++ b/arch/um/kernel/time_kern.c @@ -4,6 +4,7 @@ */ #include "linux/kernel.h" +#include "linux/module.h" #include "linux/unistd.h" #include "linux/stddef.h" #include "linux/spinlock.h" @@ -22,6 +23,8 @@ u64 jiffies_64; +EXPORT_SYMBOL(jiffies_64); + int hz(void) { return(HZ); diff --git a/arch/v850/kernel/anna.c b/arch/v850/kernel/anna.c index 6c542d0a0f9a7..6aaeab5e8a404 100644 --- a/arch/v850/kernel/anna.c +++ b/arch/v850/kernel/anna.c @@ -13,6 +13,7 @@ #include #include +#include #include #include #include @@ -131,6 +132,8 @@ void machine_restart (char *__unused) asm ("jmp r0"); /* Jump to the reset vector. */ } +EXPORT_SYMBOL(machine_restart); + void machine_halt (void) { #ifdef CONFIG_RESET_GUARD @@ -142,11 +145,15 @@ void machine_halt (void) asm ("halt; nop; nop; nop; nop; nop"); } +EXPORT_SYMBOL(machine_halt); + void machine_power_off (void) { machine_halt (); } +EXPORT_SYMBOL(machine_power_off); + /* Called before configuring an on-chip UART. */ void anna_uart_pre_configure (unsigned chan, unsigned cflags, unsigned baud) { diff --git a/arch/v850/kernel/as85ep1.c b/arch/v850/kernel/as85ep1.c index 6529be52037a6..71b895f6aab7c 100644 --- a/arch/v850/kernel/as85ep1.c +++ b/arch/v850/kernel/as85ep1.c @@ -13,6 +13,7 @@ #include #include +#include #include #include #include @@ -171,6 +172,8 @@ void machine_restart (char *__unused) asm ("jmp r0"); /* Jump to the reset vector. */ } +EXPORT_SYMBOL(machine_restart); + void machine_halt (void) { #ifdef CONFIG_RESET_GUARD @@ -182,11 +185,15 @@ void machine_halt (void) asm ("halt; nop; nop; nop; nop; nop"); } +EXPORT_SYMBOL(machine_halt); + void machine_power_off (void) { machine_halt (); } +EXPORT_SYMBOL(machine_power_off); + /* Called before configuring an on-chip UART. */ void as85ep1_uart_pre_configure (unsigned chan, unsigned cflags, unsigned baud) { diff --git a/arch/v850/kernel/bug.c b/arch/v850/kernel/bug.c index 5cdf174e5dc36..5430c7101eafb 100644 --- a/arch/v850/kernel/bug.c +++ b/arch/v850/kernel/bug.c @@ -137,3 +137,5 @@ void dump_stack () { show_stack (0, 0); } + +EXPORT_SYMBOL(dump_stack); diff --git a/arch/v850/kernel/fpga85e2c.c b/arch/v850/kernel/fpga85e2c.c index 290d564855ca6..72dda796fac62 100644 --- a/arch/v850/kernel/fpga85e2c.c +++ b/arch/v850/kernel/fpga85e2c.c @@ -14,6 +14,7 @@ #include #include +#include #include #include #include @@ -121,16 +122,22 @@ void machine_halt (void) } } +EXPORT_SYMBOL(machine_halt); + void machine_restart (char *__unused) { machine_halt (); } +EXPORT_SYMBOL(machine_restart); + void machine_power_off (void) { machine_halt (); } +EXPORT_SYMBOL(machine_power_off); + /* Interrupts */ diff --git a/arch/v850/kernel/init_task.c b/arch/v850/kernel/init_task.c index d8ea8d8c4e20a..a5dac3a83dc64 100644 --- a/arch/v850/kernel/init_task.c +++ b/arch/v850/kernel/init_task.c @@ -10,6 +10,7 @@ */ #include +#include #include #include #include @@ -24,6 +25,8 @@ static struct signal_struct init_signals = INIT_SIGNALS (init_signals); static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); struct mm_struct init_mm = INIT_MM (init_mm); +EXPORT_SYMBOL(init_mm); + /* * Initial task structure. * @@ -31,6 +34,8 @@ struct mm_struct init_mm = INIT_MM (init_mm); */ struct task_struct init_task = INIT_TASK (init_task); +EXPORT_SYMBOL(init_task); + /* * Initial thread structure. * diff --git a/arch/v850/kernel/irq.c b/arch/v850/kernel/irq.c index 19038024352fe..ffa66b3f9db5d 100644 --- a/arch/v850/kernel/irq.c +++ b/arch/v850/kernel/irq.c @@ -14,6 +14,7 @@ */ #include +#include #include #include #include @@ -400,6 +401,8 @@ int request_irq(unsigned int irq, return retval; } +EXPORT_SYMBOL(request_irq); + /** * free_irq - free an interrupt * @irq: Interrupt line to free @@ -456,6 +459,8 @@ void free_irq(unsigned int irq, void *dev_id) } } +EXPORT_SYMBOL(free_irq); + /* * IRQ autodetection code.. * @@ -549,6 +554,8 @@ unsigned long probe_irq_on(void) return val; } +EXPORT_SYMBOL(probe_irq_on); + /* * Return a mask of triggered interrupts (this * can handle only legacy ISA interrupts). @@ -647,6 +654,8 @@ int probe_irq_off(unsigned long val) return irq_found; } +EXPORT_SYMBOL(probe_irq_off); + /* this was setup_x86_irq but it seems pretty generic */ int setup_irq(unsigned int irq, struct irqaction * new) { diff --git a/arch/v850/kernel/rte_cb.c b/arch/v850/kernel/rte_cb.c index 45c1b1197c1bf..7ba397f77aca1 100644 --- a/arch/v850/kernel/rte_cb.c +++ b/arch/v850/kernel/rte_cb.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include @@ -66,6 +67,8 @@ void machine_restart (char *__unused) asm ("jmp r0"); /* Jump to the reset vector. */ } +EXPORT_SYMBOL(machine_restart); + /* This says `HALt.' in LEDese. */ static unsigned char halt_leds_msg[] = { 0x76, 0x77, 0x38, 0xF8 }; @@ -86,11 +89,15 @@ void machine_halt (void) asm ("halt; nop; nop; nop; nop; nop"); } +EXPORT_SYMBOL(machine_halt); + void machine_power_off (void) { machine_halt (); } +EXPORT_SYMBOL(machine_power_off); + /* Animated LED display for timer tick. */ diff --git a/arch/v850/kernel/sim.c b/arch/v850/kernel/sim.c index 0367d13534403..4f31da9626327 100644 --- a/arch/v850/kernel/sim.c +++ b/arch/v850/kernel/sim.c @@ -13,6 +13,7 @@ #include #include +#include #include #include #include @@ -103,18 +104,24 @@ void machine_restart (char *__unused) V850_SIM_SYSCALL (exit, 0); } +EXPORT_SYMBOL(machine_restart); + void machine_halt (void) { V850_SIM_SYSCALL (write, 1, "HALT\n", 5); V850_SIM_SYSCALL (exit, 0); } +EXPORT_SYMBOL(machine_halt); + void machine_power_off (void) { V850_SIM_SYSCALL (write, 1, "POWER OFF\n", 10); V850_SIM_SYSCALL (exit, 0); } +EXPORT_SYMBOL(machine_power_off); + /* Load data from a file called NAME into ram. The address and length of the data image are returned in ADDR and LEN. */ diff --git a/arch/v850/kernel/sim85e2.c b/arch/v850/kernel/sim85e2.c index 9dbb35482ba57..d35be73b84450 100644 --- a/arch/v850/kernel/sim85e2.c +++ b/arch/v850/kernel/sim85e2.c @@ -14,6 +14,7 @@ #include #include +#include #include #include #include @@ -200,12 +201,18 @@ void machine_halt (void) for (;;) {} } +EXPORT_SYMBOL(machine_halt); + void machine_restart (char *__unused) { machine_halt (); } +EXPORT_SYMBOL(machine_restart); + void machine_power_off (void) { machine_halt (); } + +EXPORT_SYMBOL(machine_power_off); diff --git a/arch/v850/kernel/time.c b/arch/v850/kernel/time.c index 5151f001a1e65..4f965560036e9 100644 --- a/arch/v850/kernel/time.c +++ b/arch/v850/kernel/time.c @@ -13,6 +13,7 @@ #include /* CONFIG_HEARTBEAT */ #include #include +#include #include #include #include @@ -27,6 +28,8 @@ u64 jiffies_64 = INITIAL_JIFFIES; +EXPORT_SYMBOL(jiffies_64); + #define TICK_SIZE (tick_nsec / 1000) static inline void do_profile (unsigned long pc) @@ -149,6 +152,8 @@ void do_gettimeofday (struct timeval *tv) tv->tv_usec = usec; } +EXPORT_SYMBOL(do_gettimeofday); + int do_settimeofday(struct timespec *tv) { if ((unsigned long)tv->tv_nsec >= NSEC_PER_SEC) @@ -183,6 +188,8 @@ int do_settimeofday(struct timespec *tv) return 0; } +EXPORT_SYMBOL(do_settimeofday); + static int timer_dev_id; static struct irqaction timer_irqaction = { timer_interrupt, diff --git a/arch/v850/lib/checksum.c b/arch/v850/lib/checksum.c index ff944fddc8929..17eb3851e8a9c 100644 --- a/arch/v850/lib/checksum.c +++ b/arch/v850/lib/checksum.c @@ -17,6 +17,7 @@ * $Id: checksum.c,v 1.1 2002/09/28 14:58:40 gerg Exp $ */ #include +#include #include #include #include @@ -115,6 +116,8 @@ unsigned int csum_partial(const unsigned char *buff, int len, unsigned int sum) return result; } +EXPORT_SYMBOL(csum_partial); + /* * copy while checksumming, otherwise like csum_partial */ diff --git a/arch/x86_64/kernel/init_task.c b/arch/x86_64/kernel/init_task.c index a2ee7e8612814..57ec2f0ee36ac 100644 --- a/arch/x86_64/kernel/init_task.c +++ b/arch/x86_64/kernel/init_task.c @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -14,6 +15,8 @@ static struct signal_struct init_signals = INIT_SIGNALS(init_signals); static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); struct mm_struct init_mm = INIT_MM(init_mm); +EXPORT_SYMBOL(init_mm); + /* * Initial task structure. * @@ -32,6 +35,7 @@ union thread_union init_thread_union */ struct task_struct init_task = INIT_TASK(init_task); +EXPORT_SYMBOL(init_task); /* * per-CPU TSS segments. Threads are completely 'soft' on Linux, * no more per-task TSS's. The TSS size is kept cacheline-aligned diff --git a/arch/x86_64/kernel/irq.c b/arch/x86_64/kernel/irq.c index 89c56fcf99c7b..3946c6d2ad05d 100644 --- a/arch/x86_64/kernel/irq.c +++ b/arch/x86_64/kernel/irq.c @@ -19,6 +19,7 @@ #include #include +#include #include #include #include @@ -481,6 +482,8 @@ int request_irq(unsigned int irq, return retval; } +EXPORT_SYMBOL(request_irq); + /** * free_irq - free an interrupt * @irq: Interrupt line to free @@ -537,6 +540,8 @@ void free_irq(unsigned int irq, void *dev_id) } } +EXPORT_SYMBOL(free_irq); + /* * IRQ autodetection code.. * @@ -630,6 +635,8 @@ unsigned long probe_irq_on(void) return val; } +EXPORT_SYMBOL(probe_irq_on); + /* * Return a mask of triggered interrupts (this * can handle only legacy ISA interrupts). @@ -728,6 +735,8 @@ int probe_irq_off(unsigned long val) return irq_found; } +EXPORT_SYMBOL(probe_irq_off); + /* this was setup_x86_irq but it seems pretty generic */ int setup_irq(unsigned int irq, struct irqaction * new) { diff --git a/arch/x86_64/kernel/process.c b/arch/x86_64/kernel/process.c index 0203b0c4bf2a5..bf63c6e9d0b89 100644 --- a/arch/x86_64/kernel/process.c +++ b/arch/x86_64/kernel/process.c @@ -65,11 +65,15 @@ void disable_hlt(void) hlt_counter++; } +EXPORT_SYMBOL(disable_hlt); + void enable_hlt(void) { hlt_counter--; } +EXPORT_SYMBOL(enable_hlt); + /* * We use this if we don't have any better * idle routine.. diff --git a/arch/x86_64/kernel/reboot.c b/arch/x86_64/kernel/reboot.c index 2a972e33e1f00..c7afa6c7abd41 100644 --- a/arch/x86_64/kernel/reboot.c +++ b/arch/x86_64/kernel/reboot.c @@ -1,4 +1,5 @@ /* Various gunk just to reboot the machine. */ +#include #include #include #include @@ -169,12 +170,18 @@ void machine_restart(char * __unused) } } +EXPORT_SYMBOL(machine_restart); + void machine_halt(void) { } +EXPORT_SYMBOL(machine_halt); + void machine_power_off(void) { if (pm_power_off) pm_power_off(); } + +EXPORT_SYMBOL(machine_power_off); diff --git a/arch/x86_64/kernel/time.c b/arch/x86_64/kernel/time.c index 0e3d6eb77664c..a57945080f416 100644 --- a/arch/x86_64/kernel/time.c +++ b/arch/x86_64/kernel/time.c @@ -35,6 +35,8 @@ u64 jiffies_64 = INITIAL_JIFFIES; +EXPORT_SYMBOL(jiffies_64); + extern int using_apic_timer; spinlock_t rtc_lock = SPIN_LOCK_UNLOCKED; @@ -119,6 +121,8 @@ void do_gettimeofday(struct timeval *tv) tv->tv_usec = usec % 1000000; } +EXPORT_SYMBOL(do_gettimeofday); + /* * settimeofday() first undoes the correction that gettimeofday would do * on the time, and then saves it. This is ugly, but has been like this for @@ -154,6 +158,8 @@ int do_settimeofday(struct timespec *tv) return 0; } +EXPORT_SYMBOL(do_settimeofday); + /* * In order to set the CMOS clock precisely, set_rtc_mmss has to be called 500 * ms after the second nowtime has started, because when nowtime is written diff --git a/arch/x86_64/kernel/traps.c b/arch/x86_64/kernel/traps.c index 34b55ae542a47..4a79b137c1829 100644 --- a/arch/x86_64/kernel/traps.c +++ b/arch/x86_64/kernel/traps.c @@ -248,6 +248,8 @@ void dump_stack(void) show_trace(&dummy); } +EXPORT_SYMBOL(dump_stack); + void show_registers(struct pt_regs *regs) { int i; diff --git a/arch/x86_64/lib/csum-partial.c b/arch/x86_64/lib/csum-partial.c index 2eb49de9b0276..5a5f6e7702918 100644 --- a/arch/x86_64/lib/csum-partial.c +++ b/arch/x86_64/lib/csum-partial.c @@ -135,6 +135,8 @@ unsigned csum_partial(const unsigned char *buff, unsigned len, unsigned sum) return add32_with_carry(do_csum(buff, len), sum); } +EXPORT_SYMBOL(csum_partial); + /* * this routine is used for miscellaneous IP-like checksums, mainly * in icmp.c diff --git a/drivers/block/genhd.c b/drivers/block/genhd.c index 290622c35b939..d50419e1e7d1b 100644 --- a/drivers/block/genhd.c +++ b/drivers/block/genhd.c @@ -114,6 +114,8 @@ out: return ret; } +EXPORT_SYMBOL(register_blkdev); + /* todo: make void - error printk here */ int unregister_blkdev(unsigned int major, const char *name) { @@ -141,6 +143,8 @@ int unregister_blkdev(unsigned int major, const char *name) return ret; } +EXPORT_SYMBOL(unregister_blkdev); + static struct kobj_map *bdev_map; /* @@ -155,12 +159,13 @@ void blk_register_region(dev_t dev, unsigned long range, struct module *module, kobj_map(bdev_map, dev, range, module, probe, lock, data); } +EXPORT_SYMBOL(blk_register_region); + void blk_unregister_region(dev_t dev, unsigned long range) { kobj_unmap(bdev_map, dev, range); } -EXPORT_SYMBOL(blk_register_region); EXPORT_SYMBOL(blk_unregister_region); static struct kobject *exact_match(dev_t dev, int *part, void *data) @@ -545,6 +550,8 @@ struct gendisk *alloc_disk(int minors) return disk; } +EXPORT_SYMBOL(alloc_disk); + struct kobject *get_disk(struct gendisk *disk) { struct module *owner; @@ -564,14 +571,14 @@ struct kobject *get_disk(struct gendisk *disk) } +EXPORT_SYMBOL(get_disk); + void put_disk(struct gendisk *disk) { if (disk) kobject_put(&disk->kobj); } -EXPORT_SYMBOL(alloc_disk); -EXPORT_SYMBOL(get_disk); EXPORT_SYMBOL(put_disk); void set_device_ro(struct block_device *bdev, int flag) @@ -582,6 +589,8 @@ void set_device_ro(struct block_device *bdev, int flag) bdev->bd_disk->policy = flag; } +EXPORT_SYMBOL(set_device_ro); + void set_disk_ro(struct gendisk *disk, int flag) { int i; @@ -590,6 +599,8 @@ void set_disk_ro(struct gendisk *disk, int flag) if (disk->part[i]) disk->part[i]->policy = flag; } +EXPORT_SYMBOL(set_disk_ro); + int bdev_read_only(struct block_device *bdev) { if (!bdev) @@ -600,6 +611,8 @@ int bdev_read_only(struct block_device *bdev) return bdev->bd_disk->policy; } +EXPORT_SYMBOL(bdev_read_only); + int invalidate_partition(struct gendisk *disk, int index) { int res = 0; @@ -610,7 +623,4 @@ int invalidate_partition(struct gendisk *disk, int index) return res; } -EXPORT_SYMBOL(bdev_read_only); -EXPORT_SYMBOL(set_device_ro); -EXPORT_SYMBOL(set_disk_ro); EXPORT_SYMBOL(invalidate_partition); diff --git a/drivers/block/ll_rw_blk.c b/drivers/block/ll_rw_blk.c index 473121c6b686e..12bac1a8821a3 100644 --- a/drivers/block/ll_rw_blk.c +++ b/drivers/block/ll_rw_blk.c @@ -51,6 +51,9 @@ static struct workqueue_struct *kblockd_workqueue; unsigned long blk_max_low_pfn, blk_max_pfn; +EXPORT_SYMBOL(blk_max_low_pfn); +EXPORT_SYMBOL(blk_max_pfn); + /* Amount of time in which a process may batch requests */ #define BLK_BATCH_TIME (HZ/50UL) @@ -158,6 +161,8 @@ void blk_queue_prep_rq(request_queue_t *q, prep_rq_fn *pfn) q->prep_rq_fn = pfn; } +EXPORT_SYMBOL(blk_queue_prep_rq); + /** * blk_queue_merge_bvec - set a merge_bvec function for queue * @q: queue @@ -177,6 +182,8 @@ void blk_queue_merge_bvec(request_queue_t *q, merge_bvec_fn *mbfn) q->merge_bvec_fn = mbfn; } +EXPORT_SYMBOL(blk_queue_merge_bvec); + /** * blk_queue_make_request - define an alternate make_request function for a device * @q: the request queue for the device to be affected @@ -235,6 +242,8 @@ void blk_queue_make_request(request_queue_t * q, make_request_fn * mfn) blk_queue_activity_fn(q, NULL, NULL); } +EXPORT_SYMBOL(blk_queue_make_request); + /** * blk_queue_bounce_limit - set bounce buffer limit for queue * @q: the request queue for the device @@ -280,6 +289,7 @@ void blk_queue_bounce_limit(request_queue_t *q, u64 dma_addr) last_q = q; } +EXPORT_SYMBOL(blk_queue_bounce_limit); /** * blk_queue_max_sectors - set max sectors for a request for this queue @@ -300,6 +310,8 @@ void blk_queue_max_sectors(request_queue_t *q, unsigned short max_sectors) q->max_sectors = max_sectors; } +EXPORT_SYMBOL(blk_queue_max_sectors); + /** * blk_queue_max_phys_segments - set max phys segments for a request for this queue * @q: the request queue for the device @@ -320,6 +332,8 @@ void blk_queue_max_phys_segments(request_queue_t *q, unsigned short max_segments q->max_phys_segments = max_segments; } +EXPORT_SYMBOL(blk_queue_max_phys_segments); + /** * blk_queue_max_hw_segments - set max hw segments for a request for this queue * @q: the request queue for the device @@ -341,6 +355,8 @@ void blk_queue_max_hw_segments(request_queue_t *q, unsigned short max_segments) q->max_hw_segments = max_segments; } +EXPORT_SYMBOL(blk_queue_max_hw_segments); + /** * blk_queue_max_segment_size - set max segment size for blk_rq_map_sg * @q: the request queue for the device @@ -360,6 +376,8 @@ void blk_queue_max_segment_size(request_queue_t *q, unsigned int max_size) q->max_segment_size = max_size; } +EXPORT_SYMBOL(blk_queue_max_segment_size); + /** * blk_queue_hardsect_size - set hardware sector size for the queue * @q: the request queue for the device @@ -376,6 +394,8 @@ void blk_queue_hardsect_size(request_queue_t *q, unsigned short size) q->hardsect_size = size; } +EXPORT_SYMBOL(blk_queue_hardsect_size); + /* * Returns the minimum that is _not_ zero, unless both are zero. */ @@ -397,6 +417,8 @@ void blk_queue_stack_limits(request_queue_t *t, request_queue_t *b) t->hardsect_size = max(t->hardsect_size,b->hardsect_size); } +EXPORT_SYMBOL(blk_queue_stack_limits); + /** * blk_queue_segment_boundary - set boundary rules for segment merging * @q: the request queue for the device @@ -412,6 +434,8 @@ void blk_queue_segment_boundary(request_queue_t *q, unsigned long mask) q->seg_boundary_mask = mask; } +EXPORT_SYMBOL(blk_queue_segment_boundary); + /** * blk_queue_dma_alignment - set dma length and memory alignment * @q: the request queue for the device @@ -427,6 +451,8 @@ void blk_queue_dma_alignment(request_queue_t *q, int mask) q->dma_alignment = mask; } +EXPORT_SYMBOL(blk_queue_dma_alignment); + /** * blk_queue_find_tag - find a request by its tag and queue * @@ -449,6 +475,8 @@ struct request *blk_queue_find_tag(request_queue_t *q, int tag) return bqt->tag_index[tag]; } +EXPORT_SYMBOL(blk_queue_find_tag); + /** * blk_queue_free_tags - release tag maintenance info * @q: the request queue for the device @@ -482,6 +510,8 @@ void blk_queue_free_tags(request_queue_t *q) q->queue_flags &= ~(1 << QUEUE_FLAG_QUEUED); } +EXPORT_SYMBOL(blk_queue_free_tags); + static int init_tag_map(request_queue_t *q, struct blk_queue_tag *tags, int depth) { @@ -551,6 +581,8 @@ fail: return -ENOMEM; } +EXPORT_SYMBOL(blk_queue_init_tags); + /** * blk_queue_resize_tags - change the queueing depth * @q: the request queue for the device @@ -636,6 +668,8 @@ void blk_queue_end_tag(request_queue_t *q, struct request *rq) bqt->busy--; } +EXPORT_SYMBOL(blk_queue_end_tag); + /** * blk_queue_start_tag - find a free tag and assign it * @q: the request queue for the device @@ -686,6 +720,8 @@ int blk_queue_start_tag(request_queue_t *q, struct request *rq) return 0; } +EXPORT_SYMBOL(blk_queue_start_tag); + /** * blk_queue_invalidate_tags - invalidate all pending tags * @q: the request queue for the device @@ -719,6 +755,8 @@ void blk_queue_invalidate_tags(request_queue_t *q) } } +EXPORT_SYMBOL(blk_queue_invalidate_tags); + static char *rq_flags[] = { "REQ_RW", "REQ_FAILFAST", @@ -770,6 +808,8 @@ void blk_dump_rq_flags(struct request *rq, char *msg) } } +EXPORT_SYMBOL(blk_dump_rq_flags); + void blk_recount_segments(request_queue_t *q, struct bio *bio) { struct bio_vec *bv, *bvprv = NULL; @@ -829,6 +869,8 @@ int blk_phys_contig_segment(request_queue_t *q, struct bio *bio, return 0; } +EXPORT_SYMBOL(blk_phys_contig_segment); + int blk_hw_contig_segment(request_queue_t *q, struct bio *bio, struct bio *nxt) { @@ -850,6 +892,8 @@ int blk_hw_contig_segment(request_queue_t *q, struct bio *bio, return 0; } +EXPORT_SYMBOL(blk_hw_contig_segment); + /* * map a request to scatterlist, return number of sg entries setup. Caller * must make sure sg can hold rq->nr_phys_segments entries @@ -900,6 +944,8 @@ new_segment: return nsegs; } +EXPORT_SYMBOL(blk_rq_map_sg); + /* * the standard queue merge functions, can be overridden with device * specific ones if so desired @@ -1042,6 +1088,8 @@ void blk_plug_device(request_queue_t *q) } } +EXPORT_SYMBOL(blk_plug_device); + /* * remove the queue from the plugged list, if present. called with * queue lock held and interrupts disabled. @@ -1060,6 +1108,8 @@ int blk_remove_plug(request_queue_t *q) return 0; } +EXPORT_SYMBOL(blk_remove_plug); + /* * remove the plug and let it rip.. */ @@ -1101,6 +1151,8 @@ void generic_unplug_device(void *data) spin_unlock_irq(q->queue_lock); } +EXPORT_SYMBOL(generic_unplug_device); + static void blk_unplug_work(void *data) { request_queue_t *q = data; @@ -1130,6 +1182,8 @@ void blk_start_queue(request_queue_t *q) schedule_work(&q->unplug_work); } +EXPORT_SYMBOL(blk_start_queue); + /** * blk_stop_queue - stop a queue * @q: The &request_queue_t in question @@ -1150,6 +1204,8 @@ void blk_stop_queue(request_queue_t *q) set_bit(QUEUE_FLAG_STOPPED, &q->queue_flags); } +EXPORT_SYMBOL(blk_stop_queue); + /** * blk_run_queue - run a single device queue * @q: The queue to run @@ -1164,6 +1220,8 @@ void blk_run_queue(struct request_queue *q) spin_unlock_irqrestore(q->queue_lock, flags); } +EXPORT_SYMBOL(blk_run_queue); + /** * blk_run_queues - fire all plugged queues * @@ -1198,6 +1256,8 @@ out: spin_unlock_irq(&blk_plug_lock); } +EXPORT_SYMBOL(blk_run_queues); + /** * blk_cleanup_queue: - release a &request_queue_t when it is no longer needed * @q: the request queue to be released @@ -1234,6 +1294,8 @@ void blk_cleanup_queue(request_queue_t * q) kfree(q); } +EXPORT_SYMBOL(blk_cleanup_queue); + static int blk_init_free_list(request_queue_t *q) { struct request_list *rl = &q->rq; @@ -1298,6 +1360,8 @@ request_queue_t *blk_alloc_queue(int gfp_mask) return q; } +EXPORT_SYMBOL(blk_alloc_queue); + /** * blk_init_queue - prepare a request queue for use with a block device * @rfn: The function to be called to process requests that have been @@ -1372,9 +1436,10 @@ out_elv: out_init: kfree(q); return NULL; - } +EXPORT_SYMBOL(blk_init_queue); + int blk_get_queue(request_queue_t *q) { if (!test_bit(QUEUE_FLAG_DEAD, &q->queue_flags)) { @@ -1385,6 +1450,8 @@ int blk_get_queue(request_queue_t *q) return 1; } +EXPORT_SYMBOL(blk_get_queue); + static inline void blk_free_request(request_queue_t *q, struct request *rq) { elv_put_request(q, rq); @@ -1593,6 +1660,9 @@ struct request *blk_get_request(request_queue_t *q, int rw, int gfp_mask) return rq; } + +EXPORT_SYMBOL(blk_get_request); + /** * blk_requeue_request - put a request back on queue * @q: request queue where request should be inserted @@ -1611,6 +1681,8 @@ void blk_requeue_request(request_queue_t *q, struct request *rq) elv_requeue_request(q, rq); } +EXPORT_SYMBOL(blk_requeue_request); + /** * blk_insert_request - insert a special request in to a request queue * @q: request queue where request should be inserted @@ -1668,6 +1740,8 @@ void blk_insert_request(request_queue_t *q, struct request *rq, spin_unlock_irqrestore(q->queue_lock, flags); } +EXPORT_SYMBOL(blk_insert_request); + void drive_stat_acct(struct request *rq, int nr_sectors, int new_io) { int rw = rq_data_dir(rq); @@ -1786,6 +1860,8 @@ void blk_put_request(struct request *req) } } +EXPORT_SYMBOL(blk_put_request); + /** * blk_congestion_wait - wait for a queue to become uncongested * @rw: READ or WRITE @@ -1806,6 +1882,8 @@ void blk_congestion_wait(int rw, long timeout) finish_wait(wqh, &wait); } +EXPORT_SYMBOL(blk_congestion_wait); + /* * Has to be called with the request spinlock acquired */ @@ -1893,6 +1971,8 @@ void blk_attempt_remerge(request_queue_t *q, struct request *rq) spin_unlock_irqrestore(q->queue_lock, flags); } +EXPORT_SYMBOL(blk_attempt_remerge); + /* * Non-locking blk_attempt_remerge variant. */ @@ -1901,6 +1981,8 @@ void __blk_attempt_remerge(request_queue_t *q, struct request *rq) attempt_back_merge(q, rq); } +EXPORT_SYMBOL(__blk_attempt_remerge); + static int __make_request(request_queue_t *q, struct bio *bio) { struct request *req, *freereq = NULL; @@ -2186,6 +2268,8 @@ end_io: } while (ret); } +EXPORT_SYMBOL(generic_make_request); + /** * submit_bio: submit a bio to the block device layer for I/O * @rw: whether to %READ or %WRITE, or maybe to %READA (read ahead) @@ -2211,6 +2295,8 @@ int submit_bio(int rw, struct bio *bio) return 1; } +EXPORT_SYMBOL(submit_bio); + /** * blk_rq_next_segment * @rq: the request being processed @@ -2286,6 +2372,8 @@ int process_that_request_first(struct request *req, unsigned int nr_sectors) return 1; } +EXPORT_SYMBOL(process_that_request_first); + void blk_recalc_rq_segments(struct request *rq) { struct bio *bio; @@ -2454,6 +2542,8 @@ int end_that_request_first(struct request *req, int uptodate, int nr_sectors) return __end_that_request_first(req, uptodate, nr_sectors << 9); } +EXPORT_SYMBOL(end_that_request_first); + /** * end_that_request_chunk - end I/O on a request * @req: the request being processed @@ -2474,6 +2564,8 @@ int end_that_request_chunk(struct request *req, int uptodate, int nr_bytes) return __end_that_request_first(req, uptodate, nr_bytes); } +EXPORT_SYMBOL(end_that_request_chunk); + /* * queue lock must be held */ @@ -2503,6 +2595,8 @@ void end_that_request_last(struct request *req) complete(waiting); } +EXPORT_SYMBOL(end_that_request_last); + void end_request(struct request *req, int uptodate) { if (!end_that_request_first(req, uptodate, req->hard_cur_sectors)) { @@ -2512,6 +2606,8 @@ void end_request(struct request *req, int uptodate) } } +EXPORT_SYMBOL(end_request); + void blk_rq_bio_prep(request_queue_t *q, struct request *rq, struct bio *bio) { /* first three bits are identical in rq->flags and bio->bi_rw */ @@ -2529,6 +2625,8 @@ void blk_rq_bio_prep(request_queue_t *q, struct request *rq, struct bio *bio) rq->cbio = rq->bio = rq->biotail = bio; } +EXPORT_SYMBOL(blk_rq_bio_prep); + void blk_rq_prep_restart(struct request *rq) { struct bio *bio; @@ -2545,6 +2643,8 @@ void blk_rq_prep_restart(struct request *rq) rq->current_nr_sectors = rq->hard_cur_sectors; } +EXPORT_SYMBOL(blk_rq_prep_restart); + int kblockd_schedule_work(struct work_struct *work) { return queue_work(kblockd_workqueue, work); @@ -2820,59 +2920,3 @@ void blk_unregister_queue(struct gendisk *disk) kobject_put(&disk->kobj); } } - - -EXPORT_SYMBOL(process_that_request_first); -EXPORT_SYMBOL(end_that_request_first); -EXPORT_SYMBOL(end_that_request_chunk); -EXPORT_SYMBOL(end_that_request_last); -EXPORT_SYMBOL(end_request); -EXPORT_SYMBOL(blk_init_queue); -EXPORT_SYMBOL(blk_cleanup_queue); -EXPORT_SYMBOL(blk_get_queue); -EXPORT_SYMBOL(blk_alloc_queue); -EXPORT_SYMBOL(blk_queue_make_request); -EXPORT_SYMBOL(blk_queue_bounce_limit); -EXPORT_SYMBOL(generic_make_request); -EXPORT_SYMBOL(generic_unplug_device); -EXPORT_SYMBOL(blk_plug_device); -EXPORT_SYMBOL(blk_remove_plug); -EXPORT_SYMBOL(blk_attempt_remerge); -EXPORT_SYMBOL(__blk_attempt_remerge); -EXPORT_SYMBOL(blk_max_low_pfn); -EXPORT_SYMBOL(blk_max_pfn); -EXPORT_SYMBOL(blk_queue_max_sectors); -EXPORT_SYMBOL(blk_queue_max_phys_segments); -EXPORT_SYMBOL(blk_queue_max_hw_segments); -EXPORT_SYMBOL(blk_queue_max_segment_size); -EXPORT_SYMBOL(blk_queue_hardsect_size); -EXPORT_SYMBOL(blk_queue_stack_limits); -EXPORT_SYMBOL(blk_queue_segment_boundary); -EXPORT_SYMBOL(blk_queue_dma_alignment); -EXPORT_SYMBOL(blk_rq_map_sg); -EXPORT_SYMBOL(blk_dump_rq_flags); -EXPORT_SYMBOL(submit_bio); -EXPORT_SYMBOL(blk_phys_contig_segment); -EXPORT_SYMBOL(blk_hw_contig_segment); -EXPORT_SYMBOL(blk_get_request); -EXPORT_SYMBOL(blk_put_request); -EXPORT_SYMBOL(blk_insert_request); -EXPORT_SYMBOL(blk_requeue_request); - -EXPORT_SYMBOL(blk_queue_prep_rq); -EXPORT_SYMBOL(blk_queue_merge_bvec); - -EXPORT_SYMBOL(blk_queue_find_tag); -EXPORT_SYMBOL(blk_queue_init_tags); -EXPORT_SYMBOL(blk_queue_free_tags); -EXPORT_SYMBOL(blk_queue_start_tag); -EXPORT_SYMBOL(blk_queue_end_tag); -EXPORT_SYMBOL(blk_queue_invalidate_tags); - -EXPORT_SYMBOL(blk_start_queue); -EXPORT_SYMBOL(blk_stop_queue); -EXPORT_SYMBOL(blk_run_queue); -EXPORT_SYMBOL(blk_run_queues); - -EXPORT_SYMBOL(blk_rq_bio_prep); -EXPORT_SYMBOL(blk_rq_prep_restart); diff --git a/drivers/char/random.c b/drivers/char/random.c index 1b5fda1f0efc2..84a7fd56bea19 100644 --- a/drivers/char/random.c +++ b/drivers/char/random.c @@ -710,6 +710,8 @@ void batch_entropy_store(u32 a, u32 b, int num) spin_unlock_irqrestore(&batch_lock, flags); } +EXPORT_SYMBOL(batch_entropy_store); + /* * Flush out the accumulated entropy operations, adding entropy to the passed * store (normally random_state). If that store has enough entropy, alternate @@ -854,11 +856,15 @@ void add_keyboard_randomness(unsigned char scancode) } } +EXPORT_SYMBOL(add_keyboard_randomness); + void add_mouse_randomness(__u32 mouse_data) { add_timer_randomness(&mouse_timer_state, mouse_data); } +EXPORT_SYMBOL(add_mouse_randomness); + void add_interrupt_randomness(int irq) { if (irq >= NR_IRQS || irq_timer_state[irq] == 0) @@ -867,6 +873,8 @@ void add_interrupt_randomness(int irq) add_timer_randomness(irq_timer_state[irq], 0x100+irq); } +EXPORT_SYMBOL(add_interrupt_randomness); + void add_disk_randomness(struct gendisk *disk) { if (!disk || !disk->random) @@ -875,6 +883,8 @@ void add_disk_randomness(struct gendisk *disk) add_timer_randomness(disk->random, 0x100+MKDEV(disk->major, disk->first_minor)); } +EXPORT_SYMBOL(add_disk_randomness); + /****************************************************************** * * Hash function definition @@ -1458,6 +1468,8 @@ void get_random_bytes(void *buf, int nbytes) "random driver initialization\n"); } +EXPORT_SYMBOL(get_random_bytes); + /********************************************************************* * * Functions to interface with Linux @@ -1824,6 +1836,8 @@ void generate_random_uuid(unsigned char uuid_out[16]) uuid_out[8] = (uuid_out[8] & 0x3F) | 0x80; } +EXPORT_SYMBOL(generate_random_uuid); + /******************************************************************** * * Sysctl interface @@ -2323,6 +2337,8 @@ __u32 secure_tcp_sequence_number(__u32 saddr, __u32 daddr, return seq; } +EXPORT_SYMBOL(secure_tcp_sequence_number); + /* The code below is shamelessly stolen from secure_tcp_sequence_number(). * All blames to Andrey V. Savochkin . */ @@ -2445,13 +2461,3 @@ __u32 check_tcp_syn_cookie(__u32 cookie, __u32 saddr, __u32 daddr, __u16 sport, return (cookie - tmp[17]) & COOKIEMASK; /* Leaving the data behind */ } #endif - - - -EXPORT_SYMBOL(add_keyboard_randomness); -EXPORT_SYMBOL(add_mouse_randomness); -EXPORT_SYMBOL(add_interrupt_randomness); -EXPORT_SYMBOL(add_disk_randomness); -EXPORT_SYMBOL(batch_entropy_store); -EXPORT_SYMBOL(generate_random_uuid); - diff --git a/drivers/char/tty_io.c b/drivers/char/tty_io.c index 6191811d0ecf2..6cda4d049ed72 100644 --- a/drivers/char/tty_io.c +++ b/drivers/char/tty_io.c @@ -117,6 +117,8 @@ struct termios tty_std_termios = { /* for the benefit of tty drivers */ .c_cc = INIT_C_CC }; +EXPORT_SYMBOL(tty_std_termios); + LIST_HEAD(tty_drivers); /* linked list of tty drivers */ struct tty_ldisc ldiscs[NR_LDISCS]; /* line disc dispatch table */ @@ -2032,6 +2034,8 @@ void tty_flip_buffer_push(struct tty_struct *tty) schedule_delayed_work(&tty->flip.work, 1); } +EXPORT_SYMBOL(tty_flip_buffer_push); + /* * This subroutine initializes a tty structure. */ @@ -2311,6 +2315,8 @@ int tty_register_driver(struct tty_driver *driver) return 0; } +EXPORT_SYMBOL(tty_register_driver); + /* * Called by a tty driver to unregister itself. */ @@ -2357,6 +2363,8 @@ int tty_unregister_driver(struct tty_driver *driver) return 0; } +EXPORT_SYMBOL(tty_unregister_driver); + /* * Initialize the console device. This is called *early*, so diff --git a/drivers/char/tty_ioctl.c b/drivers/char/tty_ioctl.c index d6f6d72a03f35..81eff0d25e5b7 100644 --- a/drivers/char/tty_ioctl.c +++ b/drivers/char/tty_ioctl.c @@ -69,6 +69,8 @@ stop_waiting: remove_wait_queue(&tty->write_wait, &wait); } +EXPORT_SYMBOL(tty_wait_until_sent); + static void unset_locked_termios(struct termios *termios, struct termios *old, struct termios *locked) diff --git a/drivers/ide/ide.c b/drivers/ide/ide.c index 64a887f2b8d3a..9a5525d7d6765 100644 --- a/drivers/ide/ide.c +++ b/drivers/ide/ide.c @@ -189,6 +189,7 @@ int noautodma = 1; #endif EXPORT_SYMBOL(noautodma); +EXPORT_SYMBOL(ide_bus_type); int (*ide_probe)(void); diff --git a/drivers/net/sk98lin/skdim.c b/drivers/net/sk98lin/skdim.c index 13cbb3d3622d8..63f7115a192a2 100644 --- a/drivers/net/sk98lin/skdim.c +++ b/drivers/net/sk98lin/skdim.c @@ -327,9 +327,7 @@ GetCurrentSystemLoad(SK_AC *pAC) { ** ** struct kernel_stat kstat ** - ** is not marked as an exported symbol in the file - ** - ** kernel/ksyms.c + ** is not marked as an exported symbol ** ** As a consequence, using this driver as KLM is not possible ** and any access of the structure kernel_stat via the diff --git a/fs/dcache.c b/fs/dcache.c index c065c5de424e1..6f59460583654 100644 --- a/fs/dcache.c +++ b/fs/dcache.c @@ -35,6 +35,8 @@ spinlock_t dcache_lock __cacheline_aligned_in_smp = SPIN_LOCK_UNLOCKED; seqlock_t rename_lock __cacheline_aligned_in_smp = SEQLOCK_UNLOCKED; +EXPORT_SYMBOL(dcache_lock); + static kmem_cache_t *dentry_cache; /* diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c index 4fcb7b071f20d..2243f4e26cf3e 100644 --- a/fs/nfsd/vfs.c +++ b/fs/nfsd/vfs.c @@ -3,7 +3,7 @@ * linux/fs/nfsd/vfs.c * * File operations used by nfsd. Some of these have been ripped from - * other parts of the kernel because they weren't in ksyms.c, others + * other parts of the kernel because they weren't exported, others * are partial duplicates with added or changed functionality. * * Note that several functions dget() the dentry upon which they want diff --git a/include/linux/root_dev.h b/include/linux/root_dev.h index 702547ba0bd59..ea4bc9d13735b 100644 --- a/include/linux/root_dev.h +++ b/include/linux/root_dev.h @@ -1,6 +1,8 @@ #ifndef _ROOT_DEV_H_ #define _ROOT_DEV_H_ +#include + enum { Root_NFS = MKDEV(UNNAMED_MAJOR, 255), Root_RAM0 = MKDEV(RAMDISK_MAJOR, 0), diff --git a/init/do_mounts.c b/init/do_mounts.c index ed60847bf0b60..ad8c88ae0b7ef 100644 --- a/init/do_mounts.c +++ b/init/do_mounts.c @@ -1,3 +1,4 @@ +#include #include #include #include @@ -23,6 +24,8 @@ static char __initdata saved_root_name[64]; /* this is initialized in init/main.c */ dev_t ROOT_DEV; +EXPORT_SYMBOL(ROOT_DEV); + static int __init load_ramdisk(char *str) { rd_doload = simple_strtol(str,NULL,0) & 3; diff --git a/init/main.c b/init/main.c index 13eff1cdd527d..2b9b862c1a750 100644 --- a/init/main.c +++ b/init/main.c @@ -12,6 +12,7 @@ #define __KERNEL_SYSCALLS__ #include +#include #include #include #include @@ -165,6 +166,10 @@ static int __init obsolete_checksetup(char *line) still work even if initially too large, it will just take slightly longer */ unsigned long loops_per_jiffy = (1<<12); +#ifndef __ia64__ +EXPORT_SYMBOL(loops_per_jiffy); +#endif + /* This is the number of bits of precision for the loops_per_jiffy. Each bit takes on average 1.5/HZ seconds. This (like the original) is a little better than 1% */ @@ -307,6 +312,8 @@ static inline void smp_prepare_cpus(unsigned int maxcpus) { } #ifdef __GENERIC_PER_CPU unsigned long __per_cpu_offset[NR_CPUS]; +EXPORT_SYMBOL(__per_cpu_offset); + static void __init setup_per_cpu_areas(void) { unsigned long size, i; diff --git a/init/version.c b/init/version.c index b4cfb10af45f8..d8878ae6cadc3 100644 --- a/init/version.c +++ b/init/version.c @@ -7,6 +7,7 @@ */ #include +#include #include #include #include @@ -25,6 +26,8 @@ struct new_utsname system_utsname = { .domainname = UTS_DOMAINNAME, }; +EXPORT_SYMBOL(system_utsname); + const char *linux_banner = "Linux version " UTS_RELEASE " (" LINUX_COMPILE_BY "@" LINUX_COMPILE_HOST ") (" LINUX_COMPILER ") " UTS_VERSION "\n"; diff --git a/kernel/Makefile b/kernel/Makefile index c63c8eab0f08d..503aecd60428b 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -12,7 +12,7 @@ obj-$(CONFIG_FUTEX) += futex.o obj-$(CONFIG_GENERIC_ISA_DMA) += dma.o obj-$(CONFIG_SMP) += cpu.o obj-$(CONFIG_UID16) += uid16.o -obj-$(CONFIG_MODULES) += ksyms.o module.o +obj-$(CONFIG_MODULES) += module.o obj-$(CONFIG_KALLSYMS) += kallsyms.o obj-$(CONFIG_PM) += power/ obj-$(CONFIG_BSD_PROCESS_ACCT) += acct.o diff --git a/kernel/capability.c b/kernel/capability.c index 518d167dbaeb3..1c5c357184505 100644 --- a/kernel/capability.c +++ b/kernel/capability.c @@ -8,12 +8,16 @@ */ #include +#include #include #include unsigned securebits = SECUREBITS_DEFAULT; /* systemwide security settings */ kernel_cap_t cap_bset = CAP_INIT_EFF_SET; +EXPORT_SYMBOL(securebits); +EXPORT_SYMBOL(cap_bset); + /* * This global lock protects task->cap_* for all tasks including current. * Locking rule: acquire this prior to tasklist_lock. diff --git a/kernel/exit.c b/kernel/exit.c index a87c12eed85d7..d7ed79d9a1445 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -323,6 +323,8 @@ void daemonize(const char *name, ...) reparent_to_init(); } +EXPORT_SYMBOL(daemonize); + static inline void close_files(struct files_struct * files) { int i, j; @@ -418,6 +420,8 @@ void exit_fs(struct task_struct *tsk) __exit_fs(tsk); } +EXPORT_SYMBOL_GPL(exit_fs); + /* * Turn us into a lazy TLB process if we * aren't already.. @@ -455,6 +459,8 @@ void exit_mm(struct task_struct *tsk) __exit_mm(tsk); } +EXPORT_SYMBOL(exit_mm); + static inline void choose_new_parent(task_t *p, task_t *reaper, task_t *child_reaper) { /* @@ -741,6 +747,8 @@ NORET_TYPE void complete_and_exit(struct completion *comp, long code) do_exit(code); } +EXPORT_SYMBOL(complete_and_exit); + asmlinkage long sys_exit(int error_code) { do_exit((error_code&0xff)<<8); @@ -765,6 +773,8 @@ task_t *next_thread(task_t *p) return pid_task(tmp, PIDTYPE_TGID); } +EXPORT_SYMBOL(next_thread); + /* * Take down every thread in the group. This is called by fatal signals * as well as by sys_exit_group (below). diff --git a/kernel/fork.c b/kernel/fork.c index f804f3124820b..0afba3e0e0ace 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -53,6 +53,8 @@ DEFINE_PER_CPU(unsigned long, process_counts) = 0; rwlock_t tasklist_lock __cacheline_aligned = RW_LOCK_UNLOCKED; /* outer */ +EXPORT_SYMBOL(tasklist_lock); + int nr_processes(void) { int cpu; @@ -98,6 +100,8 @@ void add_wait_queue(wait_queue_head_t *q, wait_queue_t * wait) spin_unlock_irqrestore(&q->lock, flags); } +EXPORT_SYMBOL(add_wait_queue); + void add_wait_queue_exclusive(wait_queue_head_t *q, wait_queue_t * wait) { unsigned long flags; @@ -108,6 +112,8 @@ void add_wait_queue_exclusive(wait_queue_head_t *q, wait_queue_t * wait) spin_unlock_irqrestore(&q->lock, flags); } +EXPORT_SYMBOL(add_wait_queue_exclusive); + void remove_wait_queue(wait_queue_head_t *q, wait_queue_t * wait) { unsigned long flags; @@ -117,6 +123,8 @@ void remove_wait_queue(wait_queue_head_t *q, wait_queue_t * wait) spin_unlock_irqrestore(&q->lock, flags); } +EXPORT_SYMBOL(remove_wait_queue); + void prepare_to_wait(wait_queue_head_t *q, wait_queue_t *wait, int state) { unsigned long flags; @@ -129,6 +137,8 @@ void prepare_to_wait(wait_queue_head_t *q, wait_queue_t *wait, int state) spin_unlock_irqrestore(&q->lock, flags); } +EXPORT_SYMBOL(prepare_to_wait); + void prepare_to_wait_exclusive(wait_queue_head_t *q, wait_queue_t *wait, int state) { @@ -142,6 +152,8 @@ prepare_to_wait_exclusive(wait_queue_head_t *q, wait_queue_t *wait, int state) spin_unlock_irqrestore(&q->lock, flags); } +EXPORT_SYMBOL(prepare_to_wait_exclusive); + void finish_wait(wait_queue_head_t *q, wait_queue_t *wait) { unsigned long flags; @@ -154,6 +166,8 @@ void finish_wait(wait_queue_head_t *q, wait_queue_t *wait) } } +EXPORT_SYMBOL(finish_wait); + int autoremove_wake_function(wait_queue_t *wait, unsigned mode, int sync) { int ret = default_wake_function(wait, mode, sync); @@ -163,6 +177,8 @@ int autoremove_wake_function(wait_queue_t *wait, unsigned mode, int sync) return ret; } +EXPORT_SYMBOL(autoremove_wake_function); + void __init fork_init(unsigned long mempages) { #ifndef __HAVE_ARCH_TASK_STRUCT_ALLOCATOR @@ -555,6 +571,8 @@ struct fs_struct *copy_fs_struct(struct fs_struct *old) return __copy_fs_struct(old); } +EXPORT_SYMBOL_GPL(copy_fs_struct); + static inline int copy_fs(unsigned long clone_flags, struct task_struct * tsk) { if (clone_flags & CLONE_FS) { diff --git a/kernel/ksyms.c b/kernel/ksyms.c deleted file mode 100644 index 4cbb0da18de71..0000000000000 --- a/kernel/ksyms.c +++ /dev/null @@ -1,294 +0,0 @@ -/* - * Herein lies all the functions/variables that are "exported" for linkage - * with dynamically loaded kernel modules. - * Jon. - * - * - Stacked module support and unified symbol table added (June 1994) - * - External symbol table support added (December 1994) - * - Versions on symbols added (December 1994) - * by Bjorn Ekwall - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if defined(CONFIG_PROC_FS) -#include -#endif -#ifdef CONFIG_KMOD -#include -#endif - -extern struct timezone sys_tz; - -extern int panic_timeout; - -/* process memory management */ -EXPORT_SYMBOL(do_mmap_pgoff); -EXPORT_SYMBOL(do_munmap); -EXPORT_SYMBOL(do_brk); -EXPORT_SYMBOL(exit_mm); -EXPORT_SYMBOL_GPL(exit_fs); -EXPORT_SYMBOL_GPL(copy_fs_struct); - -/* internal kernel memory management */ -EXPORT_SYMBOL(__alloc_pages); -EXPORT_SYMBOL(__get_free_pages); -EXPORT_SYMBOL(get_zeroed_page); -EXPORT_SYMBOL(__page_cache_release); -EXPORT_SYMBOL(__pagevec_lru_add); -EXPORT_SYMBOL(__free_pages); -EXPORT_SYMBOL(free_pages); -EXPORT_SYMBOL(num_physpages); -EXPORT_SYMBOL(kmem_find_general_cachep); -EXPORT_SYMBOL(kmem_cache_create); -EXPORT_SYMBOL(kmem_cache_destroy); -EXPORT_SYMBOL(kmem_cache_shrink); -EXPORT_SYMBOL(kmem_cache_alloc); -EXPORT_SYMBOL(kmem_cache_free); -EXPORT_SYMBOL(kmem_cache_size); -EXPORT_SYMBOL(set_shrinker); -EXPORT_SYMBOL(remove_shrinker); -EXPORT_SYMBOL(malloc_sizes); -EXPORT_SYMBOL(__kmalloc); -EXPORT_SYMBOL(kfree); -#ifdef CONFIG_SMP -EXPORT_SYMBOL(__alloc_percpu); -EXPORT_SYMBOL(free_percpu); -EXPORT_SYMBOL(percpu_counter_mod); -#endif -EXPORT_SYMBOL(vfree); -EXPORT_SYMBOL(__vmalloc); -EXPORT_SYMBOL(vmalloc); -EXPORT_SYMBOL(vmalloc_32); -EXPORT_SYMBOL(vmap); -EXPORT_SYMBOL(vunmap); -EXPORT_SYMBOL(vmalloc_to_page); -EXPORT_SYMBOL(remap_page_range); -#ifndef CONFIG_DISCONTIGMEM -EXPORT_SYMBOL(contig_page_data); -EXPORT_SYMBOL(mem_map); -EXPORT_SYMBOL(max_mapnr); -#endif -EXPORT_SYMBOL(high_memory); -EXPORT_SYMBOL(vmtruncate); -EXPORT_SYMBOL(find_vma); -EXPORT_SYMBOL(get_unmapped_area); -EXPORT_SYMBOL(init_mm); -EXPORT_SYMBOL(blk_queue_bounce); -EXPORT_SYMBOL(blk_congestion_wait); -#ifdef CONFIG_HIGHMEM -EXPORT_SYMBOL(kmap_high); -EXPORT_SYMBOL(kunmap_high); -EXPORT_SYMBOL(highmem_start_page); -EXPORT_SYMBOL(kmap_prot); -EXPORT_SYMBOL(kmap_pte); -#endif -#ifdef HASHED_PAGE_VIRTUAL -EXPORT_SYMBOL(page_address); -#endif -EXPORT_SYMBOL(get_user_pages); - -/* filesystem internal functions */ -EXPORT_SYMBOL(dcache_lock); -EXPORT_SYMBOL(invalidate_inode_pages); -EXPORT_SYMBOL_GPL(invalidate_inode_pages2); -EXPORT_SYMBOL(truncate_inode_pages); -EXPORT_SYMBOL(file_ra_state_init); -EXPORT_SYMBOL(ROOT_DEV); -EXPORT_SYMBOL(read_cache_pages); -EXPORT_SYMBOL(mark_page_accessed); - -/* for stackable file systems (lofs, wrapfs, cryptfs, etc.) */ -EXPORT_SYMBOL(lock_page); - -/* device registration */ -EXPORT_SYMBOL(register_blkdev); -EXPORT_SYMBOL(unregister_blkdev); -EXPORT_SYMBOL(tty_register_driver); -EXPORT_SYMBOL(tty_unregister_driver); -EXPORT_SYMBOL(tty_std_termios); - -/* block device driver support */ -EXPORT_SYMBOL_GPL(default_backing_dev_info); - -/* tty routines */ -EXPORT_SYMBOL(tty_wait_until_sent); -EXPORT_SYMBOL(tty_flip_buffer_push); - -/* interrupt handling */ -EXPORT_SYMBOL(request_irq); -EXPORT_SYMBOL(free_irq); - -/* waitqueue handling */ -EXPORT_SYMBOL(add_wait_queue); -EXPORT_SYMBOL(add_wait_queue_exclusive); -EXPORT_SYMBOL(remove_wait_queue); -EXPORT_SYMBOL(prepare_to_wait); -EXPORT_SYMBOL(prepare_to_wait_exclusive); -EXPORT_SYMBOL(finish_wait); -EXPORT_SYMBOL(autoremove_wake_function); - -/* The notion of irq probe/assignment is foreign to S/390 */ - -#if !defined(CONFIG_ARCH_S390) -EXPORT_SYMBOL(probe_irq_on); -EXPORT_SYMBOL(probe_irq_off); -#endif - -#ifdef CONFIG_SMP -EXPORT_SYMBOL(del_timer_sync); -#endif -EXPORT_SYMBOL(del_timer); -EXPORT_SYMBOL(mod_timer); -EXPORT_SYMBOL(__mod_timer); - -#ifdef HAVE_DISABLE_HLT -EXPORT_SYMBOL(disable_hlt); -EXPORT_SYMBOL(enable_hlt); -#endif - -/* resource handling */ -EXPORT_SYMBOL(request_resource); -EXPORT_SYMBOL(release_resource); -EXPORT_SYMBOL(allocate_resource); -EXPORT_SYMBOL(__request_region); -EXPORT_SYMBOL(__check_region); -EXPORT_SYMBOL(__release_region); -EXPORT_SYMBOL(ioport_resource); -EXPORT_SYMBOL(iomem_resource); - -/* process management */ -EXPORT_SYMBOL(complete_and_exit); -EXPORT_SYMBOL(schedule_timeout); -#if defined(CONFIG_SMP) || defined(CONFIG_PREEMPT) -EXPORT_SYMBOL(kernel_flag); -#endif -EXPORT_SYMBOL(jiffies); -EXPORT_SYMBOL(jiffies_64); -EXPORT_SYMBOL(xtime); -EXPORT_SYMBOL(xtime_lock); -EXPORT_SYMBOL(do_gettimeofday); -EXPORT_SYMBOL(do_settimeofday); -#if (BITS_PER_LONG < 64) -EXPORT_SYMBOL(get_jiffies_64); -#endif -#if !defined(__ia64__) -EXPORT_SYMBOL(loops_per_jiffy); -#endif - -/* misc */ -EXPORT_SYMBOL(panic); -EXPORT_SYMBOL(panic_notifier_list); -EXPORT_SYMBOL(panic_timeout); -EXPORT_SYMBOL(sprintf); -EXPORT_SYMBOL(snprintf); -EXPORT_SYMBOL(sscanf); -EXPORT_SYMBOL(vsprintf); -EXPORT_SYMBOL(vsnprintf); -EXPORT_SYMBOL(vsscanf); -EXPORT_SYMBOL(simple_strtoull); -EXPORT_SYMBOL(simple_strtoul); -EXPORT_SYMBOL(simple_strtol); -EXPORT_SYMBOL(system_utsname); /* UTS data */ -EXPORT_SYMBOL(uts_sem); /* UTS semaphore */ -EXPORT_SYMBOL(machine_restart); -EXPORT_SYMBOL(machine_halt); -EXPORT_SYMBOL(machine_power_off); -EXPORT_SYMBOL(_ctype); -EXPORT_SYMBOL(secure_tcp_sequence_number); -EXPORT_SYMBOL(get_random_bytes); -EXPORT_SYMBOL(securebits); -EXPORT_SYMBOL(cap_bset); -EXPORT_SYMBOL(daemonize); -EXPORT_SYMBOL(csum_partial); /* for networking and md */ - -/* Miscellaneous access points */ -EXPORT_SYMBOL(si_meminfo); - -/* Added to make file system as module */ -EXPORT_SYMBOL(sys_tz); - -#ifdef CONFIG_UID16 -EXPORT_SYMBOL(overflowuid); -EXPORT_SYMBOL(overflowgid); -#endif -EXPORT_SYMBOL(fs_overflowuid); -EXPORT_SYMBOL(fs_overflowgid); - -/* library functions */ -EXPORT_SYMBOL(strnicmp); -EXPORT_SYMBOL(strspn); -EXPORT_SYMBOL(strsep); - -/* software interrupts */ -EXPORT_SYMBOL(tasklet_init); -EXPORT_SYMBOL(tasklet_kill); -EXPORT_SYMBOL(do_softirq); -EXPORT_SYMBOL(raise_softirq); -EXPORT_SYMBOL(open_softirq); -EXPORT_SYMBOL(raise_softirq_irqoff); -EXPORT_SYMBOL(__tasklet_schedule); -EXPORT_SYMBOL(__tasklet_hi_schedule); - -/* init task, for moving kthread roots - ought to export a function ?? */ -EXPORT_SYMBOL(init_task); - -EXPORT_SYMBOL(tasklist_lock); -EXPORT_SYMBOL(find_task_by_pid); -EXPORT_SYMBOL(next_thread); -#if defined(CONFIG_SMP) && defined(__GENERIC_PER_CPU) -EXPORT_SYMBOL(__per_cpu_offset); -#endif - -/* debug */ -EXPORT_SYMBOL(dump_stack); -EXPORT_SYMBOL(ptrace_notify); -EXPORT_SYMBOL(console_printk); - -EXPORT_SYMBOL(current_kernel_time); diff --git a/kernel/panic.c b/kernel/panic.c index 73c45dee8a02f..f5863a571e9b7 100644 --- a/kernel/panic.c +++ b/kernel/panic.c @@ -9,6 +9,7 @@ * to indicate a major problem. */ #include +#include #include #include #include @@ -24,8 +25,12 @@ int panic_timeout; int panic_on_oops; int tainted; +EXPORT_SYMBOL(panic_timeout); + struct notifier_block *panic_notifier_list; +EXPORT_SYMBOL(panic_notifier_list); + static int __init panic_setup(char *str) { panic_timeout = simple_strtoul(str, NULL, 0); @@ -105,6 +110,8 @@ NORET_TYPE void panic(const char * fmt, ...) ; } +EXPORT_SYMBOL(panic); + /** * print_tainted - return a string to represent the kernel taint state. * diff --git a/kernel/pid.c b/kernel/pid.c index 97bdf534c9f38..624b54602fcbf 100644 --- a/kernel/pid.c +++ b/kernel/pid.c @@ -20,6 +20,7 @@ */ #include +#include #include #include #include @@ -230,6 +231,8 @@ task_t *find_task_by_pid(int nr) return pid_task(pid->task_list.next, PIDTYPE_PID); } +EXPORT_SYMBOL(find_task_by_pid); + /* * This function switches the PIDs if a non-leader thread calls * sys_execve() - this must be done without releasing the PID. diff --git a/kernel/printk.c b/kernel/printk.c index caaa3e557ef6d..96ac7e3ee41d9 100644 --- a/kernel/printk.c +++ b/kernel/printk.c @@ -51,6 +51,8 @@ int console_printk[4] = { DEFAULT_CONSOLE_LOGLEVEL, /* default_console_loglevel */ }; +EXPORT_SYMBOL(console_printk); + int oops_in_progress; /* diff --git a/kernel/ptrace.c b/kernel/ptrace.c index 1b68379c4886e..c1ebfd8b714e7 100644 --- a/kernel/ptrace.c +++ b/kernel/ptrace.c @@ -7,6 +7,7 @@ * to continually duplicate across every architecture. */ +#include #include #include #include @@ -340,3 +341,5 @@ void ptrace_notify(int exit_code) recalc_sigpending(); spin_unlock_irq(¤t->sighand->siglock); } + +EXPORT_SYMBOL(ptrace_notify); diff --git a/kernel/resource.c b/kernel/resource.c index f8ce88129fd23..82435e1274535 100644 --- a/kernel/resource.c +++ b/kernel/resource.c @@ -8,6 +8,7 @@ */ #include +#include #include #include #include @@ -27,6 +28,8 @@ struct resource ioport_resource = { .flags = IORESOURCE_IO, }; +EXPORT_SYMBOL(ioport_resource); + struct resource iomem_resource = { .name = "PCI mem", .start = 0UL, @@ -34,6 +37,8 @@ struct resource iomem_resource = { .flags = IORESOURCE_MEM, }; +EXPORT_SYMBOL(iomem_resource); + static rwlock_t resource_lock = RW_LOCK_UNLOCKED; #ifdef CONFIG_PROC_FS @@ -199,6 +204,8 @@ int request_resource(struct resource *root, struct resource *new) return conflict ? -EBUSY : 0; } +EXPORT_SYMBOL(request_resource); + int release_resource(struct resource *old) { int retval; @@ -209,6 +216,8 @@ int release_resource(struct resource *old) return retval; } +EXPORT_SYMBOL(release_resource); + /* * Find empty slot in the resource tree given range and alignment. */ @@ -268,6 +277,8 @@ int allocate_resource(struct resource *root, struct resource *new, return err; } +EXPORT_SYMBOL(allocate_resource); + /* * This is compatibility stuff for IO resources. * @@ -315,6 +326,8 @@ struct resource * __request_region(struct resource *parent, unsigned long start, return res; } +EXPORT_SYMBOL(__request_region); + int __deprecated __check_region(struct resource *parent, unsigned long start, unsigned long n) { struct resource * res; @@ -328,6 +341,8 @@ int __deprecated __check_region(struct resource *parent, unsigned long start, un return 0; } +EXPORT_SYMBOL(__check_region); + void __release_region(struct resource *parent, unsigned long start, unsigned long n) { struct resource **p; @@ -357,6 +372,8 @@ void __release_region(struct resource *parent, unsigned long start, unsigned lon printk(KERN_WARNING "Trying to free nonexistent resource <%08lx-%08lx>\n", start, end); } +EXPORT_SYMBOL(__release_region); + /* * Called from init/main.c to reserve IO ports. */ diff --git a/kernel/sched.c b/kernel/sched.c index b6fef55f7e3a9..3b83f89088ea5 100644 --- a/kernel/sched.c +++ b/kernel/sched.c @@ -2760,6 +2760,8 @@ __init int migration_init(void) * Don't use in new code. */ spinlock_t kernel_flag __cacheline_aligned_in_smp = SPIN_LOCK_UNLOCKED; + +EXPORT_SYMBOL(kernel_flag); #endif static void kstat_init_cpu(int cpu) diff --git a/kernel/softirq.c b/kernel/softirq.c index b6ac17978c0eb..3e9e355735c9f 100644 --- a/kernel/softirq.c +++ b/kernel/softirq.c @@ -113,6 +113,8 @@ restart: local_irq_restore(flags); } +EXPORT_SYMBOL(do_softirq); + void local_bh_enable(void) { __local_bh_enable(); @@ -144,6 +146,8 @@ inline void raise_softirq_irqoff(unsigned int nr) wakeup_softirqd(); } +EXPORT_SYMBOL(raise_softirq_irqoff); + void raise_softirq(unsigned int nr) { unsigned long flags; @@ -153,12 +157,15 @@ void raise_softirq(unsigned int nr) local_irq_restore(flags); } +EXPORT_SYMBOL(raise_softirq); + void open_softirq(int nr, void (*action)(struct softirq_action*), void *data) { softirq_vec[nr].data = data; softirq_vec[nr].action = action; } +EXPORT_SYMBOL(open_softirq); /* Tasklets */ struct tasklet_head @@ -182,6 +189,8 @@ void __tasklet_schedule(struct tasklet_struct *t) local_irq_restore(flags); } +EXPORT_SYMBOL(__tasklet_schedule); + void __tasklet_hi_schedule(struct tasklet_struct *t) { unsigned long flags; @@ -193,6 +202,8 @@ void __tasklet_hi_schedule(struct tasklet_struct *t) local_irq_restore(flags); } +EXPORT_SYMBOL(__tasklet_hi_schedule); + static void tasklet_action(struct softirq_action *a) { struct tasklet_struct *list; @@ -270,6 +281,8 @@ void tasklet_init(struct tasklet_struct *t, t->data = data; } +EXPORT_SYMBOL(tasklet_init); + void tasklet_kill(struct tasklet_struct *t) { if (in_interrupt()) @@ -284,6 +297,7 @@ void tasklet_kill(struct tasklet_struct *t) clear_bit(TASKLET_STATE_SCHED, &t->state); } +EXPORT_SYMBOL(tasklet_kill); static void tasklet_init_cpu(int cpu) { diff --git a/kernel/sys.c b/kernel/sys.c index 6f8f43156ab3d..7413a10674720 100644 --- a/kernel/sys.c +++ b/kernel/sys.c @@ -55,6 +55,11 @@ int overflowuid = DEFAULT_OVERFLOWUID; int overflowgid = DEFAULT_OVERFLOWGID; +#ifdef CONFIG_UID16 +EXPORT_SYMBOL(overflowuid); +EXPORT_SYMBOL(overflowgid); +#endif + /* * the same as above, but for filesystems which can only store a 16-bit * UID and GID. as such, this is needed on all architectures @@ -63,6 +68,9 @@ int overflowgid = DEFAULT_OVERFLOWGID; int fs_overflowuid = DEFAULT_FS_OVERFLOWUID; int fs_overflowgid = DEFAULT_FS_OVERFLOWUID; +EXPORT_SYMBOL(fs_overflowuid); +EXPORT_SYMBOL(fs_overflowgid); + /* * this indicates whether you can reboot with ctrl-alt-del: the default is yes */ @@ -106,6 +114,8 @@ int notifier_chain_register(struct notifier_block **list, struct notifier_block return 0; } +EXPORT_SYMBOL(notifier_chain_register); + /** * notifier_chain_unregister - Remove notifier from a notifier chain * @nl: Pointer to root list pointer @@ -133,6 +143,8 @@ int notifier_chain_unregister(struct notifier_block **nl, struct notifier_block return -ENOENT; } +EXPORT_SYMBOL(notifier_chain_unregister); + /** * notifier_call_chain - Call functions in a notifier chain * @n: Pointer to root pointer of notifier chain @@ -166,6 +178,8 @@ int notifier_call_chain(struct notifier_block **n, unsigned long val, void *v) return ret; } +EXPORT_SYMBOL(notifier_call_chain); + /** * register_reboot_notifier - Register function to be called at reboot time * @nb: Info about notifier function to be called @@ -182,6 +196,8 @@ int register_reboot_notifier(struct notifier_block * nb) return notifier_chain_register(&reboot_notifier_list, nb); } +EXPORT_SYMBOL(register_reboot_notifier); + /** * unregister_reboot_notifier - Unregister previously registered reboot notifier * @nb: Hook to be unregistered @@ -197,6 +213,8 @@ int unregister_reboot_notifier(struct notifier_block * nb) return notifier_chain_unregister(&reboot_notifier_list, nb); } +EXPORT_SYMBOL(unregister_reboot_notifier); + asmlinkage long sys_ni_syscall(void) { return -ENOSYS; @@ -1144,6 +1162,8 @@ int in_group_p(gid_t grp) return retval; } +EXPORT_SYMBOL(in_group_p); + int in_egroup_p(gid_t grp) { int retval = 1; @@ -1152,8 +1172,12 @@ int in_egroup_p(gid_t grp) return retval; } +EXPORT_SYMBOL(in_egroup_p); + DECLARE_RWSEM(uts_sem); +EXPORT_SYMBOL(uts_sem); + asmlinkage long sys_newuname(struct new_utsname __user * name) { int errno = 0; @@ -1433,11 +1457,3 @@ asmlinkage long sys_prctl(int option, unsigned long arg2, unsigned long arg3, } return error; } - -EXPORT_SYMBOL(notifier_chain_register); -EXPORT_SYMBOL(notifier_chain_unregister); -EXPORT_SYMBOL(notifier_call_chain); -EXPORT_SYMBOL(register_reboot_notifier); -EXPORT_SYMBOL(unregister_reboot_notifier); -EXPORT_SYMBOL(in_group_p); -EXPORT_SYMBOL(in_egroup_p); diff --git a/kernel/time.c b/kernel/time.c index fd23f6774b56f..6279ee846ed55 100644 --- a/kernel/time.c +++ b/kernel/time.c @@ -24,6 +24,7 @@ * (Even though the technical memorandum forbids it) */ +#include #include #include #include @@ -35,6 +36,8 @@ */ struct timezone sys_tz; +EXPORT_SYMBOL(sys_tz); + #if !defined(__alpha__) && !defined(__ia64__) /* @@ -413,6 +416,8 @@ struct timespec current_kernel_time(void) return now; } +EXPORT_SYMBOL(current_kernel_time); + #if (BITS_PER_LONG < 64) u64 get_jiffies_64(void) { @@ -425,4 +430,8 @@ u64 get_jiffies_64(void) } while (read_seqretry(&xtime_lock, seq)); return ret; } + +EXPORT_SYMBOL(get_jiffies_64); #endif + +EXPORT_SYMBOL(jiffies); diff --git a/kernel/timer.c b/kernel/timer.c index 2c8d770c5876d..176d2c3215b4e 100644 --- a/kernel/timer.c +++ b/kernel/timer.c @@ -20,6 +20,7 @@ */ #include +#include #include #include #include @@ -207,6 +208,8 @@ repeat: return ret; } +EXPORT_SYMBOL(__mod_timer); + /*** * add_timer_on - start a timer on a particular CPU * @timer: the timer to be added @@ -265,6 +268,8 @@ int mod_timer(struct timer_list *timer, unsigned long expires) return __mod_timer(timer, expires); } +EXPORT_SYMBOL(mod_timer); + /*** * del_timer - deactive a timer. * @timer: the timer to be deactivated @@ -299,6 +304,8 @@ repeat: return 1; } +EXPORT_SYMBOL(del_timer); + #ifdef CONFIG_SMP /*** * del_timer_sync - deactivate a timer and wait for the handler to finish. @@ -344,8 +351,9 @@ del_again: return ret; } -#endif +EXPORT_SYMBOL(del_timer_sync); +#endif static int cascade(tvec_base_t *base, tvec_t *tv, int index) { @@ -441,6 +449,8 @@ unsigned long tick_nsec = TICK_NSEC; /* ACTHZ period (nsec) */ struct timespec xtime __attribute__ ((aligned (16))); struct timespec wall_to_monotonic __attribute__ ((aligned (16))); +EXPORT_SYMBOL(xtime); + /* Don't completely fail for HZ > 500. */ int tickadj = 500/HZ ? : 1; /* microsecs */ @@ -779,6 +789,8 @@ unsigned long wall_jiffies = INITIAL_JIFFIES; */ #ifndef ARCH_HAVE_XTIME_LOCK seqlock_t xtime_lock __cacheline_aligned_in_smp = SEQLOCK_UNLOCKED; + +EXPORT_SYMBOL(xtime_lock); #endif /* @@ -1032,6 +1044,8 @@ signed long schedule_timeout(signed long timeout) return timeout < 0 ? 0 : timeout; } +EXPORT_SYMBOL(schedule_timeout); + /* Thread ID - the internal kernel "pid" */ asmlinkage long sys_gettid(void) { diff --git a/lib/ctype.c b/lib/ctype.c index b5f72a5763ac6..d02ace14a322e 100644 --- a/lib/ctype.c +++ b/lib/ctype.c @@ -5,6 +5,7 @@ */ #include +#include unsigned char _ctype[] = { _C,_C,_C,_C,_C,_C,_C,_C, /* 0-7 */ @@ -32,4 +33,4 @@ _U,_U,_U,_U,_U,_U,_U,_P,_U,_U,_U,_U,_U,_U,_U,_L, /* 208-223 */ _L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L, /* 224-239 */ _L,_L,_L,_L,_L,_L,_L,_P,_L,_L,_L,_L,_L,_L,_L,_L}; /* 240-255 */ - +EXPORT_SYMBOL(_ctype); diff --git a/lib/dump_stack.c b/lib/dump_stack.c index 47c2728ab8c7d..53bff4c8452b5 100644 --- a/lib/dump_stack.c +++ b/lib/dump_stack.c @@ -11,3 +11,5 @@ void dump_stack(void) printk(KERN_NOTICE "This architecture does not implement dump_stack()\n"); } + +EXPORT_SYMBOL(dump_stack); diff --git a/lib/percpu_counter.c b/lib/percpu_counter.c index a9afaec00bdd8..2c5c7b5753616 100644 --- a/lib/percpu_counter.c +++ b/lib/percpu_counter.c @@ -1,4 +1,4 @@ - +#include #include #include @@ -17,3 +17,5 @@ void percpu_counter_mod(struct percpu_counter *fbc, long amount) fbc->counters[cpu].count = count; put_cpu(); } + +EXPORT_SYMBOL(percpu_counter_mod); diff --git a/lib/string.c b/lib/string.c index 4917b54e605ff..5c2ad6a174f44 100644 --- a/lib/string.c +++ b/lib/string.c @@ -55,6 +55,8 @@ int strnicmp(const char *s1, const char *s2, size_t len) } return (int)c1 - (int)c2; } + +EXPORT_SYMBOL(strnicmp); #endif #ifndef __HAVE_ARCH_STRCPY @@ -325,6 +327,8 @@ size_t strspn(const char *s, const char *accept) return count; } + +EXPORT_SYMBOL(strspn); #endif /** @@ -396,6 +400,8 @@ char * strsep(char **s, const char *ct) return sbegin; } + +EXPORT_SYMBOL(strsep); #endif #ifndef __HAVE_ARCH_MEMSET diff --git a/lib/vsprintf.c b/lib/vsprintf.c index 0a12089169a61..0803ac5438e12 100644 --- a/lib/vsprintf.c +++ b/lib/vsprintf.c @@ -15,6 +15,7 @@ */ #include +#include #include #include #include @@ -53,6 +54,8 @@ unsigned long simple_strtoul(const char *cp,char **endp,unsigned int base) return result; } +EXPORT_SYMBOL(simple_strtoul); + /** * simple_strtol - convert a string to a signed long * @cp: The start of the string @@ -66,6 +69,8 @@ long simple_strtol(const char *cp,char **endp,unsigned int base) return simple_strtoul(cp,endp,base); } +EXPORT_SYMBOL(simple_strtol); + /** * simple_strtoull - convert a string to an unsigned long long * @cp: The start of the string @@ -97,6 +102,8 @@ unsigned long long simple_strtoull(const char *cp,char **endp,unsigned int base) return result; } +EXPORT_SYMBOL(simple_strtoull); + /** * simple_strtoll - convert a string to a signed long long * @cp: The start of the string @@ -458,6 +465,8 @@ int vsnprintf(char *buf, size_t size, const char *fmt, va_list args) return str-buf; } +EXPORT_SYMBOL(vsnprintf); + /** * snprintf - Format a string and place it in a buffer * @buf: The buffer to place the result into @@ -476,6 +485,8 @@ int snprintf(char * buf, size_t size, const char *fmt, ...) return i; } +EXPORT_SYMBOL(snprintf); + /** * vsprintf - Format a string and place it in a buffer * @buf: The buffer to place the result into @@ -490,6 +501,7 @@ int vsprintf(char *buf, const char *fmt, va_list args) return vsnprintf(buf, 0xFFFFFFFFUL, fmt, args); } +EXPORT_SYMBOL(vsprintf); /** * sprintf - Format a string and place it in a buffer @@ -508,6 +520,8 @@ int sprintf(char * buf, const char *fmt, ...) return i; } +EXPORT_SYMBOL(sprintf); + /** * vsscanf - Unformat a buffer into a list of arguments * @buf: input buffer @@ -707,6 +721,8 @@ int vsscanf(const char * buf, const char * fmt, va_list args) return num; } +EXPORT_SYMBOL(vsscanf); + /** * sscanf - Unformat a buffer into a list of arguments * @buf: input buffer @@ -723,3 +739,5 @@ int sscanf(const char * buf, const char * fmt, ...) va_end(args); return i; } + +EXPORT_SYMBOL(sscanf); diff --git a/mm/filemap.c b/mm/filemap.c index 6eb6c0b12c240..c5865a1d892d2 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -330,6 +330,7 @@ void unlock_page(struct page *page) } EXPORT_SYMBOL(unlock_page); +EXPORT_SYMBOL(lock_page); /* * End writeback against a page. diff --git a/mm/highmem.c b/mm/highmem.c index 864392016a794..6823a088cd1af 100644 --- a/mm/highmem.c +++ b/mm/highmem.c @@ -17,6 +17,7 @@ */ #include +#include #include #include #include @@ -167,6 +168,8 @@ void *kmap_high(struct page *page) return (void*) vaddr; } +EXPORT_SYMBOL(kmap_high); + void kunmap_high(struct page *page) { unsigned long vaddr; @@ -207,6 +210,8 @@ void kunmap_high(struct page *page) wake_up(&pkmap_map_wait); } +EXPORT_SYMBOL(kunmap_high); + #define POOL_SIZE 64 static __init int init_emergency_pool(void) @@ -473,6 +478,8 @@ void blk_queue_bounce(request_queue_t *q, struct bio **bio_orig) __blk_queue_bounce(q, bio_orig, pool); } +EXPORT_SYMBOL(blk_queue_bounce); + #if defined(HASHED_PAGE_VIRTUAL) #define PA_HASH_ORDER 7 @@ -532,6 +539,8 @@ done: return ret; } +EXPORT_SYMBOL(page_address); + void set_page_address(struct page *page, void *virtual) { unsigned long flags; diff --git a/mm/memory.c b/mm/memory.c index 7e105f02d82b0..ab34c145d4c3b 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -59,12 +59,19 @@ /* use the per-pgdat data instead for discontigmem - mbligh */ unsigned long max_mapnr; struct page *mem_map; + +EXPORT_SYMBOL(max_mapnr); +EXPORT_SYMBOL(mem_map); #endif unsigned long num_physpages; void * high_memory; struct page *highmem_start_page; +EXPORT_SYMBOL(num_physpages); +EXPORT_SYMBOL(highmem_start_page); +EXPORT_SYMBOL(high_memory); + /* * We special-case the C-O-W ZERO_PAGE, because it's such * a common occurrence (no need to read the page to know @@ -789,6 +796,8 @@ out: return i; } +EXPORT_SYMBOL(get_user_pages); + static void zeromap_pte_range(pte_t * pte, unsigned long address, unsigned long size, pgprot_t prot) { @@ -940,6 +949,8 @@ int remap_page_range(struct vm_area_struct *vma, unsigned long from, unsigned lo return error; } +EXPORT_SYMBOL(remap_page_range); + /* * Establish a new mapping: * - flush the old one @@ -1178,6 +1189,8 @@ out: return -EFBIG; } +EXPORT_SYMBOL(vmtruncate); + /* * Primitive swap readahead code. We simply read an aligned block of * (1 << page_cluster) entries in the swap area. This method is chosen @@ -1686,3 +1699,5 @@ struct page * vmalloc_to_page(void * vmalloc_addr) } return page; } + +EXPORT_SYMBOL(vmalloc_to_page); diff --git a/mm/mmap.c b/mm/mmap.c index eae068ccdae13..7ceef0dbc8521 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -681,6 +681,8 @@ unacct_error: return error; } +EXPORT_SYMBOL(do_mmap_pgoff); + /* Get an address range which is currently unmapped. * For shmat() with addr=0. * @@ -779,6 +781,8 @@ get_unmapped_area(struct file *file, unsigned long addr, unsigned long len, return arch_get_unmapped_area(file, addr, len, pgoff, flags); } +EXPORT_SYMBOL(get_unmapped_area); + /* Look up the first VMA which satisfies addr < vm_end, NULL if none. */ struct vm_area_struct * find_vma(struct mm_struct * mm, unsigned long addr) { @@ -815,6 +819,8 @@ struct vm_area_struct * find_vma(struct mm_struct * mm, unsigned long addr) return vma; } +EXPORT_SYMBOL(find_vma); + /* Same as find_vma, but also return a pointer to the previous VMA in *pprev. */ struct vm_area_struct * find_vma_prev(struct mm_struct *mm, unsigned long addr, @@ -1242,6 +1248,8 @@ int do_munmap(struct mm_struct *mm, unsigned long start, size_t len) return 0; } +EXPORT_SYMBOL(do_munmap); + asmlinkage long sys_munmap(unsigned long addr, size_t len) { int ret; @@ -1342,6 +1350,8 @@ out: return addr; } +EXPORT_SYMBOL(do_brk); + /* Build the RB tree corresponding to the VMA list. */ void build_mmap_rb(struct mm_struct * mm) { diff --git a/mm/page_alloc.c b/mm/page_alloc.c index c11774bf036ea..f7e0ff65f0628 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -679,6 +679,8 @@ got_pg: return page; } +EXPORT_SYMBOL(__alloc_pages); + /* * Common helper functions. */ @@ -692,6 +694,8 @@ unsigned long __get_free_pages(unsigned int gfp_mask, unsigned int order) return (unsigned long) page_address(page); } +EXPORT_SYMBOL(__get_free_pages); + unsigned long get_zeroed_page(unsigned int gfp_mask) { struct page * page; @@ -711,6 +715,8 @@ unsigned long get_zeroed_page(unsigned int gfp_mask) return 0; } +EXPORT_SYMBOL(get_zeroed_page); + void __pagevec_free(struct pagevec *pvec) { int i = pagevec_count(pvec); @@ -729,6 +735,8 @@ void __free_pages(struct page *page, unsigned int order) } } +EXPORT_SYMBOL(__free_pages); + void free_pages(unsigned long addr, unsigned int order) { if (addr != 0) { @@ -737,6 +745,8 @@ void free_pages(unsigned long addr, unsigned int order) } } +EXPORT_SYMBOL(free_pages); + /* * Total amount of free (allocatable) RAM: */ @@ -750,6 +760,7 @@ unsigned int nr_free_pages(void) return sum; } + EXPORT_SYMBOL(nr_free_pages); unsigned int nr_used_zone_pages(void) @@ -917,6 +928,8 @@ void si_meminfo(struct sysinfo *val) val->mem_unit = PAGE_SIZE; } +EXPORT_SYMBOL(si_meminfo); + #ifdef CONFIG_NUMA void si_meminfo_node(struct sysinfo *val, int nid) { @@ -1384,6 +1397,8 @@ void __init free_area_init_node(int nid, struct pglist_data *pgdat, static bootmem_data_t contig_bootmem_data; struct pglist_data contig_page_data = { .bdata = &contig_bootmem_data }; +EXPORT_SYMBOL(contig_page_data); + void __init free_area_init(unsigned long *zones_size) { free_area_init_node(0, &contig_page_data, NULL, zones_size, diff --git a/mm/readahead.c b/mm/readahead.c index 69f24b9ce4d2f..36ad9386af2a5 100644 --- a/mm/readahead.c +++ b/mm/readahead.c @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -19,6 +20,8 @@ struct backing_dev_info default_backing_dev_info = { .state = 0, }; +EXPORT_SYMBOL_GPL(default_backing_dev_info); + /* * Initialise a struct file's readahead state */ @@ -29,6 +32,8 @@ file_ra_state_init(struct file_ra_state *ra, struct address_space *mapping) ra->ra_pages = mapping->backing_dev_info->ra_pages; } +EXPORT_SYMBOL(file_ra_state_init); + /* * Return max readahead size for this inode in number-of-pages. */ @@ -89,6 +94,8 @@ int read_cache_pages(struct address_space *mapping, struct list_head *pages, return ret; } +EXPORT_SYMBOL(read_cache_pages); + static int read_pages(struct address_space *mapping, struct file *filp, struct list_head *pages, unsigned nr_pages) { diff --git a/mm/slab.c b/mm/slab.c index 3b216e910d5ec..f9a4359316808 100644 --- a/mm/slab.c +++ b/mm/slab.c @@ -466,6 +466,8 @@ struct cache_sizes malloc_sizes[] = { #undef CACHE }; +EXPORT_SYMBOL(malloc_sizes); + /* Must match cache_sizes above. Out of line to keep cache footprint low. */ static struct cache_names { char *name; @@ -1276,6 +1278,8 @@ opps: return cachep; } +EXPORT_SYMBOL(kmem_cache_create); + static inline void check_irq_off(void) { #if DEBUG @@ -1395,6 +1399,8 @@ int kmem_cache_shrink(kmem_cache_t *cachep) return __cache_shrink(cachep); } +EXPORT_SYMBOL(kmem_cache_shrink); + /** * kmem_cache_destroy - delete a cache * @cachep: the cache to destroy @@ -1446,6 +1452,8 @@ int kmem_cache_destroy (kmem_cache_t * cachep) return 0; } +EXPORT_SYMBOL(kmem_cache_destroy); + /* Get the memory for a slab management obj. */ static inline struct slab* alloc_slabmgmt (kmem_cache_t *cachep, void *objp, int colour_off, int local_flags) @@ -2064,6 +2072,8 @@ void * kmem_cache_alloc (kmem_cache_t *cachep, int flags) return __cache_alloc(cachep, flags); } +EXPORT_SYMBOL(kmem_cache_alloc); + /** * kmalloc - allocate memory * @size: how many bytes of memory are required. @@ -2105,6 +2115,8 @@ void * __kmalloc (size_t size, int flags) return NULL; } +EXPORT_SYMBOL(__kmalloc); + #ifdef CONFIG_SMP /** * __alloc_percpu - allocate one copy of the object for every present @@ -2144,6 +2156,8 @@ unwind_oom: kfree(pdata); return NULL; } + +EXPORT_SYMBOL(__alloc_percpu); #endif /** @@ -2163,6 +2177,8 @@ void kmem_cache_free (kmem_cache_t *cachep, void *objp) local_irq_restore(flags); } +EXPORT_SYMBOL(kmem_cache_free); + /** * kfree - free previously allocated memory * @objp: pointer returned by kmalloc. @@ -2184,6 +2200,8 @@ void kfree (const void *objp) local_irq_restore(flags); } +EXPORT_SYMBOL(kfree); + #ifdef CONFIG_SMP /** * free_percpu - free previously allocated percpu memory @@ -2204,6 +2222,8 @@ free_percpu(const void *objp) kfree(p->ptrs[i]); } } + +EXPORT_SYMBOL(free_percpu); #endif unsigned int kmem_cache_size(kmem_cache_t *cachep) @@ -2211,6 +2231,8 @@ unsigned int kmem_cache_size(kmem_cache_t *cachep) return obj_reallen(cachep); } +EXPORT_SYMBOL(kmem_cache_size); + kmem_cache_t * kmem_find_general_cachep (size_t size, int gfpflags) { struct cache_sizes *csizep = malloc_sizes; @@ -2227,6 +2249,8 @@ kmem_cache_t * kmem_find_general_cachep (size_t size, int gfpflags) return (gfpflags & GFP_DMA) ? csizep->cs_dmacachep : csizep->cs_cachep; } +EXPORT_SYMBOL(kmem_find_general_cachep); + struct ccupdate_struct { kmem_cache_t *cachep; struct array_cache *new[NR_CPUS]; diff --git a/mm/swap.c b/mm/swap.c index 37302961e371e..c519c8959eb5e 100644 --- a/mm/swap.c +++ b/mm/swap.c @@ -104,6 +104,8 @@ void mark_page_accessed(struct page *page) } } +EXPORT_SYMBOL(mark_page_accessed); + /** * lru_cache_add: add a page to the page lists * @page: the page to add @@ -162,6 +164,8 @@ void __page_cache_release(struct page *page) free_hot_page(page); } +EXPORT_SYMBOL(__page_cache_release); + /* * Batched page_cache_release(). Decrement the reference count on all the * passed pages. If it fell to zero then remove the page from the LRU and @@ -281,6 +285,8 @@ void __pagevec_lru_add(struct pagevec *pvec) pagevec_reinit(pvec); } +EXPORT_SYMBOL(__pagevec_lru_add); + void __pagevec_lru_add_active(struct pagevec *pvec) { int i; diff --git a/mm/truncate.c b/mm/truncate.c index 0f6706fcda185..33f7b51c3504c 100644 --- a/mm/truncate.c +++ b/mm/truncate.c @@ -9,6 +9,7 @@ #include #include +#include #include #include #include /* grr. try_to_release_page, @@ -175,6 +176,8 @@ void truncate_inode_pages(struct address_space *mapping, loff_t lstart) } } +EXPORT_SYMBOL(truncate_inode_pages); + /** * invalidate_mapping_pages - Invalidate all the unlocked pages of one inode * @mapping: the address_space which holds the pages to invalidate @@ -228,6 +231,8 @@ unsigned long invalidate_inode_pages(struct address_space *mapping) return invalidate_mapping_pages(mapping, 0, ~0UL); } +EXPORT_SYMBOL(invalidate_inode_pages); + /** * invalidate_inode_pages2 - remove all unmapped pages from an address_space * @mapping - the address_space @@ -264,3 +269,5 @@ void invalidate_inode_pages2(struct address_space *mapping) cond_resched(); } } + +EXPORT_SYMBOL_GPL(invalidate_inode_pages2); diff --git a/mm/vmalloc.c b/mm/vmalloc.c index e5d30c82e92f5..2d3022d2c8599 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -8,6 +8,7 @@ */ #include +#include #include #include #include @@ -324,6 +325,8 @@ void vfree(void *addr) __vunmap(addr, 1); } +EXPORT_SYMBOL(vfree); + /** * vunmap - release virtual mapping obtained by vmap() * @@ -340,6 +343,8 @@ void vunmap(void *addr) __vunmap(addr, 0); } +EXPORT_SYMBOL(vunmap); + /** * vmap - map an array of pages into virtually contiguous space * @@ -370,6 +375,8 @@ void *vmap(struct page **pages, unsigned int count, return area->addr; } +EXPORT_SYMBOL(vmap); + /** * __vmalloc - allocate virtually contiguous memory * @@ -425,6 +432,8 @@ fail: return NULL; } +EXPORT_SYMBOL(__vmalloc); + /** * vmalloc - allocate virtually contiguous memory * @@ -441,6 +450,8 @@ void *vmalloc(unsigned long size) return __vmalloc(size, GFP_KERNEL | __GFP_HIGHMEM, PAGE_KERNEL); } +EXPORT_SYMBOL(vmalloc); + /** * vmalloc_32 - allocate virtually contiguous memory (32bit addressable) * @@ -454,6 +465,8 @@ void *vmalloc_32(unsigned long size) return __vmalloc(size, GFP_KERNEL, PAGE_KERNEL); } +EXPORT_SYMBOL(vmalloc_32); + long vread(char *buf, char *addr, unsigned long count) { struct vm_struct *tmp; diff --git a/mm/vmscan.c b/mm/vmscan.c index f618384f7b1dc..32fd381325b90 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -12,6 +12,7 @@ */ #include +#include #include #include #include @@ -112,6 +113,8 @@ struct shrinker *set_shrinker(int seeks, shrinker_t theshrinker) return shrinker; } +EXPORT_SYMBOL(set_shrinker); + /* * Remove one */ @@ -122,6 +125,8 @@ void remove_shrinker(struct shrinker *shrinker) up(&shrinker_sem); kfree(shrinker); } + +EXPORT_SYMBOL(remove_shrinker); #define SHRINK_BATCH 128 /* -- 2.53.0