Passing modules parameters

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From English to

I'm working on a device driver under Linux 2.2.13. I have some parameters
defined and want to pass the values when doing the insmod.
I did some thing as follow:
insmod driver.o param1=xx
added a line in /etc/conf.modules file: options driver param1=xx.
Both of them can't pass the parameter value to the driver.
The insmod version is 2.1.121. I knew it's pretty old one. But I think it
should work.

The parameters are put in the .sdata section by the compile. I have checked
the modules.h and found code as follow:
Is there any difference between using .sdata section and .modinfo section?


#if defined(MODULE) && !defined(__GENKSYMS__)
/* Embedded module documentation macros. */

/* For documentation purposes only. */

#define MODULE_AUTHOR(name) \
const char __module_author[] __attribute__((section(".modinfo"))) = \
"author=" name

#define MODULE_DESCRIPTION(desc) \
const char __module_description[] __attribute__((section(".modinfo"))) = \
"description=" desc

/* Could potentially be used by kmod... */

const char __module_device[] __attribute__((section(".modinfo"))) = \
"device=" dev

/* Used to verify parameters given to the module. The TYPE arg should
be a string in the following format:
The MIN and MAX specifiers delimit the length of the array. If MAX
is omitted, it defaults to MIN; if both are omitted, the default is 1.
The final character is a type specifier:
b byte
h short
i int
l long
s string

#define MODULE_PARM(var,type) \
const char __module_parm_##var[] \
__attribute__((section(".modinfo"))) = \
"parm_" __MODULE_STRING(var) "=" type

#define MODULE_PARM_DESC(var,desc) \
const char __module_parm_desc_##var[] \
__attribute__((section(".modinfo"))) = \
"parm_desc_" __MODULE_STRING(var) "=" desc

/* The attributes of a section are set the first time the section is
seen; we want .modinfo to not be allocated. */

__asm__(".section .modinfo\n\t.previous");

/* Define the module variable, and usage macros. */
extern struct module __this_module;

#define MOD_INC_USE_COUNT __MOD_INC_USE_COUNT(&__this_module)
#define MOD_DEC_USE_COUNT __MOD_DEC_USE_COUNT(&__this_module)
#define MOD_IN_USE __MOD_IN_USE(&__this_module)

#ifndef __NO_VERSION__
#include <linux/version.h>
const char __module_kernel_version[] __attribute__((section(".modinfo"))) =
"kernel_version=" UTS_RELEASE;
const char __module_using_checksums[] __attribute__((section(".modinfo"))) =

#else /* MODULE */

#define MODULE_AUTHOR(name)
#define MODULE_PARM(var,type)
#define MODULE_PARM_DESC(var,desc)

#ifndef __GENKSYMS__

#define MOD_INC_USE_COUNT do { } while (0)
#define MOD_DEC_USE_COUNT do { } while (0)
#define MOD_IN_USE 1

extern struct module *module_list;

#endif /* !__GENKSYMS__ */

#endif /* MODULE */

Site Timeline