%% errors.tex
%%
-%% Copyright (C) 2000-2005 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-2006 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",
montare via NFS un filesystem remoto con un nome che già specifica un
filesystem montato via NFS.
\item \errcode{ENOLCK} \textit{No locks available}. È usato dalle utilità per
- la gestione del file lock; non viene generato da un sistema GNU, ma può
+ la gestione del file locking; non viene generato da un sistema GNU, ma può
risultare da un'operazione su un server NFS di un altro sistema.
\item \errcode{EFTYPE} \textit{Inappropriate file type or format}. Il file è
di tipo sbagliato rispetto all'operazione richiesta o un file di dati ha un
Famiglia di indirizzi non supportata. La famiglia di indirizzi richiesta non
è supportata, o è inconsistente con il protocollo usato dal socket.
\item \errcode{EADDRINUSE} \textit{Address already in use}. L'indirizzo del
- socket richiesto è gia utilizzato (ad esempio si è eseguita \func{bind}
+ socket richiesto è già utilizzato (ad esempio si è eseguita \func{bind}
su una porta già in uso).
\item \errcode{EADDRNOTAVAIL} \textit{Cannot assign requested
address}. L'indirizzo richiesto non è disponibile (ad esempio si
è cercato di dare al socket un nome che non corrisponde al nome
- della stazione locale), o l'interfaccia richesta non esiste.
+ della stazione locale), o l'interfaccia richiesta non esiste.
\item \errcode{ENETDOWN} \textit{Network is down}. L'operazione sul socket è
fallita perché la rete è sconnessa.
\item \errcode{ENETUNREACH} \textit{Network is unreachable}. L'operazione è
caso di operazioni sulla rete si può ottenere questo errore invece
dell'altro.
\item \errcode{EISCONN} \textit{Transport endpoint is already connected}. Si è
- tentato di connettere un socket che è gia connesso.
+ tentato di connettere un socket che è già connesso.
\item \errcode{ENOTCONN} \textit{Transport endpoint is not connected}. Il
socket non è connesso a niente. Si ottiene questo errore quando si cerca di
trasmettere dati su un socket senza avere specificato in precedenza la loro
shutdown}. Il socket su cui si cerca di inviare dei dati ha avuto uno
shutdown.
\item \errcode{ETOOMANYREFS} \textit{Too many references: cannot splice}. La
- glibc dice ???
+ \acr{glibc} dice ???
\item \errcode{ETIMEDOUT} \textit{Connection timed out}. Un'operazione sul
socket non ha avuto risposta entro il periodo di timeout.
\item \errcode{ECONNREFUSED} \textit{Connection refused}. Un host remoto ha
%%% mode: latex
%%% TeX-master: "gapil"
%%% End:
+
+% LocalWords: header errno perror int strerror sez EPERM Operation not ENOENT
+% LocalWords: permitted such pathname EIO error ENXIO device address kernel Is
+% LocalWords: ENOEXEC Invalid executable format exec EBADF Bad descriptor Too
+% LocalWords: EACCES Permission denied ELOOP many symbolic links encountered
+% LocalWords: ENAMETOOLONG name too long ENOTBLK Block required block EEXIST
+% LocalWords: exists EBUSY Resource busy filesystem EXDEV ENODEV ENOTDIR files
+% LocalWords: EISDIR EMFILE ulimit ENFILE table overflow ENOTTY ETXTBSY Text
+% LocalWords: EFBIG big ENOSPC left ESPIPE seek operation EROFS Read only read
+% LocalWords: system EMLINK EPIPE Broken SIGPIPE ENOTEMPTY empty EUSERS users
+% LocalWords: EDQUOT exceeded ESTALE NFS handle EREMOTE Object is ENOLCK locks
+% LocalWords: available locking EFTYPE type sticky ESRCH process matches the
+% LocalWords: specified pid Argument list POSIX ECHILD There child processes
+% LocalWords: socket ENOTSOCK EMSGSIZE Message EPROTOTYPE Protocol wrong for
+% LocalWords: ENOPROTOOPT EPROTONOSUPPORT supported ESOCKTNOSUPPORT EOPNOTSUPP
+% LocalWords: transport endpoint EPFNOSUPPORT family EAFNOSUPPORT protocol of
+% LocalWords: EADDRINUSE already bind EADDRNOTAVAIL Cannot assign requested to
+% LocalWords: ENETDOWN ENETUNREACH unreachable ENETRESET dropped connection
+% LocalWords: because reset l'host ECONNABORTED caused abort ECONNRESET peer
+% LocalWords: dell'host ENOBUFS ENOMEM EISCONN connected ENOTCONN UDP send now
+% LocalWords: EDESTADDRREQ Destination ESHUTDOWN after shutdown ETOOMANYREFS
+% LocalWords: references cannot splice glibc ETIMEDOUT timed ECONNREFUSED host
+% LocalWords: refused EHOSTDOWN EHOSTUNREACH route EINTR Interrupted function
+% LocalWords: call memory EDEADLK Deadlock avoided deadlock EFAULT segment IPC
+% LocalWords: violation SIGSEGV EINVAL argument EDOM Domain ERANGE underflow
+% LocalWords: EAGAIN temporarily unavailable EWOULDBLOCK select fork would has
+% LocalWords: EINPROGRESS progress connect EALREADY ENOSYS implemented ENOTSUP
+% LocalWords: EILSEQ Illegal sequence EBADMSG message EIDRM Identifier removed
+% LocalWords: SysV EMULTIHOP Multihop attempted ENODATA ENOLINK been severed
+% LocalWords: ENOMSG desired ENOSR streams resources ENOSTR stream EOVERFLOW
+% LocalWords: Value large defined STAT EPROTO ETIME Timer expired
\subsection{Il \textit{mandatory locking}}
\label{sec:file_mand_locking}
+\itindbeg{mandatory~locking|(}
+
Il \textit{mandatory locking} è una opzione introdotta inizialmente in SVr4,
per introdurre un file locking che, come dice il nome, fosse effettivo
indipendentemente dai controlli eseguiti da un processo. Con il
qual caso la funzione fallisce con il solito \errcode{EAGAIN}) che comporta la
possibilità di modificare il file.
\index{file!locking|)}
+\itindend{mandatory~locking|(}
%% filedir.tex
%%
-%% Copyright (C) 2000-2005 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-2006 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",
Infine Linux utilizza il bit \acr{sgid} per una ulteriore estensione mutuata
da SVr4. Il caso in cui un file ha il bit \acr{sgid} impostato senza che lo
sia anche il corrispondente bit di esecuzione viene utilizzato per attivare
-per quel file il \textit{mandatory locking} (affronteremo questo argomento in
-dettaglio più avanti, in sez.~\ref{sec:file_mand_locking}).
+per quel file il \itindex{mandatory~locking} \textit{mandatory locking}
+(affronteremo questo argomento in dettaglio più avanti, in
+sez.~\ref{sec:file_mand_locking}).
\itindend{suid~bit}
\itindend{sgid~bit}
\itindex{sgid~bit} \acr{sgid} vengono cancellati. Questo non avviene per il
bit \acr{sgid} nel caso in cui esso sia usato (in assenza del corrispondente
permesso di esecuzione) per indicare che per il file è attivo il
-\textit{mandatory locking}.
+\itindex{mandatory~locking} \textit{mandatory locking}.
\subsection{Un quadro d'insieme sui permessi}
\hline
1&-&-&-&-&-&-&-&-&-&-&-&Se eseguito ha i permessi del proprietario\\
-&1&-&-&-&1&-&-&-&-&-&-&Se eseguito ha i permessi del gruppo proprietario\\
- -&1&-&-&-&0&-&-&-&-&-&-&Il \textit{mandatory locking} è abilitato\\
+ -&1&-&-&-&0&-&-&-&-&-&-&Il \itindex{mandatory~locking}
+ \textit{mandatory locking} è abilitato\\
-&-&1&-&-&-&-&-&-&-&-&-&Non utilizzato\\
-&-&-&1&-&-&-&-&-&-&-&-&Permesso di lettura per il proprietario\\
-&-&-&-&1&-&-&-&-&-&-&-&Permesso di scrittura per il proprietario\\
%% fileunix.tex
%%
-%% Copyright (C) 2000-2005 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-2006 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",
problema, quando si andrà a scrivere le operazioni potranno mescolarsi in
maniera imprevedibile. Il sistema però fornisce in alcuni casi la possibilità
di eseguire alcune operazioni di scrittura in maniera coordinata anche senza
-utilizzare meccanismi di sincronizzazione più complessi (come il \textit{file
- locking} \index{file!locking}, che esamineremo in
+utilizzare meccanismi di sincronizzazione più complessi (come il
+\index{file!locking} \textit{file locking}, che esamineremo in
sez.~\ref{sec:file_locking}).
Un caso tipico di necessità di accesso condiviso in scrittura è quello in cui
gestione sia delle loro proprietà, che di tutta una serie di ulteriori
funzionalità che il kernel può mettere a disposizione.\footnote{ad esempio si
gestiscono con questa funzione varie modalità di I/O asincrono (vedi
- sez.~\ref{sec:file_asyncronous_operation}) e il file locking
+ sez.~\ref{sec:file_asyncronous_operation}) e il \textit{file locking}
\index{file!locking} (vedi sez.~\ref{sec:file_locking}).}
Per queste operazioni di manipolazione e di controllo delle varie proprietà e
%% gapil.tex
%%
-%% Copyright (C) 2000-2005 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-2006 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",
%% intro.tex
%%
-%% Copyright (C) 2000-2005 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-2006 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",
sblocco non servirebbe comunque, dato che l'operazione non sarebbe atomica.
Vedremo in sez.~\ref{sec:ipc_lock_file} come sia possibile ottenere
un'interfaccia analoga a quella appena illustrata, senza incorrere in questi
-problemi, usando il file locking\index{file!locking}.
+problemi, usando il \index{file!locking} \textit{file locking}.
\subsection{Memoria condivisa}
\end{minipage}
\normalsize
\caption{Il codice delle funzioni che permettono per la gestione dei
- \textit{mutex} con il file locking\index{file!locking}.}
+ \textit{mutex} con il \index{file!locking} \textit{file locking}.}
\label{fig:ipc_flock_mutex}
\end{figure}
Il codice delle varie funzioni usate per implementare un mutex utilizzando il
-file locking\index{file!locking} è riportato in fig.~\ref{fig:ipc_flock_mutex};
-si è mantenuta volutamente una struttura analoga alle precedenti funzioni che
-usano i semafori, anche se le due interfacce non possono essere completamente
-equivalenti, specie per quanto riguarda la rimozione del mutex.
+\textit{file locking} \index{file!locking} è riportato in
+fig.~\ref{fig:ipc_flock_mutex}; si è mantenuta volutamente una struttura
+analoga alle precedenti funzioni che usano i semafori, anche se le due
+interfacce non possono essere completamente equivalenti, specie per quanto
+riguarda la rimozione del mutex.
La prima funzione (\texttt{\small 1--5}) è \func{CreateMutex}, e serve a
creare il mutex; la funzione è estremamente semplice, e si limita
(\texttt{\small 4}) a creare, con una opportuna chiamata ad \func{open}, il
-file che sarà usato per il successivo file locking, assicurandosi che non
-esista già (nel qual caso segnala un errore); poi restituisce il file
+file che sarà usato per il successivo \textit{file locking}, assicurandosi che
+non esista già (nel qual caso segnala un errore); poi restituisce il file
descriptor che sarà usato dalle altre funzioni per acquisire e rilasciare il
mutex.
La seconda funzione (\texttt{\small 6--10}) è \func{FindMutex}, che, come la
precedente, è stata definita per mantenere una analogia con la corrispondente
funzione basata sui semafori. Anch'essa si limita (\texttt{\small 9}) ad
-aprire il file da usare per il file locking, solo che in questo caso le
-opzioni di \func{open} sono tali che il file in questione deve esistere di
-già.
+aprire il file da usare per il \index{file!locking} \textit{file locking},
+solo che in questo caso le opzioni di \func{open} sono tali che il file in
+questione deve esistere di già.
La terza funzione (\texttt{\small 11--22}) è \func{LockMutex} e serve per
acquisire il mutex. La funzione definisce (\texttt{\small 14}) e inizializza
rilasciare il mutex. La funzione è analoga alla precedente, solo che in questo
caso si inizializza (\texttt{\small 28--31}) la struttura \var{lock} per il
rilascio del lock, che viene effettuato (\texttt{\small 33}) con la opportuna
-chiamata a \func{fcntl}. Avendo usato il file locking in semantica POSIX (si
-riveda quanto detto sez.~\ref{sec:file_posix_lock}) solo il processo che ha
-precedentemente eseguito il lock può sbloccare il mutex.
+chiamata a \func{fcntl}. Avendo usato il \index{file!locking} \textit{file
+ locking} in semantica POSIX (si riveda quanto detto
+sez.~\ref{sec:file_posix_lock}) solo il processo che ha precedentemente
+eseguito il lock può sbloccare il mutex.
La quinta funzione (\texttt{\small 36--39}) è \func{RemoveMutex} e serve a
cancellare il mutex. Anche questa funzione è stata definita per mantenere una
%% macro.tex
%%
-%% Copyright (C) 2000-2005 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-2006 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",
%% prochand.tex
%%
-%% Copyright (C) 2000-2005 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-2006 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",
%% ringraziamenti.tex
%%
-%% Copyright (C) 2000-2005 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-2006 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",
%%% mode: latex
%%% TeX-master: "gapil"
%%% End:
+
+% LocalWords: GaPiL Masini calling convention Maischberger HTML Group FLUG CVS
+% LocalWords: repository Truelite Srl SVN
%% sockctrl.tex
%%
-%% Copyright (C) 2004-2005 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2004-2006 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",
\subsection{I valori di controllo per il protocollo IPv4}
-\label{sec:sock_gen_sysctl}
+\label{sec:sock_ipv4_sysctl}
Nella directory \texttt{/proc/sys/net/ipv4} sono presenti i file che
corrispondono ai parametri dei socket che usano il protocollo IPv4, relativi
\const{MS\_NODEV} & 4 & impedisce l'accesso ai file di dispositivo.\\
\const{MS\_NOEXEC} & 8 & impedisce di eseguire programmi.\\
\const{MS\_SYNCHRONOUS}& 16 & abilita la scrittura sincrona.\\
- \const{MS\_REMOUNT} & 32 & rimonta il filesystem cambiando i flag.\\
- \const{MS\_MANDLOCK} & 64 & consente il \textit{mandatory locking} (vedi
+ \const{MS\_REMOUNT} & 32 & rimonta il filesystem cambiando le opzioni.\\
+ \const{MS\_MANDLOCK} & 64 & consente il \textit{mandatory locking}
+ \itindex{mandatory~locking} (vedi
sez.~\ref{sec:file_mand_locking}).\\
\const{S\_WRITE} & 128 & scrive normalmente.\\
\const{S\_APPEND} & 256 & consente la scrittura solo in
un errore di \errcode{EFBIG}.\\
\const{RLIMIT\_LOCKS}& È un limite presente solo nelle prime versioni
del kernel 2.4 sul numero massimo di
- \index{file!locking}\textit{file lock} (vedi
+ \index{file!locking} \textit{file lock} (vedi
sez.~\ref{sec:file_locking}) che un
processo poteva effettuare.\\
\const{RLIMIT\_MEMLOCK}& L'ammontare massimo di memoria che può essere