X-Git-Url: https://gapil.gnulinux.it/gitweb/?a=blobdiff_plain;f=fileadv.tex;h=9bd8e161bb3e2a0735f92d5dc13305d03fb4f154;hb=d2a164e13fb0e9c27585a3b50de57b08e966fd02;hp=557e895e05e61ea0b93b6052eb6c9878ddffe946;hpb=9f73b914dd06a22e137a9df7278a755c95e268ac;p=gapil.git diff --git a/fileadv.tex b/fileadv.tex index 557e895..9bd8e16 100644 --- a/fileadv.tex +++ b/fileadv.tex @@ -1871,7 +1871,7 @@ ad altri eventi generici) che, ispirandosi di nuovo alla filosofia di Unix per cui tutto è un file, consentisse di eseguire la notifica con l'uso di opportuni file descriptor.\footnote{ovviamente si tratta di una funzionalità specifica di Linux, non presente in altri sistemi unix-like, e non prevista - da nessuno standard.} + da nessuno standard, per cui va evitata se si ha a cuore la portabilità.} In sostanza, come per \func{sigwait}, si può disabilitare l'esecuzione di un gestore in occasione dell'arrivo di un segnale, e rilevarne l'avvenuta @@ -1961,7 +1961,15 @@ impostazione successiva con \func{fcntl}.\footnote{questo \label{tab:signalfd_flags} \end{table} -% TODO trattare qui eventfd signalfd e timerfd introdotte con il 2.6.22 +L'interfaccia fornita da \func{signalfd} prevede che la ricezione dei segnali +sia eseguita leggendo dal file descriptor restituito dalla funzione. La +lettura fornisce nel buffer indicato come secondo argomento alla funzione +\func{read} una o più strutture \struct{signalfd\_siginfo} a seconda della +dimensione dello stesso e del numero di segnali pendenti. Pertanto il buffer +deve essere almeno di dimensione pari a \code{sizeof(signalfd\_siginfo)}; se +di dimensione maggiore potranno essere letti in unica soluzione + +% TODO trattare qui eventfd, signalfd e timerfd introdotte con il 2.6.22 % timerfd è stata tolta nel 2.6.23 e rifatta per bene nel 2.6.25 % vedi: http://lwn.net/Articles/233462/ % http://lwn.net/Articles/245533/ @@ -2233,14 +2241,17 @@ rilasciato o declassato (che questo sia fatto dal \textit{lease holder} o dal kernel è lo stesso) le chiamate a \func{open} o \func{truncate} eseguite dal \textit{lease breaker} rimaste bloccate proseguono automaticamente. - -\itindbeg{dnotify} - Benché possa risultare utile per sincronizzare l'accesso ad uno stesso file da parte di più processi, l'uso dei \textit{file lease} non consente comunque di risolvere il problema di rilevare automaticamente quando un file o una -directory vengono modificati, che è quanto necessario ad esempio ai programma -di gestione dei file dei vari desktop grafici. +directory vengono modificati,\footnote{questa funzionalità venne aggiunta + principalmente ad uso di Samba per poter facilitare l'emulazione del + comportamento di Windows sui file, ma ad oggi viene considerata una + interfaccia mal progettata ed il suo uso è fortemente sconsigliato a favore + di \textit{inotify}.} che è quanto necessario ad esempio ai programma di +gestione dei file dei vari desktop grafici. + +\itindbeg{dnotify} Per risolvere questo problema a partire dal kernel 2.4 è stata allora creata un'altra interfaccia,\footnote{si ricordi che anche questa è una interfaccia @@ -2330,7 +2341,7 @@ numero di file). Infine l'uso dei segnali come interfaccia di notifica comporta tutti i problemi di gestione visti in sez.~\ref{sec:sig_management} e sez.~\ref{sec:sig_adv_control}. Per tutta questa serie di motivi in generale quella di \textit{dnotify} viene considerata una interfaccia di usabilità -problematica. +problematica ed il suo uso oggi è fortemente sconsigliato. \itindend{dnotify}