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!
Sad ja znam zašto sam vam ovo ispričao, ovo će sigurno nekome koristiti....
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
23.07.2002. u 22:27
Zekica Filip Milivojević Freelance Web Developer Pirot, Niš