Hledáme parametry modulu

Některé (většina) z ovladačů umožňují specifikovat volby při jejich zavedení. Jak najít, které to jsou, když nerozumím zdrojovým textům?

Všechny parametry u jakéhokoli modulu jsou ve zdrojových textech definovány pomocí makra MODULE_PARM. Např. ve zdrojovém textu ovladače rtl8139.c (viz drivers/net/rtl8139.c) je uvedeno:

MODULE_AUTHOR("Donald Becker <becker@cesdis.gsfc.nasa.gov>");
MODULE_DESCRIPTION("RealTek RTL8129/8139 Fast Ethernet driver");
MODULE_PARM(options, "1-" __MODULE_STRING(MAX_UNITS) "i");
MODULE_PARM(full_duplex, "1-" __MODULE_STRING(MAX_UNITS) "i");
MODULE_PARM(multicast_filter_limit, "i");
MODULE_PARM(max_interrupt_work, "i");
MODULE_PARM(debug, "i");
Tento modul tedy akceptuje volby full_duplex, multicast_filter_limit, max_interrupt_work a debug. Hodnoty, kterých může volba nabýt, jsou určeny posledním parametrem makra MODULE_PARM. Např. písmeno i znamená, že parametr očekává celé číslo. Význam dalších písmen je v souboru include/linux/module.h:
/* Used to verify parameters given to the module.  The TYPE arg should
   be a string in the following format:
        [min[-max]]{b,h,i,l,s}
   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
*/
Pavel Janík

Můžete také zkusit přepínač -p příkazu modinfo.

/sbin/modinfo -p `/sbin/modprobe -l rtl8139.o`
/sbin/modinfo -p `/sbin/modprobe -l rtl8139` (v novějších instalacích)

vypíše podobný výsledek

options int array (min = 1, max = 8)
full_duplex int array (min = 1, max = 8)
multicast_filter_limit int
max_interrupt_work int
debug int

Pro nastavování síťových karet lze s výhodou použít program mii-tool z balíčku net-tools.

[zp]