From: Andreas Gruenbacher <agruen@suse.de>
To: Sam Ravnborg <sam@ravnborg.org>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Rusty Russell <rusty@rustcorp.com.au>
Subject: Re: [kbuild 4/5] Include type information as module info where possible
Date: Sun, 30 Jan 2005 23:06:11 +0100 [thread overview]
Message-ID: <200501302306.12139.agruen@suse.de> (raw)
In-Reply-To: <20050130155623.GA8408@mars.ravnborg.org>
[-- Attachment #1: Type: text/plain, Size: 217 bytes --]
On Sunday 30 January 2005 16:56, Sam Ravnborg wrote:
> Rusty got the original patch applied.
Not completely. The fix is attached.
Cheers,
--
Andreas Gruenbacher <agruen@suse.de>
SUSE Labs, SUSE LINUX PRODUCTS GMBH
[-- Attachment #2: module-parmtype.diff --]
[-- Type: text/x-diff, Size: 4477 bytes --]
From: Andreas Gruenbacher <agruen@suse.de>
Subject: Module parameter type fixes
The wrong version of the parmtype patch was merged, incompletely, and
the part that got merged got broken on the way. Here are the fixes:
Move __MODULE_INFO to modparam.h: This macro is used in modparam.h;
there are users who include this header but not module.h. The latter
includes modparam.h already.
__MODULE_INFO(parmtype, name##type, #name ":" #type) does not evaluate
to __MODULE_INFO(parmtype, footype, "foo:int") as was the idea, but to
__MODULE_INFO(parmtype, fooint, "foo:int") when type is bound to int.
In more complicated cases, we get syntax erros. Re-introduce the
__MODULE_PARM_TYPE macro; this is cleaner than renaming the type parameter.
Add the parmtype definition which was dropped during the merge to to the
obsolete but still heavily used MODULE_PARM macro.
Signed-off-by: Andreas Gruenbacher <agruen@suse.de>
Index: linux-2.6.11-rc2-bk8/include/linux/module.h
===================================================================
--- linux-2.6.11-rc2-bk8.orig/include/linux/module.h
+++ linux-2.6.11-rc2-bk8/include/linux/module.h
@@ -77,24 +77,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
@@ -560,7 +550,8 @@ static inline void MODULE_PARM_(void) {
/* DEPRECATED: Do not use. */
#define MODULE_PARM(var,type) \
struct obsolete_modparm __parm_##var __attribute__((section("__obsparm"))) = \
-{ __stringify(var), type, &MODULE_PARM_ };
+{ __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
Index: linux-2.6.11-rc2-bk8/include/linux/moduleparam.h
===================================================================
--- linux-2.6.11-rc2-bk8.orig/include/linux/moduleparam.h
+++ linux-2.6.11-rc2-bk8/include/linux/moduleparam.h
@@ -13,6 +13,19 @@
#define MODULE_PARAM_PREFIX __stringify(KBUILD_MODNAME) "."
#endif
+#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
+#else /* !MODULE */
+#define __MODULE_INFO(tag, name, info)
+#endif
+#define __MODULE_PARM_TYPE(name, _type) \
+ __MODULE_INFO(parmtype, name##type, #name ":" _type)
+
struct kernel_param;
/* Returns 0, or -errno. arg is in kp->arg. */
@@ -65,7 +78,7 @@ struct kparam_array
#define module_param_named(name, value, type, perm) \
param_check_##type(name, &(value)); \
module_param_call(name, param_set_##type, param_get_##type, &value, perm); \
- __MODULE_INFO(parmtype, name##type, #name ":" #type)
+ __MODULE_PARM_TYPE(name, #type)
#define module_param(name, type, perm) \
module_param_named(name, name, type, perm)
@@ -76,7 +89,7 @@ struct kparam_array
= { len, string }; \
module_param_call(name, param_set_copystring, param_get_string, \
&__param_string_##name, perm); \
- __MODULE_INFO(parmtype, name##type, #name ":string")
+ __MODULE_PARM_TYPE(name, "string")
/* Called on module insert or kernel boot */
extern int parse_args(const char *name,
@@ -138,7 +151,7 @@ extern int param_get_invbool(char *buffe
sizeof(array[0]), array }; \
module_param_call(name, param_array_set, param_array_get, \
&__param_arr_##name, perm); \
- __MODULE_INFO(parmtype, name##type, #name ":array of " #type)
+ __MODULE_PARM_TYPE(name, "array of " #type)
#define module_param_array(name, type, nump, perm) \
module_param_array_named(name, name, type, nump, perm)
next prev parent reply other threads:[~2005-01-30 22:06 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-01-18 18:41 [kbuild 0/5] Some of our patches Andreas Gruenbacher
2005-01-18 18:41 ` [kbuild 2/5] Dont use the running kernels config file by default Andreas Gruenbacher
2005-01-18 20:15 ` Roman Zippel
2005-01-19 17:51 ` Andreas Gruenbacher
2005-01-19 18:18 ` Roman Zippel
2005-01-19 18:42 ` Andreas Gruenbacher
2005-01-19 19:27 ` Roman Zippel
2005-01-19 23:41 ` Gerd Knorr
2005-01-18 18:41 ` [kbuild 3/5] Add cloneconfig target Andreas Gruenbacher
2005-01-18 18:41 ` [kbuild 1/5] Warn when building external modules without modversions Andreas Gruenbacher
2005-01-18 18:41 ` [kbuild 4/5] Include type information as module info where possible Andreas Gruenbacher
2005-01-19 16:14 ` Andreas Gruenbacher
2005-01-20 11:54 ` Andreas Gruenbacher
2005-01-30 15:56 ` Sam Ravnborg
2005-01-30 22:06 ` Andreas Gruenbacher [this message]
2005-01-30 22:19 ` Sam Ravnborg
2005-01-18 18:41 ` [kbuild 5/5] Dont include absolute filenames in binaries Andreas Gruenbacher
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200501302306.12139.agruen@suse.de \
--to=agruen@suse.de \
--cc=linux-kernel@vger.kernel.org \
--cc=rusty@rustcorp.com.au \
--cc=sam@ravnborg.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.