[ Zekica @ 22.07.2002. 15:49 ] @
Imam jedan mali problem:

Pravim neki Linux Kernel modul. Kako da kreiram TCP/IP socket iz njega.
Naso sam neku dokumentaciju, u kojoj kaze da se koristi fajs sys/socketcall.h i procedura socketcall(). Imam kernel 2.4.2.

Unapred hvala!
[ papak @ 23.07.2002. 22:27 ] @
Posto ne znam vise detalja sto radis, evo ti obajsnjenje jedno.
Kako vjerovatno znas postoje dva space, user i kernel. Neka krenemo od user levela (zboh pojasnjenja). Program krene izvrsavati socket(), bind() ili connect(). To se predaje kernel strani pomocu sys_socketcall(), koja je locirana u /usr/src/linux/net/socket.c. Ta funkcija uzima argumente i selektira ekivalentne funkcije koje je user pozvao. Npr., ako je user pozvao socket() funkciju, sys_socketcall() ce prebaciti controlu sys_socket() funkciji.

sys_socket() funkcija je odgovorna za kreiranje memorije za novu socket strukuturu and inicijalizaciju nekih varijabli. U zavisnosti od vrste socketa, dodjeluje ops pointer relevantnoj proto_ops strukturi. proto_ops struktutra zadrzava function pointere za vrstu socketa koje razliicite funkcije su potrebne socketu.
Znaci, ako kennel treba kreirati sockete, koristi sys_socket(), sys_lister(), sys_bind(), a sysconnectcall() sluzi za vezu user i kernel spacea.

--br

papak
[ Zekica @ 24.07.2002. 15:22 ] @
OK, jasno, to je ono sto mi treba.