From 4d46f47e3a0e08440812b334f79489d92814e6d2 Mon Sep 17 00:00:00 2001 From: Simone Piccardi Date: Sat, 10 Oct 2015 20:45:28 +0000 Subject: [PATCH] Altre ripuliture --- filedir.tex | 2 +- intro.tex | 28 ++++++++++++++------------- ipc.tex | 20 ++++++++++---------- listati/MutexLocking.c | 3 --- sockctrl.tex | 43 +++++++++++++++++++++--------------------- socket.tex | 18 +++++++++--------- 6 files changed, 56 insertions(+), 58 deletions(-) diff --git a/filedir.tex b/filedir.tex index 076172a..42e71e5 100644 --- a/filedir.tex +++ b/filedir.tex @@ -998,7 +998,7 @@ con un OR aritmetico dei valori dalle costanti riportate nell'elenco seguente: stessa condivisione, e la sezione di albero di file vista al di sotto di ciascuno di essi sarà sempre identica. -\itindbend{shared~subtree} +\itindend{shared~subtree} \item[\const{MS\_SILENT}] Richiede la soppressione di alcuni messaggi di avvertimento nei log del kernel (vedi sez.~\ref{sec:sess_daemon}). L'opzione diff --git a/intro.tex b/intro.tex index cebf481..f18cc3a 100644 --- a/intro.tex +++ b/intro.tex @@ -1288,25 +1288,27 @@ in essi definite, sono illustrate nel seguente elenco: \macro{\_GNU\_SOURCE}) è stata a sua volta attivata, nel qual caso queste hanno la precedenza. Se però si definisce \macro{\_BSD\_SOURCE} dopo aver definito una di queste macro, l'effetto sarà quello di dare la precedenza - alle funzioni in forma BSD. Questa macro è stata deprecata a partire dalle - \acr{glibc} 2.20, essendo ricompresa in \macro{\_DEFAULT\_SOURCE} che è - definita di default. + alle funzioni in forma BSD. Questa macro, essendo ricompresa in + \macro{\_DEFAULT\_SOURCE} che è definita di default, è stata deprecata a + partire dalle \acr{glibc} 2.20. \item[\macro{\_SVID\_SOURCE}] definendo questa macro si rendono disponibili le funzionalità derivate da SVID. Esse comprendono anche quelle definite negli standard ISO C, POSIX.1, POSIX.2, e X/Open (XPG$n$) illustrati in - precedenza. Questa macro è stata deprecata a partire dalle \acr{glibc} 2.20, - essendo ricompresa in \macro{\_DEFAULT\_SOURCE} che è definita di default. + precedenza. Questa macro, essendo ricompresa in \macro{\_DEFAULT\_SOURCE} + che è definita di default, è stata deprecata a partire dalle \acr{glibc} + 2.20. \item[\macro{\_DEFAULT\_SOURCE}] questa macro abilita le definizioni - considerate il \textit{default}, comprese quelle richieste dalla standard - POSIX.1-2008, ed è sostanzialente equivalente a \macro{\_SVID\_SOURCE} - \macro{\_BSD\_SOURCE}] e \macro{\_POSIX\_C\_SOURCE}. Essendo predefinita non - è necessario usarla a meno di non aver richiesto delle definizioni più - restrittive sia con altre macro che con i flag del compilatore, nel qual - caso abilita le funzioni che altrimenti sarebbero disabilitate. Questa macro - è stata introdotta a partire dalle \acr{glibc} 2.19 e consente di deprecare - \macro{\_SVID\_SOURCE} e \macro{\_BSD\_SOURCE}]. + considerate il \textit{default}, comprese quelle richieste dallo standard + POSIX.1-2008, ed è sostanzialente equivalente all'insieme di + \macro{\_SVID\_SOURCE}, \macro{\_BSD\_SOURCE} e + \macro{\_POSIX\_C\_SOURCE}. Essendo predefinita non è necessario usarla a + meno di non aver richiesto delle definizioni più restrittive sia con altre + macro che con i flag del compilatore, nel qual caso abilita le funzioni che + altrimenti sarebbero disabilitate. Questa macro è stata introdotta a partire + dalle \acr{glibc} 2.19 e consente di deprecare \macro{\_SVID\_SOURCE} e + \macro{\_BSD\_SOURCE}. \item[\macro{\_XOPEN\_SOURCE}] definendo questa macro si rendono disponibili le funzionalità descritte nella \textit{X/Open Portability Guide}. Anche diff --git a/ipc.tex b/ipc.tex index 33319a7..7f7dc44 100644 --- a/ipc.tex +++ b/ipc.tex @@ -739,7 +739,7 @@ scrittura e l'apertura si sarebbe bloccata indefinitamente. Verifichiamo allora il comportamento dei nostri programmi, in questo, come in altri esempi precedenti, si fa uso delle varie funzioni di servizio, che sono -state raccolte nella libreria \file{libgapil.so}, per poter usare quest'ultima +state raccolte nella libreria \file{libgapil.so}, e per poterla usare occorrerà definire la variabile di ambiente \envvar{LD\_LIBRARY\_PATH} in modo che il linker dinamico possa accedervi. @@ -865,11 +865,11 @@ connettere i due descrittori, ma in questo caso i soli valori validi che possono essere specificati sono rispettivamente \const{AF\_UNIX}, \const{SOCK\_STREAM} e \val{0}. -A partire dal kernel 2.6.27 la funzione supporta anche l'uso dei flag -\const{SOCK\_NONBLOCK} e \const{SOCK\_CLOEXEC} (trattati in -sez.~\ref{sec:sock_type}) nell'indicazione del tipo di socket, con effetto -identico agli analoghi \const{O\_CLOEXEC} e \const{O\_NONBLOCK} di una -\func{open} (vedi tab.~\ref{tab:open_operation_flag}). +A partire dal kernel 2.6.27 la funzione supporta nell'indicazione del tipo di +socket anche i due flag \const{SOCK\_NONBLOCK} e \const{SOCK\_CLOEXEC} +(trattati in sez.~\ref{sec:sock_type}), con effetto identico agli analoghi +\const{O\_CLOEXEC} e \const{O\_NONBLOCK} di una \func{open} (vedi +tab.~\ref{tab:open_operation_flag}). L'utilità di chiamare questa funzione per evitare due chiamate a \func{pipe} può sembrare limitata; in realtà l'utilizzo di questa funzione (e dei socket @@ -5012,10 +5012,10 @@ message: ciao \end{Console} %$ -E si noterà come nel momento in cui si è lanciato \file{message\_setter} le -stampe di \file{message\_getter} si bloccheranno, come corretto, dopo aver -registrato un valore nullo per il semaforo. Il programma infatti resterà -bloccato nella \func{sem\_wait} (quella di riga (\texttt{\small 37}) in +E si noterà come nel momento in cui si lancia \file{message\_setter} le stampe +di \file{message\_getter} si bloccheranno, come corretto, dopo aver registrato +un valore nullo per il semaforo. Il programma infatti resterà bloccato nella +\func{sem\_wait} (quella di riga (\texttt{\small 37}) in fig.~\ref{fig:ipc_posix_sem_shm_message_server}) fino alla scadenza dell'attesa di \file{message\_setter} (con l'esecuzione della \func{sem\_post} della riga (\texttt{\small 29}) di diff --git a/listati/MutexLocking.c b/listati/MutexLocking.c index e1c2e0a..cee82da 100644 --- a/listati/MutexLocking.c +++ b/listati/MutexLocking.c @@ -12,7 +12,6 @@ int FindMutex(const char *path_name) int LockMutex(int fd) { struct flock lock; /* file lock structure */ - /* set flock structure */ lock.l_type = F_WRLCK; /* set type: read or write */ lock.l_whence = SEEK_SET; /* start from the beginning of the file */ lock.l_start = 0; /* set the start of the locked region */ @@ -24,7 +23,6 @@ int LockMutex(int fd) int UnlockMutex(int fd) { struct flock lock; /* file lock structure */ - /* set flock structure */ lock.l_type = F_UNLCK; /* set type: unlock */ lock.l_whence = SEEK_SET; /* start from the beginning of the file */ lock.l_start = 0; /* set the start of the locked region */ @@ -42,7 +40,6 @@ int ReadMutex(int fd) { int res; struct flock lock; /* file lock structure */ - /* set flock structure */ lock.l_type = F_WRLCK; /* set type: unlock */ lock.l_whence = SEEK_SET; /* start from the beginning of the file */ lock.l_start = 0; /* set the start of the locked region */ diff --git a/sockctrl.tex b/sockctrl.tex index 5906b98..d94093e 100644 --- a/sockctrl.tex +++ b/sockctrl.tex @@ -650,7 +650,7 @@ definizione è riportata in fig.~\ref{fig:sock_hostent_struct}. \begin{figure}[!htb] \footnotesize \centering - \begin{minipage}[c]{\textwidth} + \begin{minipage}[c]{0.80\textwidth} \includestruct{listati/hostent.h} \end{minipage} \caption{La struttura \structd{hostent} per la risoluzione dei nomi a @@ -1107,7 +1107,7 @@ memoria statica e che quindi la funzione non è rientrante. \begin{figure}[!htb] \footnotesize \centering - \begin{minipage}[c]{\textwidth} + \begin{minipage}[c]{0.80\textwidth} \includestruct{listati/servent.h} \end{minipage} \caption{La struttura \structd{servent} per la risoluzione dei nomi dei @@ -1272,7 +1272,7 @@ strutture di tipo \struct{addrinfo} contenenti tutte le informazioni ottenute. \begin{figure}[!htb] \footnotesize \centering - \begin{minipage}[c]{\textwidth} + \begin{minipage}[c]{0.80\textwidth} \includestruct{listati/addrinfo.h} \end{minipage} \caption{La struttura \structd{addrinfo} usata nella nuova interfaccia POSIX @@ -2093,7 +2093,7 @@ gestione dei socket, e pertanto il loro utilizzo sarà approfondito separatamente in sez.~\ref{sec:sock_options_main}. Quello che segue è quindi soltanto un elenco più dettagliato della breve descrizione di tab.~\ref{tab:sock_opt_socklevel} sul significato delle varie opzioni: -\begin{basedescript}{\desclabelwidth{2.5cm}\desclabelstyle{\nextlinelabel}} +\begin{basedescript}{\desclabelwidth{1.5cm}\desclabelstyle{\nextlinelabel}} \item[\const{SO\_KEEPALIVE}] questa opzione abilita un meccanismo di verifica della persistenza di una connessione associata al socket (ed è pertanto @@ -2655,7 +2655,7 @@ dal kernel. \begin{figure}[!htb] \footnotesize \centering - \begin{minipage}[c]{\textwidth} + \begin{minipage}[c]{0.80\textwidth} \includestruct{listati/linger.h} \end{minipage} \caption{La struttura \structd{linger} richiesta come valore dell'argomento @@ -2686,7 +2686,7 @@ che termina immediatamente la connessione. Un esempio di questo comportamento si può abilitare nel nostro client del servizio \textit{echo} utilizzando l'opzione \texttt{-r}; riportiamo in fig.~\ref{fig:TCP_echo_sixth} la sezione di codice che permette di introdurre -questa funzionalità,; al solito il codice completo è disponibile nei sorgenti +questa funzionalità; al solito il codice completo è disponibile nei sorgenti allegati. \begin{figure}[!htbp] @@ -2749,7 +2749,7 @@ file. \begin{table}[!htb] \centering \footnotesize - \begin{tabular}[c]{|l|c|c|c|l|l|} + \begin{tabular}[c]{|l|c|c|c|l|p{6cm}|} \hline \textbf{Opzione}&\texttt{get}&\texttt{set}&\textbf{flag}&\textbf{Tipo}& \textbf{Descrizione}\\ @@ -2802,7 +2802,7 @@ file. Le descrizioni riportate in tab.~\ref{tab:sock_opt_iplevel} sono estremamente succinte, una maggiore quantità di dettagli sulle varie opzioni è fornita nel seguente elenco: -\begin{basedescript}{\desclabelwidth{2.5cm}\desclabelstyle{\nextlinelabel}} +\begin{basedescript}{\desclabelwidth{1.5cm}\desclabelstyle{\nextlinelabel}} \item[\const{IP\_OPTIONS}] l'opzione permette di impostare o leggere le @@ -2830,7 +2830,7 @@ seguente elenco: \begin{figure}[!htb] \footnotesize \centering - \begin{minipage}[c]{\textwidth} + \begin{minipage}[c]{0.80\textwidth} \includestruct{listati/pktinfo.h} \end{minipage} \caption{La struttura \structd{pktinfo} usata dall'opzione @@ -3059,7 +3059,7 @@ sez.~\ref{sec:net_sendmsg}). \begin{figure}[!htb] \footnotesize \centering - \begin{minipage}[c]{\textwidth} + \begin{minipage}[c]{0.80\textwidth} \includestruct{listati/ip_mreqn.h} \end{minipage} \caption{La struttura \structd{ip\_mreqn} utilizzata dalle opzioni dei @@ -3161,8 +3161,7 @@ Le descrizioni delle varie opzioni riportate in tab.~\ref{tab:sock_opt_tcplevel} sono estremamente sintetiche ed indicative, la spiegazione del funzionamento delle singole opzioni con una maggiore quantità di dettagli è fornita nel seguente elenco: -\begin{basedescript}{\desclabelwidth{2.5cm}\desclabelstyle{\nextlinelabel}} - +\begin{basedescript}{\desclabelwidth{1.5cm}\desclabelstyle{\nextlinelabel}} \item[\const{TCP\_NODELAY}] il protocollo TCP utilizza un meccanismo di bufferizzazione dei dati uscenti, per evitare la trasmissione di tanti @@ -3346,7 +3345,7 @@ quantità di dettagli è fornita nel seguente elenco: \begin{figure}[!htb] \footnotesize \centering - \begin{minipage}[c]{\textwidth} + \begin{minipage}[c]{0.80\textwidth} \includestruct{listati/tcp_info.h} \end{minipage} \caption{La struttura \structd{tcp\_info} contenente le informazioni sul @@ -3452,7 +3451,7 @@ quantità di dettagli è fornita nel seguente elenco: \begin{table}[!htb] \centering \footnotesize - \begin{tabular}[c]{|l|l|p{10cm}|} + \begin{tabular}[c]{|l|l|l|} \hline \textbf{Nome}&\textbf{Configurazione}&\textbf{Riferimento} \\ \hline @@ -3521,7 +3520,7 @@ file.\footnote{come per TCP, la definizione delle opzioni effettivamente Ancora una volta le descrizioni contenute tab.~\ref{tab:sock_opt_udplevel} sono un semplice riferimento, una maggiore quantità di dettagli sulle caratteristiche delle opzioni citate è quello dell'elenco seguente: -\begin{basedescript}{\desclabelwidth{2.5cm}\desclabelstyle{\nextlinelabel}} +\begin{basedescript}{\desclabelwidth{1.5cm}\desclabelstyle{\nextlinelabel}} \item[\const{UDP\_CORK}] questa opzione ha l'identico effetto dell'analoga \const{TCP\_CORK} vista in precedenza per il protocollo TCP, e quando @@ -3572,7 +3571,7 @@ come \textit{value result argument}, con queste operazioni il terzo argomento deve sempre essere passato come puntatore ad una variabile (o struttura) precedentemente allocata. Le costanti che identificano le operazioni sono le seguenti: -\begin{basedescript}{\desclabelwidth{2.5cm}\desclabelstyle{\nextlinelabel}} +\begin{basedescript}{\desclabelwidth{1.5cm}\desclabelstyle{\nextlinelabel}} \item[\const{SIOCGSTAMP}] restituisce il contenuto di una struttura \struct{timeval} con la marca temporale dell'ultimo pacchetto ricevuto sul socket, questa operazione può essere utilizzata per effettuare delle @@ -3628,7 +3627,7 @@ permette di impostare e rilevare le funzionalità delle interfacce di rete. \begin{figure}[!htb] \footnotesize \centering - \begin{minipage}[c]{\textwidth} + \begin{minipage}[c]{0.80\textwidth} \includestruct{listati/ifreq.h} \end{minipage} \caption{La struttura \structd{ifreq} utilizzata dalle \func{ioctl} per le @@ -3651,7 +3650,7 @@ quelle che modificano le caratteristiche dell'interfaccia) sono privilegiate e richiedono i privilegi di amministratore o la \textit{capability} \const{CAP\_NET\_ADMIN}, altrimenti si otterrà un errore di \errval{EPERM}. Le costanti che identificano le operazioni disponibili sono le seguenti: -\begin{basedescript}{\desclabelwidth{2.7cm}\desclabelstyle{\nextlinelabel}} +\begin{basedescript}{\desclabelwidth{1.5cm}\desclabelstyle{\nextlinelabel}} \item[\const{SIOCGIFNAME}] questa è l'unica operazione che usa il campo \var{ifr\_name} per restituire un risultato, tutte le altre lo utilizzano per indicare l'interfaccia sulla quale operare. L'operazione richiede che si @@ -3775,7 +3774,7 @@ Le costanti che identificano le operazioni disponibili sono le seguenti: \begin{figure}[!htb] \footnotesize \centering - \begin{minipage}[c]{\textwidth} + \begin{minipage}[c]{0.80\textwidth} \includestruct{listati/ifmap.h} \end{minipage} \caption{La struttura \structd{ifmap} utilizzata per leggere ed impostare i @@ -3831,7 +3830,7 @@ fig.~\ref{fig:netdevice_ifconf_struct}. \begin{figure}[!htb] \footnotesize \centering - \begin{minipage}[c]{\textwidth} + \begin{minipage}[c]{0.80\textwidth} \includestruct{listati/ifconf.h} \end{minipage} \caption{La struttura \structd{ifconf}.} @@ -3931,7 +3930,7 @@ come possibile valore per il secondo argomento della funzione le costanti illustrate nell'elenco seguente; il terzo argomento della funzione, gestito come \textit{value result argument}, deve essere sempre il puntatore ad una variabile di tipo \ctyp{int}: -\begin{basedescript}{\desclabelwidth{2.5cm}\desclabelstyle{\nextlinelabel}} +\begin{basedescript}{\desclabelwidth{1.5cm}\desclabelstyle{\nextlinelabel}} \item[\const{SIOCINQ}] restituisce la quantità di dati non ancora letti presenti nel buffer di ricezione; il socket non deve essere in stato \texttt{LISTEN}, altrimenti si avrà un errore di \errval{EINVAL}. @@ -3964,7 +3963,7 @@ dalla relativa pagina di manuale accessibile con \texttt{man 7 udp}, sono quelle indicate dalle costanti del seguente elenco; come per i socket TCP il terzo argomento viene gestito come \textit{value result argument} e deve essere un puntatore ad una variabile di tipo \ctyp{int}: -\begin{basedescript}{\desclabelwidth{2.5cm}\desclabelstyle{\nextlinelabel}} +\begin{basedescript}{\desclabelwidth{1.5cm}\desclabelstyle{\nextlinelabel}} \item[\const{FIONREAD}] restituisce la dimensione in byte del primo pacchetto in attesa di ricezione, o 0 qualora non ci sia nessun pacchetto. \item[\const{TIOCOUTQ}] restituisce il numero di byte presenti nella coda di diff --git a/socket.tex b/socket.tex index 7e79d39..bda4160 100644 --- a/socket.tex +++ b/socket.tex @@ -280,7 +280,7 @@ seguenti costanti:\footnote{le pagine di manuale POSIX riportano solo i primi tre tipi, Linux supporta anche gli altri, come si può verificare nel file \texttt{include/linux/net.h} dei sorgenti del kernel.} -\begin{basedescript}{\desclabelwidth{2.9cm}\desclabelstyle{\nextlinelabel}} +\begin{basedescript}{\desclabelwidth{1.5cm}\desclabelstyle{\nextlinelabel}} \item[\const{SOCK\_STREAM}] Provvede un canale di trasmissione dati bidirezionale, sequenziale e affidabile. Opera su una connessione con un altro socket. I dati vengono ricevuti e trasmessi come un flusso continuo di @@ -302,8 +302,8 @@ seguenti costanti:\footnote{le pagine di manuale POSIX riportano solo i primi devono usarlo, è riservato all'uso di sistema. \item[\const{SOCK\_RDM}] Provvede un canale di trasmissione di dati affidabile, ma in cui non è garantito l'ordine di arrivo dei pacchetti. -\item[\const{SOCK\_PACKET}] Obsoleto, non deve essere più usato.\footnote{e - pertanto non ne parleremo ulteriormente.} +\item[\const{SOCK\_PACKET}] Obsoleto, non deve essere più usato (e pertanto + non ne parleremo ulteriormente). \end{basedescript} A partire dal kernel 2.6.27 l'argomento \param{type} della funzione @@ -312,7 +312,7 @@ impostare dei flag relativi alle caratteristiche generali del \textit{socket} non strettamente attinenti all'indicazione del tipo secondo i valori appena illustrati. Essi infatti possono essere combinati con un OR aritmetico delle ulteriori costanti: -\begin{basedescript}{\desclabelwidth{2.9cm}\desclabelstyle{\nextlinelabel}} +\begin{basedescript}{\desclabelwidth{1.5cm}\desclabelstyle{\nextlinelabel}} \item[\const{SOCK\_CLOEXEC}] imposta il flag di \textit{close-on-exec} sul file descriptor del socket, ottenendo lo stesso effetto del flag \const{O\_CLOEXEC} di \func{open} (vedi tab.~\ref{tab:open_operation_flag}), @@ -411,7 +411,7 @@ una struttura generica per gli indirizzi dei socket, \struct{sockaddr}, che si \begin{figure}[!htb] \footnotesize \centering - \begin{minipage}[c]{\textwidth} + \begin{minipage}[c]{0.80\textwidth} \includestruct{listati/sockaddr.h} \end{minipage} \caption{La struttura generica degli indirizzi dei socket @@ -487,7 +487,7 @@ fig.~\ref{fig:sock_sa_ipv4_struct}, conforme allo standard POSIX.1g. \begin{figure}[!htb] \footnotesize\centering - \begin{minipage}[c]{\textwidth} + \begin{minipage}[c]{0.80\textwidth} \includestruct{listati/sockaddr_in.h} \end{minipage} \caption{La struttura \structd{sockaddr\_in} degli indirizzi dei socket @@ -539,7 +539,7 @@ riportata in fig.~\ref{fig:sock_sa_ipv6_struct}. \begin{figure}[!htb] \footnotesize \centering - \begin{minipage}[c]{\textwidth} + \begin{minipage}[c]{0.80\textwidth} \includestruct{listati/sockaddr_in6.h} \end{minipage} \caption{La struttura \structd{sockaddr\_in6} degli indirizzi dei socket @@ -580,7 +580,7 @@ fig.~\ref{fig:sock_sa_local_struct}. \begin{figure}[!htb] \footnotesize \centering - \begin{minipage}[c]{\textwidth} + \begin{minipage}[c]{0.80\textwidth} \includestruct{listati/sockaddr_un.h} \end{minipage} \caption{La struttura \structd{sockaddr\_un} degli indirizzi dei socket @@ -624,7 +624,7 @@ il file \headfile{netatalk/at.h}. \begin{figure}[!htb] \footnotesize \centering - \begin{minipage}[c]{\textwidth} + \begin{minipage}[c]{0.80\textwidth} \includestruct{listati/sockaddr_atalk.h} \end{minipage} \caption{La struttura \structd{sockaddr\_atalk} degli indirizzi dei socket -- 2.30.2