diff options
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/module.h | 27 | 
1 files changed, 27 insertions, 0 deletions
| diff --git a/include/linux/module.h b/include/linux/module.h index 8b17fd8c790d..50efcd3ae850 100644 --- a/include/linux/module.h +++ b/include/linux/module.h @@ -58,6 +58,12 @@ struct module_attribute {  	void (*free)(struct module *);  }; +struct module_version_attribute { +	struct module_attribute mattr; +	const char *module_name; +	const char *version; +}; +  struct module_kobject  {  	struct kobject kobj; @@ -161,7 +167,28 @@ extern struct module __this_module;    Using this automatically adds a checksum of the .c files and the    local headers in "srcversion".  */ + +#ifdef MODULE  #define MODULE_VERSION(_version) MODULE_INFO(version, _version) +#else +#define MODULE_VERSION(_version)					\ +	extern ssize_t __modver_version_show(struct module_attribute *,	\ +					     struct module *, char *);	\ +	static struct module_version_attribute __modver_version_attr	\ +	__used								\ +    __attribute__ ((__section__ ("__modver"),aligned(sizeof(void *)))) \ +	= {								\ +		.mattr	= {						\ +			.attr	= {					\ +				.name	= "version",			\ +				.mode	= S_IRUGO,			\ +			},						\ +			.show	= __modver_version_show,		\ +		},							\ +		.module_name	= KBUILD_MODNAME,			\ +		.version	= _version,				\ +	} +#endif  /* Optional firmware file (or files) needed by the module   * format is simply firmware file name.  Multiple firmware |