How to write driver with load time parameter support?

Dan Nelson dnelson at allantgroup.com
Wed Dec 8 20:05:20 PST 2004


In the last episode (Dec 09), cm c said:
> I'm still not very clear the way to do this. Does this method do set
> the parameters at load time or after load ? Cause Linux can
>             insmod abc.o param=123;
> param is set to 123 when abc is linked to the kernel.

You would put something like

abc.param="123" in loader.conf or add it via kenv, and then in your
variable declaration area:

static int myparam = 0;
TUNABLE_INT("abc.param", &myparam);

That works for a module that can only be loaded once, and a static
tuneable name.  If you don't know the name of the tunable until your
driver is loaded, you can use the TUNABLE_INT_FETCH() macro in a
function.  Sysctls are recommended if you have a value that can be
changed after the module is loaded.

If you are writing a device driver, take a look at how if_fxp.c pulls
in per-device tunable/sysctls (search for bundle_max).

-- 
	Dan Nelson
	dnelson at allantgroup.com


More information about the freebsd-questions mailing list