Kernel loadable modules - unresolved symbols

Jan Jirmasek jjir2125 na ss1000.ms.mff.cuni.cz
Čtvrtek Březen 12 23:33:15 CET 1998


Dobry den,

  uz delsi dobu resim mozna desne jednoduchy problem, potreboval bych asi
trknout tim spravnym smerem.
  Snazil jsem se napsat kernel loadable module, kterej by komunikoval s
jinym softem pres sockety. Po vzoru nfs clienta jsem si pridal do svych
headeru:
   extern asmlinkage int sys_socket(...);
protoze to standardne v includech neni a pak v modulu funkci prelozil.
Modul jsem prelozil, vse ok. Pri insmod mi to ale hlasi:
  ./module.o: unresolved symbol sys_socket

  Casem mi doslo, ze to bude asi tim, ze fce sys_socket neni standardne
exportovana, tak jsem natvrdo sahl do zdrojaku - pridal jsem do netsyms.c
radku:
  X(sys_socket),
ktera by to mela zaridit.

  Pak uz jenom make dep ; make clean, make zImage a z arch/i386/boot/ jsem
zImage zkopiroval do /boot + pridal image v lilu. Nic vic. Nabootoval jsem
nove zkompilovanej kernel a ejhle, ksyms -a mi sys_socket opet nevypisuje,
a opet mi to pri insmod hlasi unresolved symbol. (Radsi to pisu takhle
podrobne - co kdybych udelal chybu uz pri zavadeni novyho kernelu... ;-)

  To vsechno jsem zkousel v RH 5.0 pro 2.0.32 kernel. (Ja vim, ted me
budou vsichni vyvojari pranyrovat, jakto ze to nedelam pro 2.1.89, ale
problem mi prisel natolik principialni, ze mi bylo jedno, jestli to delam
zrovna pro 2.0.32)

  Mozna, ze existuje jeste nejaky jiny zpusob, jak jednoduse pouzivat TCP
pres sockety (treba existuje i jina fce, nez sys_socket pro alokaci
socketu), akorat o tom nevim.

  Predem diky za kazdou pomoc.

							Jim



-----------------------------------------
Jan Jirmasek, student MFF UK 
E-Mail: jjir2125 na ss1000.ms.mff.cuni.cz
-----------------------------------------



Další informace o konferenci Linux