MORE FIXES: 2.1.31, i386_ksyms.c, SMP, missing syms, and modules (fwd)

tz@execpc.com
Sat, 5 Apr 1997 20:43:03 -0500


What follows is my current arch/i386/kernel/i386_ksyms.c and I did not do
a patch since it is short, and I would like someone to look at it before
replacing the file.

Other miscellaneous missing symbols:

boot_notifier_list needs to be added (with linux/notifier.h) to ksyms.c
ltalk_setup is a netsym not defined (with include/if_ltalk.h)
dlci_ioctl_hook is also a netsym not defined (copy the declaration in
drivers/net/dlci.c)

For the i386_ksyms:

Lots of modules need the __global stuff listed below (at for modules to
access).

In include/linux/tqueue.h I had to add:

#define queue_task_irq_off queue_task

or many more modules didn't compile.

The EXPORT_SYMBOL_NOVERS changes for SMP are needed for nfs.o to work as
a module.

The CONFIG_APM needed to be added for when APM is turned on, and the
declaration needs to not be static in time.c

tz@execpc.com
finger tz@execpc.com for PGP key
---cut-here---

#include <linux/config.h>
#include <linux/module.h>
#include <linux/smp.h>
#include <linux/user.h>
#include <linux/elfcore.h>
#include <linux/mca.h>
#include <linux/sched.h>
#include <linux/in6.h>

#include <asm/semaphore.h>
#include <asm/processor.h>
#include <asm/uaccess.h>
#include <asm/checksum.h>
#include <asm/system.h>
#include <asm/io.h>

#include <asm/hardirq.h>

extern void dump_thread(struct pt_regs *, struct user *);
extern int dump_fpu(elf_fpregset_t *);
extern void __lock_kernel(void);

/* platform dependent support */
EXPORT_SYMBOL(EISA_bus);
EXPORT_SYMBOL(MCA_bus);
EXPORT_SYMBOL(wp_works_ok);
EXPORT_SYMBOL(__verify_write);
EXPORT_SYMBOL(dump_thread);
EXPORT_SYMBOL(dump_fpu);
EXPORT_SYMBOL(__ioremap);
EXPORT_SYMBOL(iounmap);
EXPORT_SYMBOL_NOVERS(__down_failed);
EXPORT_SYMBOL_NOVERS(__down_failed_interruptible);
EXPORT_SYMBOL_NOVERS(__up_wakeup);

/* Networking helper routines. */
EXPORT_SYMBOL(csum_partial_copy);

/* for modules to access irq stuff */
EXPORT_SYMBOL(__global_cli);
EXPORT_SYMBOL(__global_sti);
EXPORT_SYMBOL(__global_save_flags);
EXPORT_SYMBOL(__global_restore_flags);
EXPORT_SYMBOL(tqueue_lock);
EXPORT_SYMBOL(waitqueue_lock);
EXPORT_SYMBOL(local_irq_count);
EXPORT_SYMBOL(global_irq_holder);

#ifdef __SMP__
#warning SMP is defined
EXPORT_SYMBOL(apic_reg); /* Needed internally for the I386 inlines */
EXPORT_SYMBOL(cpu_data);
EXPORT_SYMBOL_NOVERS(kernel_flag);
EXPORT_SYMBOL_NOVERS(active_kernel_processor);
EXPORT_SYMBOL(smp_invalidate_needed);
EXPORT_SYMBOL_NOVERS(__lock_kernel);
#endif

#ifdef CONFIG_MCA
/* Adapter probing and info methods. */
EXPORT_SYMBOL(mca_find_adapter);
EXPORT_SYMBOL(mca_write_pos);
EXPORT_SYMBOL(mca_read_pos);
EXPORT_SYMBOL(mca_read_stored_pos);
EXPORT_SYMBOL(mca_set_adapter_name);
EXPORT_SYMBOL(mca_get_adapter_name);
EXPORT_SYMBOL(mca_set_adapter_procfn);
EXPORT_SYMBOL(mca_isenabled);
EXPORT_SYMBOL(mca_isadapter);
#endif

#ifdef CONFIG_APM
unsigned long get_cmos_time(void);
EXPORT_SYMBOL(get_cmos_time);
#endif