Aggiornamento note copyright e I/O Asyncrono
authorSimone Piccardi <piccardi@gnulinux.it>
Sat, 17 Jan 2015 20:06:19 +0000 (20:06 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Sat, 17 Jan 2015 20:06:19 +0000 (20:06 +0000)
26 files changed:
build.tex
errors.tex
fileadv.tex
filedir.tex
fileio.tex
gapil.tex
intro.tex
ipc.tex
macro.tex
netlayer.tex
network.tex
othersock.tex
preambolo.tex
pref.tex
process.tex
prochand.tex
ringraziamenti.tex
session.tex
signal.tex
sockadv.tex
sockctrl.tex
socket.tex
system.tex
tcpsock.tex
thread.tex
trasplayer.tex

index 01dbb5995cd7e993df82a96f9956c0b306ed7a2a..d124f854f0ec43d564dc79b24c649d28fb5234dc 100644 (file)
--- a/build.tex
+++ b/build.tex
@@ -1,6 +1,6 @@
 %% build.tex
 %%
 %% build.tex
 %%
-%% Copyright (C) 1999-2014 Simone Piccardi.  Permission is granted to copy,
+%% Copyright (C) 1999-2015 Simone Piccardi.  Permission is granted to copy,
 %% distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
 %% distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
index 5b111820dd426777ac2cefa6451b29bec2a2c6ae..7eb8a26bff5477d014a2f2558b7ef781080a51dc 100644 (file)
@@ -1,6 +1,6 @@
 %% errors.tex
 %%
 %% errors.tex
 %%
-%% Copyright (C) 2000-2014 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2015 Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
index 4410d6b126c0193c1703f3d0ab70da7bfe737440..dd0550bb217889eec63594533ddfcb13cb6ddd03 100644 (file)
@@ -1,6 +1,6 @@
 %% fileadv.tex
 %%
 %% fileadv.tex
 %%
-%% Copyright (C) 2000-2014 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2015 Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
@@ -8,6 +8,7 @@
 %% license is included in the section entitled "GNU Free Documentation
 %% License".
 %%
 %% license is included in the section entitled "GNU Free Documentation
 %% License".
 %%
+
 \chapter{La gestione avanzata dei file}
 \label{cha:file_advanced}
 In questo capitolo affronteremo le tematiche relative alla gestione avanzata
 \chapter{La gestione avanzata dei file}
 \label{cha:file_advanced}
 In questo capitolo affronteremo le tematiche relative alla gestione avanzata
@@ -3514,14 +3515,14 @@ dedicate per la lettura e la scrittura dei file, completamente separate
 rispetto a quelle usate normalmente.
 
 In generale questa interfaccia è completamente astratta e può essere
 rispetto a quelle usate normalmente.
 
 In generale questa interfaccia è completamente astratta e può essere
-implementata sia direttamente nel kernel, che in user space attraverso l'uso
-di \itindex{thread} \textit{thread}. Per le versioni del kernel meno recenti
+implementata sia direttamente nel kernel che in user space attraverso l'uso di
+\itindex{thread} \textit{thread}. Per le versioni del kernel meno recenti
 esiste una implementazione di questa interfaccia fornita completamente delle
 \acr{glibc} a partire dalla versione 2.1, che è realizzata completamente in
 user space, ed è accessibile linkando i programmi con la libreria
 esiste una implementazione di questa interfaccia fornita completamente delle
 \acr{glibc} a partire dalla versione 2.1, che è realizzata completamente in
 user space, ed è accessibile linkando i programmi con la libreria
-\file{librt}. Nelle versioni più recenti (a partire dalla 2.5.32) è stato
-introdotto nel kernel un nuovo layer per l'I/O asincrono, ma ancora il
-supporto è parziale ed insufficiente ad implementare l'AIO POSIX. 
+\file{librt}. A partire dalla versione 2.5.32 è stato introdotto nel kernel
+una nuova infrastruttura per l'I/O asincrono, ma ancora il supporto è parziale
+ed insufficiente ad implementare tutto l'AIO POSIX.
 
 Lo standard POSIX prevede che tutte le operazioni di I/O asincrono siano
 controllate attraverso l'uso di una apposita struttura \struct{aiocb} (il cui
 
 Lo standard POSIX prevede che tutte le operazioni di I/O asincrono siano
 controllate attraverso l'uso di una apposita struttura \struct{aiocb} (il cui
@@ -3557,16 +3558,16 @@ l'indirizzo del buffer usato per l'I/O, ed in \var{aio\_nbytes} la lunghezza
 del blocco di dati da trasferire.
 
 Il campo \var{aio\_reqprio} permette di impostare la priorità delle operazioni
 del blocco di dati da trasferire.
 
 Il campo \var{aio\_reqprio} permette di impostare la priorità delle operazioni
-di I/O.\footnote{in generale perché ciò sia possibile occorre che la
-  piattaforma supporti questa caratteristica, questo viene indicato definendo
-  le macro \macro{\_POSIX\_PRIORITIZED\_IO}, e
-  \macro{\_POSIX\_PRIORITY\_SCHEDULING}.} La priorità viene impostata a
-partire da quella del processo chiamante (vedi sez.~\ref{sec:proc_priority}),
-cui viene sottratto il valore di questo campo.  Il campo
-\var{aio\_lio\_opcode} è usato solo dalla funzione \func{lio\_listio}, che,
-come vedremo, permette di eseguire con una sola chiamata una serie di
-operazioni, usando un vettore di \textit{control block}. Tramite questo campo
-si specifica quale è la natura di ciascuna di esse.
+di I/O, in generale perché ciò sia possibile occorre che la piattaforma
+supporti questa caratteristica, questo viene indicato dal fatto che le macro
+\macro{\_POSIX\_PRIORITIZED\_IO}, e \macro{\_POSIX\_PRIORITY\_SCHEDULING} sono
+definite. La priorità viene impostata a partire da quella del processo
+chiamante (vedi sez.~\ref{sec:proc_priority}), cui viene sottratto il valore
+di questo campo.  Il campo \var{aio\_lio\_opcode} è usato solo dalla funzione
+\func{lio\_listio}, che, come vedremo, permette di eseguire con una sola
+chiamata una serie di operazioni, usando un vettore di \textit{control
+  block}. Tramite questo campo si specifica quale è la natura di ciascuna di
+esse.
 
 Infine il campo \var{aio\_sigevent} è una struttura di tipo \struct{sigevent}
 (illustrata in in fig.~\ref{fig:struct_sigevent}) che serve a specificare il
 
 Infine il campo \var{aio\_sigevent} è una struttura di tipo \struct{sigevent}
 (illustrata in in fig.~\ref{fig:struct_sigevent}) che serve a specificare il
@@ -3576,7 +3577,7 @@ stessa si veda quanto già visto in proposito in sez.~\ref{sec:sig_timer_adv}.
 
 Le due funzioni base dell'interfaccia per l'I/O asincrono sono
 \funcd{aio\_read} ed \funcd{aio\_write}.  Esse permettono di richiedere una
 
 Le due funzioni base dell'interfaccia per l'I/O asincrono sono
 \funcd{aio\_read} ed \funcd{aio\_write}.  Esse permettono di richiedere una
-lettura od una scrittura asincrona di dati, usando la struttura \struct{aiocb}
+lettura od una scrittura asincrona di dati usando la struttura \struct{aiocb}
 appena descritta; i rispettivi prototipi sono:
 
 \begin{funcproto}{
 appena descritta; i rispettivi prototipi sono:
 
 \begin{funcproto}{
@@ -3590,11 +3591,11 @@ appena descritta; i rispettivi prototipi sono:
 {Le funzioni ritornano $0$ in caso di successo e $-1$ per un errore, nel qual
   caso \var{errno} assumerà uno dei valori: 
   \begin{errlist}
 {Le funzioni ritornano $0$ in caso di successo e $-1$ per un errore, nel qual
   caso \var{errno} assumerà uno dei valori: 
   \begin{errlist}
+  \item[\errcode{EAGAIN}] la coda delle richieste è momentaneamente piena.
   \item[\errcode{EBADF}] si è specificato un file descriptor sbagliato.
   \item[\errcode{EBADF}] si è specificato un file descriptor sbagliato.
-  \item[\errcode{ENOSYS}] la funzione non è implementata.
   \item[\errcode{EINVAL}] si è specificato un valore non valido per i campi
     \var{aio\_offset} o \var{aio\_reqprio} di \param{aiocbp}.
   \item[\errcode{EINVAL}] si è specificato un valore non valido per i campi
     \var{aio\_offset} o \var{aio\_reqprio} di \param{aiocbp}.
-  \item[\errcode{EAGAIN}] la coda delle richieste è momentaneamente piena.
+  \item[\errcode{ENOSYS}] la funzione non è implementata.
   \end{errlist}
 }
 \end{funcproto}
   \end{errlist}
 }
 \end{funcproto}
@@ -3605,24 +3606,20 @@ richiesta, o in caso di errore. Non è detto che gli errori \errcode{EBADF} ed
 \errcode{EINVAL} siano rilevati immediatamente al momento della chiamata,
 potrebbero anche emergere nelle fasi successive delle operazioni. Lettura e
 scrittura avvengono alla posizione indicata da \var{aio\_offset}, a meno che
 \errcode{EINVAL} siano rilevati immediatamente al momento della chiamata,
 potrebbero anche emergere nelle fasi successive delle operazioni. Lettura e
 scrittura avvengono alla posizione indicata da \var{aio\_offset}, a meno che
-il file non sia stato aperto in \itindex{append~mode} \textit{append mode}
-(vedi sez.~\ref{sec:file_open_close}), nel qual caso le scritture vengono
-effettuate comunque alla fine de file, nell'ordine delle chiamate a
-\func{aio\_write}.
+il file non sia stato aperto in \textit{append mode} (vedi
+sez.~\ref{sec:file_open_close}), nel qual caso le scritture vengono effettuate
+comunque alla fine del file, nell'ordine delle chiamate a \func{aio\_write}.
 
 Si tenga inoltre presente che deallocare la memoria indirizzata da
 \param{aiocbp} o modificarne i valori prima della conclusione di una
 operazione può dar luogo a risultati impredicibili, perché l'accesso ai vari
 campi per eseguire l'operazione può avvenire in un momento qualsiasi dopo la
 
 Si tenga inoltre presente che deallocare la memoria indirizzata da
 \param{aiocbp} o modificarne i valori prima della conclusione di una
 operazione può dar luogo a risultati impredicibili, perché l'accesso ai vari
 campi per eseguire l'operazione può avvenire in un momento qualsiasi dopo la
-richiesta.  Questo comporta che non si devono usare per \param{aiocbp}
+richiesta. Questo comporta che non si devono usare per \param{aiocbp}
 \index{variabili!automatiche} variabili automatiche e che non si deve
 riutilizzare la stessa struttura per un'altra operazione fintanto che la
 precedente non sia stata ultimata. In generale per ogni operazione si deve
 utilizzare una diversa struttura \struct{aiocb}.
 
 \index{variabili!automatiche} variabili automatiche e che non si deve
 riutilizzare la stessa struttura per un'altra operazione fintanto che la
 precedente non sia stata ultimata. In generale per ogni operazione si deve
 utilizzare una diversa struttura \struct{aiocb}.
 
-% vedere anche http://davmac.org/davpage/linux/async-io.html  e
-% http://www.ibm.com/developerworks/linux/library/l-async/ 
-
 Dato che si opera in modalità asincrona, il successo di \func{aio\_read} o
 \func{aio\_write} non implica che le operazioni siano state effettivamente
 eseguite in maniera corretta; per verificarne l'esito l'interfaccia prevede
 Dato che si opera in modalità asincrona, il successo di \func{aio\_read} o
 \func{aio\_write} non implica che le operazioni siano state effettivamente
 eseguite in maniera corretta; per verificarne l'esito l'interfaccia prevede
@@ -3630,7 +3627,6 @@ altre due funzioni, che permettono di controllare lo stato di esecuzione. La
 prima è \funcd{aio\_error}, che serve a determinare un eventuale stato di
 errore; il suo prototipo è:
 
 prima è \funcd{aio\_error}, che serve a determinare un eventuale stato di
 errore; il suo prototipo è:
 
-
 \begin{funcproto}{
 \fhead{aio.h}
 \fdecl{int aio\_error(const struct aiocb *aiocbp)} 
 \begin{funcproto}{
 \fhead{aio.h}
 \fdecl{int aio\_error(const struct aiocb *aiocbp)} 
@@ -3672,13 +3668,13 @@ suo prototipo è:
 \end{funcproto}
 
 La funzione recupera il valore dello stato di ritorno delle operazioni di I/O
 \end{funcproto}
 
 La funzione recupera il valore dello stato di ritorno delle operazioni di I/O
-associate a \param{aiocbp} deve essere chiamata una sola volta per ciascuna
+associate a \param{aiocbp} deve essere chiamata una sola volta per ciascuna
 operazione asincrona, essa infatti fa sì che il sistema rilasci le risorse ad
 essa associate. É per questo motivo che occorre chiamare la funzione solo dopo
 che l'operazione cui \param{aiocbp} fa riferimento si è completata
 operazione asincrona, essa infatti fa sì che il sistema rilasci le risorse ad
 essa associate. É per questo motivo che occorre chiamare la funzione solo dopo
 che l'operazione cui \param{aiocbp} fa riferimento si è completata
-verificandolo con \func{aio\_error} ed una sola volta. Una chiamata precedente
-il completamento delle operazioni darebbe risultati indeterminati, così come
-chiamarla più di una volta.
+verificandolo con \func{aio\_error}, ed usarla una sola volta. Una chiamata
+precedente il completamento delle operazioni darebbe risultati indeterminati,
+così come chiamarla più di una volta.
 
 La funzione restituisce il valore di ritorno relativo all'operazione eseguita,
 così come ricavato dalla sottostante \textit{system call} (il numero di byte
 
 La funzione restituisce il valore di ritorno relativo all'operazione eseguita,
 così come ricavato dalla sottostante \textit{system call} (il numero di byte
@@ -3692,57 +3688,72 @@ disposizione un'altra operazione, quella di sincronizzazione dell'I/O,
 compiuta dalla funzione \funcd{aio\_fsync}, che ha lo stesso effetto della
 analoga \func{fsync}, ma viene eseguita in maniera asincrona; il suo prototipo
 è:
 compiuta dalla funzione \funcd{aio\_fsync}, che ha lo stesso effetto della
 analoga \func{fsync}, ma viene eseguita in maniera asincrona; il suo prototipo
 è:
-\begin{prototype}{aio.h}
-{int aio\_fsync(int op, struct aiocb *aiocbp)} 
 
 
-Richiede la sincronizzazione dei dati per il file indicato da \param{aiocbp}.
-  
-\bodydesc{La funzione restituisce 0 in caso di successo e -1 in caso di
-  errore, che può essere, con le stesse modalità di \func{aio\_read},
-  \errval{EAGAIN}, \errval{EBADF} o \errval{EINVAL}.}
-\end{prototype}
+\begin{funcproto}{
+\fhead{aio.h}
+\fdecl{int aio\_fsync(int op, struct aiocb *aiocbp)} 
+\fdesc{Richiede la sincronizzazione dei dati su disco.} 
+}
 
 
-La funzione richiede la sincronizzazione delle operazioni di I/O, ritornando
-immediatamente. L'esecuzione effettiva della sincronizzazione dovrà essere
-verificata con \func{aio\_error} e \func{aio\_return} come per le operazioni
-di lettura e scrittura. L'argomento \param{op} permette di indicare la
-modalità di esecuzione, se si specifica il valore \const{O\_DSYNC} le
-operazioni saranno completate con una chiamata a \func{fdatasync}, se si
-specifica \const{O\_SYNC} con una chiamata a \func{fsync} (per i dettagli vedi
-sez.~\ref{sec:file_sync}).
+{La funzione ritorna $0$ in caso di successo e $-1$ per un errore, nel qual
+  caso \var{errno} assumerà gli stessi valori visti \func{aio\_read} con lo
+  stesso significato.
+}
+\end{funcproto}
 
 
-Il successo della chiamata assicura la sincronizzazione delle operazioni fino
-allora richieste, niente è garantito riguardo la sincronizzazione dei dati
-relativi ad eventuali operazioni richieste successivamente. Se si è
-specificato un meccanismo di notifica questo sarà innescato una volta che le
-operazioni di sincronizzazione dei dati saranno completate.
+La funzione richiede la sincronizzazione dei dati delle operazioni di I/O
+relative al file descriptor indicato in \texttt{aiocbp->aio\_fildes},
+ritornando immediatamente. Si tenga presente che la funzione mette
+semplicemente in coda la richiesta, l'esecuzione effettiva della
+sincronizzazione dovrà essere verificata con \func{aio\_error} e
+\func{aio\_return} come per le operazioni di lettura e
+scrittura. L'argomento \param{op} permette di indicare la modalità di
+esecuzione, se si specifica il valore \const{O\_DSYNC} le operazioni saranno
+completate con una chiamata a \func{fdatasync}, se si specifica
+\const{O\_SYNC} con una chiamata a \func{fsync} (per i dettagli vedi
+sez.~\ref{sec:file_sync}).
 
 
-In alcuni casi può essere necessario interrompere le operazioni (in genere
-quando viene richiesta un'uscita immediata dal programma), per questo lo
-standard POSIX.1b prevede una funzione apposita, \funcd{aio\_cancel}, che
+Il successo della chiamata assicura la richiesta di sincronizzazione dei dati
+relativi operazioni di I/O asincrono richieste fino a quel momento, niente è
+garantito riguardo la sincronizzazione dei dati relativi ad eventuali
+operazioni richieste successivamente. Se si è specificato un meccanismo di
+notifica questo sarà innescato una volta che le operazioni di sincronizzazione
+dei dati saranno completate (\texttt{aio\_sigevent} è l'unico altro campo
+di \param{aiocbp} che viene usato.
+
+In alcuni casi può essere necessario interrompere le operazioni di I/O (in
+genere quando viene richiesta un'uscita immediata dal programma), per questo
+lo standard POSIX.1b prevede una funzione apposita, \funcd{aio\_cancel}, che
 permette di cancellare una operazione richiesta in precedenza; il suo
 prototipo è:
 permette di cancellare una operazione richiesta in precedenza; il suo
 prototipo è:
-\begin{prototype}{aio.h}
-{int aio\_cancel(int fildes, struct aiocb *aiocbp)} 
 
 
-Richiede la cancellazione delle operazioni sul file \param{fildes} specificate
-da \param{aiocbp}.
-  
-\bodydesc{La funzione restituisce il risultato dell'operazione con un codice
-  di positivo, e -1 in caso di errore, che avviene qualora si sia specificato
-  un valore non valido di \param{fildes}, imposta \var{errno} al valore
-  \errval{EBADF}.}
-\end{prototype}
+
+\begin{funcproto}{
+\fhead{aio.h}
+\fdecl{int aio\_cancel(int fd, struct aiocb *aiocbp)}
+\fdesc{Richiede la cancellazione delle operazioni di I/O asincrono.} 
+}
+
+{La funzione ritorna un intero positivo che indica il risultato
+  dell'operazione in caso di successo e $-1$ per un errore, nel qual caso
+  \var{errno} assumerà uno dei valori:
+  \begin{errlist}
+  \item[\errcode{EBADF}] \param{fd} non è un file descriptor valido.
+  \item[\errcode{ENOSYS}] la funzione non è implementata.
+  \end{errlist}
+}
+\end{funcproto}
 
 La funzione permette di cancellare una operazione specifica sul file
 
 La funzione permette di cancellare una operazione specifica sul file
-\param{fildes}, o tutte le operazioni pendenti, specificando \val{NULL} come
-valore di \param{aiocbp}.  Quando una operazione viene cancellata una
-successiva chiamata ad \func{aio\_error} riporterà \errcode{ECANCELED} come
-codice di errore, ed il suo codice di ritorno sarà -1, inoltre il meccanismo
-di notifica non verrà invocato. Se si specifica una operazione relativa ad un
-altro file descriptor il risultato è indeterminato.  In caso di successo, i
-possibili valori di ritorno per \func{aio\_cancel} (anch'essi definiti in
-\headfile{aio.h}) sono tre:
+\param{fd}, idicata con \param{aiocbp}, o tutte le operazioni pendenti,
+specificando \val{NULL} come valore di \param{aiocbp}. Quando una operazione
+viene cancellata una successiva chiamata ad \func{aio\_error} riporterà
+\errcode{ECANCELED} come codice di errore, ed mentre il valore di ritorno per
+\func{aio\_return} sarà -1, inoltre il meccanismo di notifica non verrà
+invocato. Se con \param{aiocbp} si specifica una operazione relativa ad un
+file descriptor diverso da \param{fd} il risultato è indeterminato.  In caso
+di successo, i possibili valori di ritorno per \func{aio\_cancel} (anch'essi
+definiti in \headfile{aio.h}) sono tre:
 \begin{basedescript}{\desclabelwidth{3.0cm}}
 \item[\const{AIO\_ALLDONE}] indica che le operazioni di cui si è richiesta la
   cancellazione sono state già completate,
 \begin{basedescript}{\desclabelwidth{3.0cm}}
 \item[\const{AIO\_ALLDONE}] indica che le operazioni di cui si è richiesta la
   cancellazione sono state già completate,
@@ -3764,30 +3775,30 @@ Benché l'I/O asincrono preveda un meccanismo di notifica, l'interfaccia
 fornisce anche una apposita funzione, \funcd{aio\_suspend}, che permette di
 sospendere l'esecuzione del processo chiamante fino al completamento di una
 specifica operazione; il suo prototipo è:
 fornisce anche una apposita funzione, \funcd{aio\_suspend}, che permette di
 sospendere l'esecuzione del processo chiamante fino al completamento di una
 specifica operazione; il suo prototipo è:
-\begin{prototype}{aio.h}
-{int aio\_suspend(const struct aiocb * const list[], int nent, const struct
-    timespec *timeout)}
-  
-  Attende, per un massimo di \param{timeout}, il completamento di una delle
-  operazioni specificate da \param{list}.
-  
-  \bodydesc{La funzione restituisce 0 se una (o più) operazioni sono state
-    completate, e -1 in caso di errore nel qual caso \var{errno} assumerà uno
-    dei valori:
-    \begin{errlist}
+
+\begin{funcproto}{
+\fhead{aio.h}
+\fdecl{int aio\_suspend(const struct aiocb * const list[], int nent, 
+\phantom{int aio\_suspend(}const struct timespec *timeout)}
+\fdesc{Attende il completamento di una operazione di I/O asincrono.} 
+}
+
+{La funzione ritorna $0$ se una (o più) operazioni sono state completate e
+  $-1$ per un errore, nel qual caso \var{errno} assumerà uno dei valori:
+  \begin{errlist}
     \item[\errcode{EAGAIN}] nessuna operazione è stata completata entro
       \param{timeout}.
     \item[\errcode{EAGAIN}] nessuna operazione è stata completata entro
       \param{timeout}.
-    \item[\errcode{ENOSYS}] la funzione non è implementata.
     \item[\errcode{EINTR}] la funzione è stata interrotta da un segnale.
     \item[\errcode{EINTR}] la funzione è stata interrotta da un segnale.
-    \end{errlist}
-  }
-\end{prototype}
-
+    \item[\errcode{ENOSYS}] la funzione non è implementata.
+  \end{errlist}
+}
+\end{funcproto}
+  
 La funzione permette di bloccare il processo fintanto che almeno una delle
 \param{nent} operazioni specificate nella lista \param{list} è completata, per
 un tempo massimo specificato da \param{timout}, o fintanto che non arrivi un
 La funzione permette di bloccare il processo fintanto che almeno una delle
 \param{nent} operazioni specificate nella lista \param{list} è completata, per
 un tempo massimo specificato da \param{timout}, o fintanto che non arrivi un
-segnale.\footnote{si tenga conto che questo segnale può anche essere quello
-  utilizzato come meccanismo di notifica.} La lista deve essere inizializzata
+segnale (si tenga conto che questo segnale potrebbe essere anche quello
+utilizzato come meccanismo di notifica). La lista deve essere inizializzata
 con delle strutture \struct{aiocb} relative ad operazioni effettivamente
 richieste, ma può contenere puntatori nulli, che saranno ignorati. In caso si
 siano specificati valori non validi l'effetto è indefinito.  Un valore
 con delle strutture \struct{aiocb} relative ad operazioni effettivamente
 richieste, ma può contenere puntatori nulli, che saranno ignorati. In caso si
 siano specificati valori non validi l'effetto è indefinito.  Un valore
index dc97d8b8548e5da9798d39c0f38c4796c32f9ac3..e174c5bb37040e7778c9677d6dfdca6bf86cbd27 100644 (file)
@@ -1,6 +1,6 @@
 %% filedir.tex
 %%
 %% filedir.tex
 %%
-%% Copyright (C) 2000-2014 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2015 Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
index c95fb864a2b6159daefb73bc2f524fea2d7526df..06aee5dbd419a01eebcdfc0a04545aed9ffc2747 100644 (file)
@@ -1,6 +1,6 @@
 %% fileio.tex (merge fileunix.tex - filestd.tex)
 %%
 %% fileio.tex (merge fileunix.tex - filestd.tex)
 %%
-%% Copyright (C) 2000-2014 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2015 Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
index c5d39642eb6128cacb2eac9445deb91525e5a895..cbfba2936c9f6b63076cfa439265dee10a8484dd 100644 (file)
--- a/gapil.tex
+++ b/gapil.tex
@@ -1,6 +1,6 @@
 %% gapil.tex
 %%
 %% gapil.tex
 %%
-%% Copyright (C) 2000-2014 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2015 Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.3 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.3 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
@@ -128,7 +128,7 @@ hyperfootnotes=false]{hyperref}
 
 \begin{quote}
   
 
 \begin{quote}
   
-  Copyright \copyright\ 2000-2014 Simone Piccardi.  Permission is granted to
+  Copyright \copyright\ 2000-2015 Simone Piccardi.  Permission is granted to
   copy, distribute and/or modify this document under the terms of the GNU Free
   Documentation License, Version 1.3 or any later version published by the
   Free Software Foundation; with the Invariant Sections being ``Un preambolo''
   copy, distribute and/or modify this document under the terms of the GNU Free
   Documentation License, Version 1.3 or any later version published by the
   Free Software Foundation; with the Invariant Sections being ``Un preambolo''
index e4bcdee976e7fcc1a72d7002f2e2231c1f9ad7c6..bf2429d5dab145420dbb9d951f1409fd8dc06b2f 100644 (file)
--- a/intro.tex
+++ b/intro.tex
@@ -1,6 +1,6 @@
 %% intro.tex
 %%
 %% intro.tex
 %%
-%% Copyright (C) 2000-2014 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2015 Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
diff --git a/ipc.tex b/ipc.tex
index e8250805478304a8b064abcac07eafcf72115768..ff1772d5d07e400a6ea815b262522b10f32daf00 100644 (file)
--- a/ipc.tex
+++ b/ipc.tex
@@ -1,6 +1,6 @@
 %% ipc.tex
 %%
 %% ipc.tex
 %%
-%% Copyright (C) 2000-2014 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2015 Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
index 4b84f21f521b342556dd32fed9ecd12a44d89914..c308740b59aafb789195eefabcbcedaca5ca7da3 100644 (file)
--- a/macro.tex
+++ b/macro.tex
@@ -1,6 +1,6 @@
 %% macro.tex
 %%
 %% macro.tex
 %%
-%% Copyright (C) 2000-2014 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2015 Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
index 5ead3032f5b9da3191f0967c70e3fec4e73a99cf..9e8d27c41e45d906351e20ae0752356ba68b82d1 100644 (file)
@@ -1,6 +1,6 @@
 %% netlayer.tex
 %%
 %% netlayer.tex
 %%
-%% Copyright (C) 2000-2014 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2015 Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
index 598876b0c44e38adf088701557c430f0204c24ea..249254b40dc1207e89a2d865b41718f6b441e9c2 100644 (file)
@@ -1,6 +1,6 @@
 %% network.tex
 %%
 %% network.tex
 %%
-%% Copyright (C) 2000-2014 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2015 Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
index 3cc81f22a69d72fa2c80293fbde8880b4f9ccae1..29086d1586a4bb37441260726af063977b7539cd 100644 (file)
@@ -1,6 +1,6 @@
 %% othersock.tex
 %%
 %% othersock.tex
 %%
-%% Copyright (C) 2004-2014 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2004-2015 Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
index 6003ce4af3eeb6588a33643429e5d1ad1663bdf7..4170b116cd16773abd0ec1a3f3688969ec05fd04 100644 (file)
@@ -1,6 +1,6 @@
 %% preambolo.tex
 %%
 %% preambolo.tex
 %%
-%% Copyright (C) 2000-2014 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2015 Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
index 96a7bfae85a1ce1107d377920b1283a0925dba6a..9d1f356f7a254030f68df281e51e0af1ce1357aa 100644 (file)
--- a/pref.tex
+++ b/pref.tex
@@ -1,6 +1,6 @@
 %% pref.tex
 %%
 %% pref.tex
 %%
-%% Copyright (C) 2000-2014 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2015 Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
index c779215ee37407e06aef280fcc82537c2e80ca40..ec40d300b64eb680d1e812926dcbea8bfc6c82a0 100644 (file)
@@ -1,6 +1,6 @@
 %% process.tex
 %%
 %% process.tex
 %%
-%% Copyright (C) 2000-2014 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2015 by Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
index a43b44bfb2045c658543fd6f0742220b20dfd277..dceb78c56e2da21778f9ca7a2af33b80f7262bbb 100644 (file)
@@ -1,6 +1,6 @@
 %% prochand.tex
 %%
 %% prochand.tex
 %%
-%% Copyright (C) 2000-2014
+%% Copyright (C) 2000-2015 by Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
index a0b95e79b4199beae218471e1dfd798cfcbf45c8..ea4a28cd004dc3c78b648a42e5355bc83d2d908f 100644 (file)
@@ -1,6 +1,6 @@
 %% ringraziamenti.tex
 %%
 %% ringraziamenti.tex
 %%
-%% Copyright (C) 2000-2014 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2015 Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
index 508f7cad86d5df2b97b6847578b77c8980a540ca..e3b5100df5a3a43bd58cf195bba7f28694283ee7 100644 (file)
@@ -1,6 +1,6 @@
 %% session.tex
 %%
 %% session.tex
 %%
-%% Copyright (C) 2000-2014 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2015 Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
index 95141ad40d8cbb536da9728f91aee69223757728..4f107af2f6d3a8013593c7d880a8495808c5c0a3 100644 (file)
@@ -1,6 +1,6 @@
 %% signal.tex
 %%
 %% signal.tex
 %%
-%% Copyright (C) 2000-2014 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2015 Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
index cff488b91b14062ba6a090188d6cbc322a11d847..5567f7cd7c651f16b7df3332c3f09af3bf8c22fc 100644 (file)
@@ -1,6 +1,6 @@
 %% sockadv.tex
 %%
 %% sockadv.tex
 %%
-%% Copyright (C) 2004-2014 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2004-2015 Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
index 7b26d58364a0b2466a6dde3da3d9e2554b397375..faf1ecf6e17135e70ce063952bc9d41c7ffb2a53 100644 (file)
@@ -1,6 +1,6 @@
 %% sockctrl.tex
 %%
 %% sockctrl.tex
 %%
-%% Copyright (C) 2004-2014 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2004-2015 Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Prefazione",
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Prefazione",
index 2143cbd99c086d76807e7e01aff600829a897f9d..503234e0bdd7186a56bad359176534ae3984b016 100644 (file)
@@ -1,6 +1,6 @@
 %% socket.tex
 %%
 %% socket.tex
 %%
-%% Copyright (C) 2000-2014 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2015 Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
index 8644cb796abb3061fd6fd94b7fe4e098805cf82f..c90585f2ed1f29b8a51e406c6fb97da2060e84b4 100644 (file)
@@ -1,6 +1,6 @@
 %% system.tex
 %%
 %% system.tex
 %%
-%% Copyright (C) 2000-2014 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2015 Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
index 8118b1e49db1067d5ae69627623a2daac271e736..81cb8e45af9f21156a05256935f19287e1ebf7aa 100644 (file)
@@ -1,6 +1,6 @@
 %% tcpsock.tex
 %%
 %% tcpsock.tex
 %%
-%% Copyright (C) 2000-2014 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2015 Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
index 2eee5579b4752959d5eb58d5a82d07aaa358cbb3..b9179906cba9aff5e311e2a86f2f8b3a6185e78d 100644 (file)
@@ -1,6 +1,6 @@
 %% thread.tex
 %%
 %% thread.tex
 %%
-%% Copyright (C) 2007-2014 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2007-2015 Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
index 262430a881c55e17251762d607f9cb21b30165d9..a3fe9a3a859016512e916edbe885bea026bb340f 100644 (file)
@@ -1,6 +1,6 @@
 %% tcpprot.tex
 %%
 %% tcpprot.tex
 %%
-%% Copyright (C) 2002-2014 Simone Piccardi.  Permission is granted to copy,
+%% Copyright (C) 2002-2015 Simone Piccardi.  Permission is granted to copy,
 %% distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
 %% distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",