|
@@ -16,6 +16,7 @@
|
|
|
#include <linux/kobject.h>
|
|
|
#include <linux/moduleparam.h>
|
|
|
#include <linux/tracepoint.h>
|
|
|
+#include <linux/export.h>
|
|
|
|
|
|
#include <linux/percpu.h>
|
|
|
#include <asm/module.h>
|
|
@@ -25,21 +26,8 @@
|
|
|
/* Not Yet Implemented */
|
|
|
#define MODULE_SUPPORTED_DEVICE(name)
|
|
|
|
|
|
-/* Some toolchains use a `_' prefix for all user symbols. */
|
|
|
-#ifdef CONFIG_SYMBOL_PREFIX
|
|
|
-#define MODULE_SYMBOL_PREFIX CONFIG_SYMBOL_PREFIX
|
|
|
-#else
|
|
|
-#define MODULE_SYMBOL_PREFIX ""
|
|
|
-#endif
|
|
|
-
|
|
|
#define MODULE_NAME_LEN MAX_PARAM_PREFIX_LEN
|
|
|
|
|
|
-struct kernel_symbol
|
|
|
-{
|
|
|
- unsigned long value;
|
|
|
- const char *name;
|
|
|
-};
|
|
|
-
|
|
|
struct modversion_info
|
|
|
{
|
|
|
unsigned long crc;
|
|
@@ -98,11 +86,8 @@ void trim_init_extable(struct module *m);
|
|
|
extern const struct gtype##_id __mod_##gtype##_table \
|
|
|
__attribute__ ((unused, alias(__stringify(name))))
|
|
|
|
|
|
-extern struct module __this_module;
|
|
|
-#define THIS_MODULE (&__this_module)
|
|
|
#else /* !MODULE */
|
|
|
#define MODULE_GENERIC_TABLE(gtype,name)
|
|
|
-#define THIS_MODULE ((struct module *)0)
|
|
|
#endif
|
|
|
|
|
|
/* Generic info of form tag = "info" */
|
|
@@ -218,52 +203,6 @@ struct module_use {
|
|
|
struct module *source, *target;
|
|
|
};
|
|
|
|
|
|
-#ifndef __GENKSYMS__
|
|
|
-#ifdef CONFIG_MODVERSIONS
|
|
|
-/* Mark the CRC weak since genksyms apparently decides not to
|
|
|
- * generate a checksums for some symbols */
|
|
|
-#define __CRC_SYMBOL(sym, sec) \
|
|
|
- extern void *__crc_##sym __attribute__((weak)); \
|
|
|
- static const unsigned long __kcrctab_##sym \
|
|
|
- __used \
|
|
|
- __attribute__((section("___kcrctab" sec "+" #sym), unused)) \
|
|
|
- = (unsigned long) &__crc_##sym;
|
|
|
-#else
|
|
|
-#define __CRC_SYMBOL(sym, sec)
|
|
|
-#endif
|
|
|
-
|
|
|
-/* For every exported symbol, place a struct in the __ksymtab section */
|
|
|
-#define __EXPORT_SYMBOL(sym, sec) \
|
|
|
- extern typeof(sym) sym; \
|
|
|
- __CRC_SYMBOL(sym, sec) \
|
|
|
- static const char __kstrtab_##sym[] \
|
|
|
- __attribute__((section("__ksymtab_strings"), aligned(1))) \
|
|
|
- = MODULE_SYMBOL_PREFIX #sym; \
|
|
|
- static const struct kernel_symbol __ksymtab_##sym \
|
|
|
- __used \
|
|
|
- __attribute__((section("___ksymtab" sec "+" #sym), unused)) \
|
|
|
- = { (unsigned long)&sym, __kstrtab_##sym }
|
|
|
-
|
|
|
-#define EXPORT_SYMBOL(sym) \
|
|
|
- __EXPORT_SYMBOL(sym, "")
|
|
|
-
|
|
|
-#define EXPORT_SYMBOL_GPL(sym) \
|
|
|
- __EXPORT_SYMBOL(sym, "_gpl")
|
|
|
-
|
|
|
-#define EXPORT_SYMBOL_GPL_FUTURE(sym) \
|
|
|
- __EXPORT_SYMBOL(sym, "_gpl_future")
|
|
|
-
|
|
|
-
|
|
|
-#ifdef CONFIG_UNUSED_SYMBOLS
|
|
|
-#define EXPORT_UNUSED_SYMBOL(sym) __EXPORT_SYMBOL(sym, "_unused")
|
|
|
-#define EXPORT_UNUSED_SYMBOL_GPL(sym) __EXPORT_SYMBOL(sym, "_unused_gpl")
|
|
|
-#else
|
|
|
-#define EXPORT_UNUSED_SYMBOL(sym)
|
|
|
-#define EXPORT_UNUSED_SYMBOL_GPL(sym)
|
|
|
-#endif
|
|
|
-
|
|
|
-#endif
|
|
|
-
|
|
|
enum module_state
|
|
|
{
|
|
|
MODULE_STATE_LIVE,
|
|
@@ -581,11 +520,6 @@ int unregister_module_notifier(struct notifier_block * nb);
|
|
|
extern void print_modules(void);
|
|
|
|
|
|
#else /* !CONFIG_MODULES... */
|
|
|
-#define EXPORT_SYMBOL(sym)
|
|
|
-#define EXPORT_SYMBOL_GPL(sym)
|
|
|
-#define EXPORT_SYMBOL_GPL_FUTURE(sym)
|
|
|
-#define EXPORT_UNUSED_SYMBOL(sym)
|
|
|
-#define EXPORT_UNUSED_SYMBOL_GPL(sym)
|
|
|
|
|
|
/* Given an address, look for it in the exception tables. */
|
|
|
static inline const struct exception_table_entry *
|