Sygnaly zwiazane z gniazdami
Do spisu tresci tematu 9
Sygnaly zwiazane z gniazdami
Spis tresci
SIGIO
SIGURG
SIGPIPE
Bibliografia
Sygnal SIGIO
Ten sygnal wskazuje, ze gniazdo jest gotowe do wykonania operacji
wejscia-wyjscia. Sygnal jest wysylany do grupy procesow dla tego gniazda.
Grupe procesow ustanawia sie w wyniku wywolania funkcji systemowej ioctl
z okreslona opcja FIOSETOWN lub SIOCSPGRP,
albo funkcji systemowej fcntl z opcja F_SETOWN.
Sygnal ten jest wysylany do grupy procesow tylko wtedy, gdy proces - wywolujac
funkcje ioctl z opcja FIOASYNC lub funkcje
fcntl z opcja F_SETFL - udostepnil mozliwosc korzystania z
wejscia-wyjscia asynchronicznego w odniesieniu do danego gniazda.
Implementacja
Podczas tworzenia gniazda, wykonywane sa przypisania (sk - wskaznik na strukture
sock ):
sk->state_change = def_callback1;
sk->data_ready = def_callback2;
sk->write_space = def_callback3;
sk->error_report = def_callback1;
def_callback* sa to wskazniki na funkcje,zdefiniowane w odpowiednim pliku
af_inet lub af_unix. Tak wiec, kiedy np. naplyna do gniazda dane, zostanie
wykonana instrukcja sk->data_ready(...) - czyli def_callback2. Ta z kolei
wywola sock_wake_async(...), ktora wreszcie wywola kill_fasync(...) .Ta
ostatnia funkcja, zdefiniowana w fs/fcntl.c, wysle do wszystkich procesow
z listy nasze_gniazdo->fasync_list sygnal SIGIO.
Sygnal SIGURG
Ten sygnal wskazuje, ze gniazda dotyczy jakas sytuacja pilna.
Jest to albo nadejscie danych wysokopriorytetowych do gniazda (protokol TCP),
albo obecnosc informacji o stanie sterowania, ktora trzeba odebrac od czesci
nadrzednej pseudoterminala pracujacego w trybie pakietowym. Sygnal jest
wysylany do grupy procesow dla tego gniazda.
Sygnal SIGURG jest generowany przez warstwe TCP ( plik ip4/tcp_input.c, linia
1612 ).
Sygnal SIGPIPE
Ten sygnal wskazuje, ze nie mozemy juz dluzej wysylac danych do gniazda,lacza
komunikacyjnego lub kolejki FIFO - bo, na przyklad, zaden proces nie "slucha
na drugim koncu" lacza. Proces nie musi niczego specjalnego robic w celu
odebrania tego sygnalu, ale jesli proces go nie przechwyci, to czynnoscia
domyslna jest zakonczenie procesu. Sygnal jest wysylany tylko do procesu
zwiazanego z danym gniazdem, nie dotyczy zas grupy procesow.
SIGPIPE moze byc wyslany z funkcji sendmsg ( tu jest jej
opis ), a takze przez warstwe TCP
( funkcja do_tcp_sendmsg, plik i4/tcp.c ).
Bibliografia
Zrodla kernela Linuxa 2.0.0 +
Linux Navigator
W. Stevens "Programowanie zastosowan sieciowych"
Autor: Rafal Wojtczuk
Wyszukiwarka
Podobne podstrony:
when signal integrity mattersC115?16 PCB & signal trace EUV80 Signal flow? C L3 1 0Constant darkness is a circadian metabolic signalW220 Block Diagram signalsignal h (2)Signals IIIAVR32 AP7000 Signalssignal?C51333Signaling Games and Gricean Pragmaticsrup signal?16C912Signal handlingmodule signalSignal GeneratorSIGNAL STRUCT (2)differential signalswięcej podobnych podstron