Jde prelozit pouze jeden modul? (programatorske)

Zdeněk Böhm zdenek.bohm na gammarus.cz
Úterý Leden 2 14:22:06 CET 2001


Ahoj,

> Ano, muzete jej prelozit samostatne, ale musite definovat konstanty
> __KERNEL__ a MODULE a pouzit optimalizaci alespon druhe urovne.

k prelozeni jsem pouzil nasledujici zapis:

gcc -D__KERNEL__ -I/usr/src/linux-2.2.14/include -Wall -Wstrict-prototypes -
O2 -fomit-frame-pointer -fno-strict-aliasing -pipe -fno-strength-reduce -m38
6 -DCPU=386 -DMODULE -DMODVERSIONS -include
/usr/src/linux-2.2.14/include/linux/modversions.h   -c -o seeq8005.o
seeq8005.c

bohuzel misto prelozeneho modulu jsem dostal nasledujici hlasku:

seeq8005.c:753: parse error before string constant
seeq8005.c:753: warning: type defaults to `int' in declaration of
`MODULE_PARM'
seeq8005.c:753: warning: function declaration isn't a prototype
seeq8005.c:753: warning: data definition has no type or storage class
seeq8005.c:754: parse error before string constant
seeq8005.c:754: warning: type defaults to `int' in declaration of
`MODULE_PARM'
seeq8005.c:754: warning: function declaration isn't a prototype
seeq8005.c:754: warning: data definition has no type or storage class
seeq8005.c: In function `cleanup_module':
seeq8005.c:783: `EL1_IO_EXTENT' undeclared (first use in this function)
seeq8005.c:783: (Each undeclared identifier is reported only once
seeq8005.c:783: for each function it appears in.)

chyby EL1_IO_EXTENT jsem se zbavil celkem jednoduse, zjevne autor pouzil
jako podklad jiz existujici modul a prepsal ho a tohle zapomel zmenit, takze
jsem to prepsal na SEEQ8005_IO_EXTENT a posledni ctyri radky hlasky se uz
nezobrazuji,
ale s tim zbytkem si nevim rady. Chybne radky jsou tyto (pridal jsem
cislovani radku):

751: static int io=0x320;
752: static int irq=10;
753: MODULE_PARM(io, "i");
754: MODULE_PARM(irq, "i");

koukl jsem se do zdrojaku jinych modulu (tech, ktere jdou bez problemu
prelozit - vyzkouseno) a namatkou treba v modulu depca.c je toto:

static int irq=7; /* EDIT THESE LINE FOR YOUR CONFIGURATION */
static int io=0x200;    /* Or use the irq= io= options to insmod */
MODULE_PARM(irq, "i");
MODULE_PARM(io, "i");

At premyslim, jak premyslim, je to temer identicke (az na ty hodnoty a
komentar) a pritom ten prvni modul prelozit nejde a ten druhy jo. Kde je
problem?

Diky Zdenek Bohm

P.S. oba zdrojaky (seeq8005.c i depca.c) jsou z baliku kernel-source z
distribuce Red Hat 6.2 CZ (Computer Press)



Další informace o konferenci Linux