diff options
Diffstat (limited to 'include/linux/module.h')
| -rw-r--r-- | include/linux/module.h | 30 |
1 files changed, 11 insertions, 19 deletions
diff --git a/include/linux/module.h b/include/linux/module.h index 84d75f3a8aca..eaec13ddd667 100644 --- a/include/linux/module.h +++ b/include/linux/module.h | |||
| @@ -183,6 +183,7 @@ void *__symbol_get_gpl(const char *symbol); | |||
| 183 | 183 | ||
| 184 | /* For every exported symbol, place a struct in the __ksymtab section */ | 184 | /* For every exported symbol, place a struct in the __ksymtab section */ |
| 185 | #define __EXPORT_SYMBOL(sym, sec) \ | 185 | #define __EXPORT_SYMBOL(sym, sec) \ |
| 186 | extern typeof(sym) sym; \ | ||
| 186 | __CRC_SYMBOL(sym, sec) \ | 187 | __CRC_SYMBOL(sym, sec) \ |
| 187 | static const char __kstrtab_##sym[] \ | 188 | static const char __kstrtab_##sym[] \ |
| 188 | __attribute__((section("__ksymtab_strings"))) \ | 189 | __attribute__((section("__ksymtab_strings"))) \ |
| @@ -198,6 +199,9 @@ void *__symbol_get_gpl(const char *symbol); | |||
| 198 | #define EXPORT_SYMBOL_GPL(sym) \ | 199 | #define EXPORT_SYMBOL_GPL(sym) \ |
| 199 | __EXPORT_SYMBOL(sym, "_gpl") | 200 | __EXPORT_SYMBOL(sym, "_gpl") |
| 200 | 201 | ||
| 202 | #define EXPORT_SYMBOL_GPL_FUTURE(sym) \ | ||
| 203 | __EXPORT_SYMBOL(sym, "_gpl_future") | ||
| 204 | |||
| 201 | #endif | 205 | #endif |
| 202 | 206 | ||
| 203 | struct module_ref | 207 | struct module_ref |
| @@ -242,6 +246,7 @@ struct module | |||
| 242 | /* Sysfs stuff. */ | 246 | /* Sysfs stuff. */ |
| 243 | struct module_kobject mkobj; | 247 | struct module_kobject mkobj; |
| 244 | struct module_param_attrs *param_attrs; | 248 | struct module_param_attrs *param_attrs; |
| 249 | struct module_attribute *modinfo_attrs; | ||
| 245 | const char *version; | 250 | const char *version; |
| 246 | const char *srcversion; | 251 | const char *srcversion; |
| 247 | 252 | ||
| @@ -255,6 +260,11 @@ struct module | |||
| 255 | unsigned int num_gpl_syms; | 260 | unsigned int num_gpl_syms; |
| 256 | const unsigned long *gpl_crcs; | 261 | const unsigned long *gpl_crcs; |
| 257 | 262 | ||
| 263 | /* symbols that will be GPL-only in the near future. */ | ||
| 264 | const struct kernel_symbol *gpl_future_syms; | ||
| 265 | unsigned int num_gpl_future_syms; | ||
| 266 | const unsigned long *gpl_future_crcs; | ||
| 267 | |||
| 258 | /* Exception table */ | 268 | /* Exception table */ |
| 259 | unsigned int num_exentries; | 269 | unsigned int num_exentries; |
| 260 | const struct exception_table_entry *extable; | 270 | const struct exception_table_entry *extable; |
| @@ -441,6 +451,7 @@ void module_remove_driver(struct device_driver *); | |||
| 441 | #else /* !CONFIG_MODULES... */ | 451 | #else /* !CONFIG_MODULES... */ |
| 442 | #define EXPORT_SYMBOL(sym) | 452 | #define EXPORT_SYMBOL(sym) |
| 443 | #define EXPORT_SYMBOL_GPL(sym) | 453 | #define EXPORT_SYMBOL_GPL(sym) |
| 454 | #define EXPORT_SYMBOL_GPL_FUTURE(sym) | ||
| 444 | 455 | ||
| 445 | /* Given an address, look for it in the exception tables. */ | 456 | /* Given an address, look for it in the exception tables. */ |
| 446 | static inline const struct exception_table_entry * | 457 | static inline const struct exception_table_entry * |
| @@ -544,25 +555,6 @@ static inline void module_remove_driver(struct device_driver *driver) | |||
| 544 | 555 | ||
| 545 | /* BELOW HERE ALL THESE ARE OBSOLETE AND WILL VANISH */ | 556 | /* BELOW HERE ALL THESE ARE OBSOLETE AND WILL VANISH */ |
| 546 | 557 | ||
| 547 | struct obsolete_modparm { | ||
| 548 | char name[64]; | ||
| 549 | char type[64-sizeof(void *)]; | ||
| 550 | void *addr; | ||
| 551 | }; | ||
| 552 | |||
| 553 | static inline void MODULE_PARM_(void) { } | ||
| 554 | #ifdef MODULE | ||
| 555 | /* DEPRECATED: Do not use. */ | ||
| 556 | #define MODULE_PARM(var,type) \ | ||
| 557 | extern struct obsolete_modparm __parm_##var \ | ||
| 558 | __attribute__((section("__obsparm"))); \ | ||
| 559 | struct obsolete_modparm __parm_##var = \ | ||
| 560 | { __stringify(var), type, &MODULE_PARM_ }; \ | ||
| 561 | __MODULE_PARM_TYPE(var, type); | ||
| 562 | #else | ||
| 563 | #define MODULE_PARM(var,type) static void __attribute__((__unused__)) *__parm_##var = &MODULE_PARM_; | ||
| 564 | #endif | ||
| 565 | |||
| 566 | #define __MODULE_STRING(x) __stringify(x) | 558 | #define __MODULE_STRING(x) __stringify(x) |
| 567 | 559 | ||
| 568 | /* Use symbol_get and symbol_put instead. You'll thank me. */ | 560 | /* Use symbol_get and symbol_put instead. You'll thank me. */ |
