* what means "module_param(channel_mask, channel_mask, 0644)"?
@ 2009-07-11 11:01 Robert P. J. Day
2009-07-11 11:07 ` Robert P. J. Day
2009-07-11 12:41 ` Paul Bolle
0 siblings, 2 replies; 4+ messages in thread
From: Robert P. J. Day @ 2009-07-11 11:01 UTC (permalink / raw)
To: Linux Kernel Mailing List
researching my next newbie column about module parameters and i ran
across the following:
drivers/input/misc/ati_remote2.c:module_param(channel_mask, channel_mask, 0644);
drivers/input/misc/ati_remote2.c:module_param(mode_mask, mode_mask, 0644);
i have no idea what it means to have the second (type) field of
module_param() simply repeat the name of the parameter. is this some
strange magic? those two names don't *appear* to be typedef'ed
anywhere i can see.
rday
--
========================================================================
Robert P. J. Day Waterloo, Ontario, CANADA
Linux Consulting, Training and Annoying Kernel Pedantry.
Web page: http://crashcourse.ca
Twitter: http://twitter.com/rpjday
"Kernel Newbie Corner" column @ linux.com: http://cli.gs/WG6WYX
========================================================================
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: what means "module_param(channel_mask, channel_mask, 0644)"? 2009-07-11 11:01 what means "module_param(channel_mask, channel_mask, 0644)"? Robert P. J. Day @ 2009-07-11 11:07 ` Robert P. J. Day 2009-07-11 12:41 ` Paul Bolle 1 sibling, 0 replies; 4+ messages in thread From: Robert P. J. Day @ 2009-07-11 11:07 UTC (permalink / raw) To: Linux Kernel Mailing List On Sat, 11 Jul 2009, Robert P. J. Day wrote: > researching my next newbie column about module parameters and i > ran across the following: > > drivers/input/misc/ati_remote2.c:module_param(channel_mask, channel_mask, 0644); > drivers/input/misc/ati_remote2.c:module_param(mode_mask, mode_mask, 0644); > > i have no idea what it means to have the second (type) field of > module_param() simply repeat the name of the parameter. is this > some strange magic? those two names don't *appear* to be typedef'ed > anywhere i can see. i should have added that the reason i ran across this was that i was curious if anyone was using User Defined Parameter Types as explained here: http://docs.blackfin.uclinux.org/doku.php?id=linux-kernel:module_parameters so i did a quick grep for any invocations of module_param() whose type wasn't one of the standard int, boot, short, ... etc ... and those two hits above showed up, which confused me. so ... *is* anyone taking advantage of user-defined module parameter types? not as i can tell, but maybe i just missed it. rday -- ======================================================================== Robert P. J. Day Waterloo, Ontario, CANADA Linux Consulting, Training and Annoying Kernel Pedantry. Web page: http://crashcourse.ca Twitter: http://twitter.com/rpjday "Kernel Newbie Corner" column @ linux.com: http://cli.gs/WG6WYX ======================================================================== ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: what means "module_param(channel_mask, channel_mask, 0644)"? 2009-07-11 11:01 what means "module_param(channel_mask, channel_mask, 0644)"? Robert P. J. Day 2009-07-11 11:07 ` Robert P. J. Day @ 2009-07-11 12:41 ` Paul Bolle 2009-07-11 12:40 ` Robert P. J. Day 1 sibling, 1 reply; 4+ messages in thread From: Paul Bolle @ 2009-07-11 12:41 UTC (permalink / raw) To: Robert P. J. Day; +Cc: Linux Kernel Mailing List On Sat, 2009-07-11 at 07:01 -0400, Robert P. J. Day wrote: > researching my next newbie column about module parameters and i ran > across the following: > > drivers/input/misc/ati_remote2.c:module_param(channel_mask, channel_mask, 0644); > drivers/input/misc/ati_remote2.c:module_param(mode_mask, mode_mask, 0644); > > i have no idea what it means to have the second (type) field of > module_param() simply repeat the name of the parameter. is this some > strange magic? those two names don't *appear* to be typedef'ed > anywhere i can see. See include/linux/moduleparam.h: /* Helper functions: type is byte, short, ushort, int, uint, long, ulong, charp, bool or invbool, or XXX if you define param_get_XXX, param_set_XXX and param_check_XXX. */ #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_PARM_TYPE(name, #type) #define module_param(name, type, perm) \ module_param_named(name, name, type, perm) And in drivers/input/misc/ati_remote2.c we find: #define param_check_channel_mask(name, p) __param_check(name, p, unsigned in #define param_set_channel_mask ati_remote2_set_channel_mask #define param_get_channel_mask ati_remote2_get_channel_mask module_param(channel_mask, channel_mask, 0644); [...] #define param_check_mode_mask(name, p) __param_check(name, p, unsigned int) #define param_set_mode_mask ati_remote2_set_mode_mask #define param_get_mode_mask ati_remote2_get_mode_mask module_param(mode_mask, mode_mask, 0644); To me that looks like two implementations of the three param_*_XXX functions described in the comment quoted above. Does that answer your question? Regards, Paul Bolle ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: what means "module_param(channel_mask, channel_mask, 0644)"? 2009-07-11 12:41 ` Paul Bolle @ 2009-07-11 12:40 ` Robert P. J. Day 0 siblings, 0 replies; 4+ messages in thread From: Robert P. J. Day @ 2009-07-11 12:40 UTC (permalink / raw) To: Paul Bolle; +Cc: Linux Kernel Mailing List On Sat, 11 Jul 2009, Paul Bolle wrote: > On Sat, 2009-07-11 at 07:01 -0400, Robert P. J. Day wrote: > > researching my next newbie column about module parameters and i ran > > across the following: > > > > drivers/input/misc/ati_remote2.c:module_param(channel_mask, channel_mask, 0644); > > drivers/input/misc/ati_remote2.c:module_param(mode_mask, mode_mask, 0644); > > > > i have no idea what it means to have the second (type) field of > > module_param() simply repeat the name of the parameter. is this some > > strange magic? those two names don't *appear* to be typedef'ed > > anywhere i can see. > > See include/linux/moduleparam.h: > /* Helper functions: type is byte, short, ushort, int, uint, long, > ulong, charp, bool or invbool, or XXX if you define param_get_XXX, > param_set_XXX and param_check_XXX. */ > #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_PARM_TYPE(name, #type) > > #define module_param(name, type, perm) \ > module_param_named(name, name, type, perm) > > And in drivers/input/misc/ati_remote2.c we find: > #define param_check_channel_mask(name, p) __param_check(name, p, unsigned in > #define param_set_channel_mask ati_remote2_set_channel_mask > #define param_get_channel_mask ati_remote2_get_channel_mask > module_param(channel_mask, channel_mask, 0644); > [...] > #define param_check_mode_mask(name, p) __param_check(name, p, unsigned int) > #define param_set_mode_mask ati_remote2_set_mode_mask > #define param_get_mode_mask ati_remote2_get_mode_mask > module_param(mode_mask, mode_mask, 0644); > > To me that looks like two implementations of the three param_*_XXX > functions described in the comment quoted above. > > Does that answer your question? yup. i was looking for something like that, i guess i just missed it. thanks. rday -- ======================================================================== Robert P. J. Day Waterloo, Ontario, CANADA Linux Consulting, Training and Annoying Kernel Pedantry. Web page: http://crashcourse.ca Twitter: http://twitter.com/rpjday "Kernel Newbie Corner" column @ linux.com: http://cli.gs/WG6WYX ======================================================================== ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2009-07-11 12:57 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2009-07-11 11:01 what means "module_param(channel_mask, channel_mask, 0644)"? Robert P. J. Day 2009-07-11 11:07 ` Robert P. J. Day 2009-07-11 12:41 ` Paul Bolle 2009-07-11 12:40 ` Robert P. J. Day
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.