1 /**************************************************************************** 2 **************************************************************************** 3 *** 4 *** This header was automatically generated from a Linux kernel header 5 *** of the same name, to make information necessary for userspace to 6 *** call into the kernel available to libc. It contains only constants, 7 *** structures, and macros generated from the original header, and thus, 8 *** contains no copyrightable information. 9 *** 10 **************************************************************************** 11 ****************************************************************************/ 12 #ifndef _LINUX_MODULE_H 13 #define _LINUX_MODULE_H 14 15 #include <linux/sched.h> 16 #include <linux/spinlock.h> 17 #include <linux/list.h> 18 #include <linux/stat.h> 19 #include <linux/compiler.h> 20 #include <linux/cache.h> 21 #include <linux/kmod.h> 22 #include <linux/elf.h> 23 #include <linux/stringify.h> 24 #include <linux/kobject.h> 25 #include <linux/moduleparam.h> 26 #include <asm/local.h> 27 28 #include <asm/module.h> 29 30 #define MODULE_SUPPORTED_DEVICE(name) 31 32 #ifndef MODULE_SYMBOL_PREFIX 33 #define MODULE_SYMBOL_PREFIX "" 34 #endif 35 36 #define MODULE_NAME_LEN (64 - sizeof(unsigned long)) 37 38 struct kernel_symbol 39 { 40 unsigned long value; 41 const char *name; 42 }; 43 44 struct modversion_info 45 { 46 unsigned long crc; 47 char name[MODULE_NAME_LEN]; 48 }; 49 50 struct module; 51 52 struct module_attribute { 53 struct attribute attr; 54 ssize_t (*show)(struct module_attribute *, struct module *, char *); 55 ssize_t (*store)(struct module_attribute *, struct module *, 56 const char *, size_t count); 57 void (*setup)(struct module *, const char *); 58 int (*test)(struct module *); 59 void (*free)(struct module *); 60 }; 61 62 struct module_kobject 63 { 64 struct kobject kobj; 65 struct module *mod; 66 }; 67 68 struct exception_table_entry; 69 70 #ifdef MODULE 71 #define MODULE_GENERIC_TABLE(gtype,name) extern const struct gtype##_id __mod_##gtype##_table __attribute__ ((unused, alias(__stringify(name)))) 72 73 #define THIS_MODULE (&__this_module) 74 #else 75 #define MODULE_GENERIC_TABLE(gtype,name) 76 #define THIS_MODULE ((struct module *)0) 77 #endif 78 79 #define MODULE_INFO(tag, info) __MODULE_INFO(tag, tag, info) 80 81 #define MODULE_ALIAS(_alias) MODULE_INFO(alias, _alias) 82 83 #define MODULE_LICENSE(_license) MODULE_INFO(license, _license) 84 85 #define MODULE_AUTHOR(_author) MODULE_INFO(author, _author) 86 87 #define MODULE_DESCRIPTION(_description) MODULE_INFO(description, _description) 88 89 #define MODULE_PARM_DESC(_parm, desc) __MODULE_INFO(parm, _parm, #_parm ":" desc) 90 91 #define MODULE_DEVICE_TABLE(type,name) MODULE_GENERIC_TABLE(type##_device,name) 92 93 #define MODULE_VERSION(_version) MODULE_INFO(version, _version) 94 95 struct notifier_block; 96 97 #define EXPORT_SYMBOL(sym) 98 #define EXPORT_SYMBOL_GPL(sym) 99 #define EXPORT_SYMBOL_GPL_FUTURE(sym) 100 #define EXPORT_UNUSED_SYMBOL(sym) 101 #define EXPORT_UNUSED_SYMBOL_GPL(sym) 102 103 #define symbol_get(x) ({ extern typeof(x) x __attribute__((weak)); &(x); }) 104 #define symbol_put(x) do { } while(0) 105 #define symbol_put_addr(x) do { } while(0) 106 #define module_name(mod) "kernel" 107 #define __unsafe(mod) 108 #define module_put_and_exit(code) do_exit(code) 109 110 struct module; 111 112 #define symbol_request(x) try_then_request_module(symbol_get(x), "symbol:" #x) 113 #define __MODULE_STRING(x) __stringify(x) 114 #endif 115