|
@@ -16,15 +16,17 @@
|
|
/* Chosen so that structs with an unsigned long line up. */
|
|
/* Chosen so that structs with an unsigned long line up. */
|
|
#define MAX_PARAM_PREFIX_LEN (64 - sizeof(unsigned long))
|
|
#define MAX_PARAM_PREFIX_LEN (64 - sizeof(unsigned long))
|
|
|
|
|
|
-#ifdef MODULE
|
|
|
|
#define ___module_cat(a,b) __mod_ ## a ## b
|
|
#define ___module_cat(a,b) __mod_ ## a ## b
|
|
#define __module_cat(a,b) ___module_cat(a,b)
|
|
#define __module_cat(a,b) ___module_cat(a,b)
|
|
|
|
+#ifdef MODULE
|
|
#define __MODULE_INFO(tag, name, info) \
|
|
#define __MODULE_INFO(tag, name, info) \
|
|
static const char __module_cat(name,__LINE__)[] \
|
|
static const char __module_cat(name,__LINE__)[] \
|
|
__used __attribute__((section(".modinfo"), unused, aligned(1))) \
|
|
__used __attribute__((section(".modinfo"), unused, aligned(1))) \
|
|
= __stringify(tag) "=" info
|
|
= __stringify(tag) "=" info
|
|
#else /* !MODULE */
|
|
#else /* !MODULE */
|
|
-#define __MODULE_INFO(tag, name, info)
|
|
|
|
|
|
+/* This struct is here for syntactic coherency, it is not used */
|
|
|
|
+#define __MODULE_INFO(tag, name, info) \
|
|
|
|
+ struct __module_cat(name,__LINE__) {}
|
|
#endif
|
|
#endif
|
|
#define __MODULE_PARM_TYPE(name, _type) \
|
|
#define __MODULE_PARM_TYPE(name, _type) \
|
|
__MODULE_INFO(parmtype, name##type, #name ":" _type)
|
|
__MODULE_INFO(parmtype, name##type, #name ":" _type)
|