signals



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 matters
C115?16 PCB & signal trace EU
V80 Signal flow? C L3 1 0
Constant darkness is a circadian metabolic signal
W220 Block Diagram signal
signal h (2)
Signals III
AVR32 AP7000 Signals
signal?C51333
Signaling Games and Gricean Pragmatics
rup signal?16C912
Signal handling
module signal
Signal Generator
SIGNAL STRUCT (2)
differential signals

więcej podobnych podstron