linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / include / linux / module.h
index 14c0800..84d75f3 100644 (file)
@@ -48,8 +48,12 @@ struct module;
 
 struct module_attribute {
         struct attribute attr;
-        ssize_t (*show)(struct module *, char *);
-        ssize_t (*store)(struct module *, const char *, size_t count);
+        ssize_t (*show)(struct module_attribute *, struct module *, char *);
+        ssize_t (*store)(struct module_attribute *, struct module *,
+                        const char *, size_t count);
+       void (*setup)(struct module *, const char *);
+       int (*test)(struct module *);
+       void (*free)(struct module *);
 };
 
 struct module_kobject
@@ -76,24 +80,14 @@ void sort_main_extable(void);
 extern struct subsystem module_subsys;
 
 #ifdef MODULE
-#define ___module_cat(a,b) __mod_ ## a ## b
-#define __module_cat(a,b) ___module_cat(a,b)
-#define __MODULE_INFO(tag, name, info)                                   \
-static const char __module_cat(name,__LINE__)[]                                  \
-  __attribute_used__                                                     \
-  __attribute__((section(".modinfo"),unused)) = __stringify(tag) "=" info
-
 #define MODULE_GENERIC_TABLE(gtype,name)                       \
 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 __MODULE_INFO(tag, name, info)
 #define THIS_MODULE ((struct module *)0)
 #endif
 
@@ -206,10 +200,6 @@ void *__symbol_get_gpl(const char *symbol);
 
 #endif
 
-/* We don't mangle the actual symbol anymore, so no need for
- * special casing EXPORT_SYMBOL_NOVERS.  FIXME: Deprecated */
-#define EXPORT_SYMBOL_NOVERS(sym) EXPORT_SYMBOL(sym)
-
 struct module_ref
 {
        local_t count;
@@ -226,18 +216,18 @@ enum module_state
 #define MODULE_SECT_NAME_LEN 32
 struct module_sect_attr
 {
-       struct attribute attr;
+       struct module_attribute mattr;
        char name[MODULE_SECT_NAME_LEN];
        unsigned long address;
 };
 
-struct module_sections
+struct module_sect_attrs
 {
-       struct kobject kobj;
+       struct attribute_group grp;
        struct module_sect_attr attrs[0];
 };
 
-struct param_kobject;
+struct module_param_attrs;
 
 struct module
 {
@@ -250,8 +240,10 @@ struct module
        char name[MODULE_NAME_LEN];
 
        /* Sysfs stuff. */
-       struct module_kobject *mkobj;
-       struct param_kobject *params_kobject;
+       struct module_kobject mkobj;
+       struct module_param_attrs *param_attrs;
+       const char *version;
+       const char *srcversion;
 
        /* Exported symbols */
        const struct kernel_symbol *syms;
@@ -290,9 +282,6 @@ struct module
 
        /* Am I GPL-compatible */
        int license_gplok;
-       
-       /* Am I gpg signed */
-       int gpgsig_ok;
 
 #ifdef CONFIG_MODULE_UNLOAD
        /* Reference counts */
@@ -315,7 +304,7 @@ struct module
        char *strtab;
 
        /* Section attributes */
-       struct module_sections *sect_attrs;
+       struct module_sect_attrs *sect_attrs;
 #endif
 
        /* Per-cpu data. */
@@ -452,7 +441,6 @@ void module_remove_driver(struct device_driver *);
 #else /* !CONFIG_MODULES... */
 #define EXPORT_SYMBOL(sym)
 #define EXPORT_SYMBOL_GPL(sym)
-#define EXPORT_SYMBOL_NOVERS(sym)
 
 /* Given an address, look for it in the exception tables. */
 static inline const struct exception_table_entry *
@@ -566,8 +554,11 @@ static inline void MODULE_PARM_(void) { }
 #ifdef MODULE
 /* DEPRECATED: Do not use. */
 #define MODULE_PARM(var,type)                                              \
-struct obsolete_modparm __parm_##var __attribute__((section("__obsparm"))) = \
-{ __stringify(var), type, &MODULE_PARM_ };
+extern struct obsolete_modparm __parm_##var \
+__attribute__((section("__obsparm"))); \
+struct obsolete_modparm __parm_##var = \
+{ __stringify(var), type, &MODULE_PARM_ }; \
+__MODULE_PARM_TYPE(var, type);
 #else
 #define MODULE_PARM(var,type) static void __attribute__((__unused__)) *__parm_##var = &MODULE_PARM_;
 #endif
@@ -579,7 +570,6 @@ struct obsolete_modparm __parm_##var __attribute__((section("__obsparm"))) = \
 extern void __deprecated inter_module_register(const char *,
                struct module *, const void *);
 extern void __deprecated inter_module_unregister(const char *);
-extern const void * __deprecated inter_module_get(const char *);
 extern const void * __deprecated inter_module_get_request(const char *,
                const char *);
 extern void __deprecated inter_module_put(const char *);