Aggiunte cfmakeraw, cfsetspeed e rivisti alcuni titoli.
authorSimone Piccardi <piccardi@gnulinux.it>
Fri, 12 Aug 2011 12:21:56 +0000 (12:21 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Fri, 12 Aug 2011 12:21:56 +0000 (12:21 +0000)
ipc.tex
prochand.tex
session.tex

diff --git a/ipc.tex b/ipc.tex
index bb9e0b06cece8f401be8ca380b54c8c570ef5960..bd6d12676be460dcdebd2ad3b7cba8519d655d09 100644 (file)
--- a/ipc.tex
+++ b/ipc.tex
@@ -9,7 +9,7 @@
 %% License".
 %%
 
-\chapter{Lcomunicazione fra processi}
+\chapter{L'intercomunicazione fra processi}
 \label{cha:IPC}
 
 
@@ -27,7 +27,7 @@ complessi ed evoluti come le RPC (\textit{Remote Procedure Calls}) e CORBA
 implementati con un ulteriore livello sopra i meccanismi elementari.
 
 
-\section{Lcomunicazione fra processi tradizionale}
+\section{L'intercomunicazione fra processi tradizionale}
 \label{sec:ipc_unix}
 
 Il primo meccanismo di comunicazione fra processi introdotto nei sistemi Unix,
@@ -779,7 +779,7 @@ all'interno di uno stesso processo, ma fra processi distinti (torneremo su
 questa funzionalità in sez.~\ref{sec:sock_fd_passing}).
 
 
-\section{Il sistema di comunicazione fra processi di System V}
+\section{L'intercomunicazione fra processi di System V}
 \label{sec:ipc_sysv}
 
 Benché le pipe e le fifo siano ancora ampiamente usate, esse scontano il
@@ -3249,7 +3249,7 @@ sez.~\ref{sec:ipc_sysv_shm} che possa restituisca i risultati via rete.
 
 % TODO fare esempio di mmap anonima
 
-\section{Il sistema di comunicazione fra processi di POSIX}
+\section{L'intercomunicazione fra processi di POSIX}
 \label{sec:ipc_posix}
 
 Per superare i numerosi problemi del \textit{SysV IPC}, evidenziati per i suoi
index 76b68e2d4b8595471ab95a2648f2b7ba0c5964f3..8113d7f095f6f82e73022095fc1fcea78c472150 100644 (file)
@@ -3368,14 +3368,13 @@ cui si compiono le operazioni sulle risorse condivise (le cosiddette
 opportunamente protette da meccanismi di sincronizzazione (torneremo su queste
 problematiche di questo tipo in cap.~\ref{cha:IPC}).
 
-\itindbeg{deadlock}
-Un caso particolare di \textit{race condition} sono poi i cosiddetti
-\textit{deadlock}, particolarmente gravi in quanto comportano spesso il blocco
-completo di un servizio, e non il fallimento di una singola operazione. Per
-definizione un \textit{deadlock} è una situazione in cui due o più processi
-non sono più in grado di proseguire perché ciascuno aspetta il risultato di
-una operazione che dovrebbe essere eseguita dall'altro.
-
+\itindbeg{deadlock} Un caso particolare di \textit{race condition} sono poi i
+cosiddetti \textit{deadlock} (traducibile in \textsl{condizioni di stallo}),
+particolarmente gravi in quanto comportano spesso il blocco completo di un
+servizio, e non il fallimento di una singola operazione. Per definizione un
+\textit{deadlock} è una situazione in cui due o più processi non sono più in
+grado di proseguire perché ciascuno aspetta il risultato di una operazione che
+dovrebbe essere eseguita dall'altro.
 
 L'esempio tipico di una situazione che può condurre ad un
 \textit{deadlock} è quello in cui un flag di
index fdb7683579fc45b18e0a0187a58c451d26f82d87..ba19e17ff0e58863cd68a3bf340119f1686bf3d7 100644 (file)
@@ -2083,6 +2083,22 @@ la connessione, qualora invece si utilizzi questo valore per la linea di input
 l'effetto sarà quello di rendere la sua velocità identica a quella della linea
 di output.
 
+Dato che in genere si imposta sempre la stessa velocità sulle linee di uscita
+e di ingresso è supportata anche la funzione \funcd{cfsetspeed}, una
+estensione di BSD,\footnote{la funzione origina da 4.4BSD e richiede sua
+  definita la macro \macro{\_BSD\_SOURCE}.} il cui prototipo è:
+\begin{functions}
+  \headdecl{unistd.h} 
+  \headdecl{termios.h}  
+  \funcdecl{int cfsetspeed(struct termios *termios\_p, speed\_t speed)} 
+  Imposta la velocità delle linee seriali.
+
+  \bodydesc{La funzione restituisce 0 in caso di successo e -1 in caso di
+    errore, che avviene solo quando il valore specificato non è valido.}
+\end{functions}
+\noindent la funzione è identica alle due precedenti ma imposta la stessa
+velocità sia per la linea di ingresso che per quella di uscita.
+
 Analogamente a quanto avviene per l'impostazione, le velocità possono essere
 lette da una struttura \struct{termios} utilizzando altre due funzioni,
 \funcd{cfgetispeed} e \funcd{cfgetospeed}, i cui prototipi sono:
@@ -2104,6 +2120,25 @@ linea da una struttura, il cui indirizzo è specificato dall'argomento
 \param{termios\_p} che deve essere stata letta in precedenza con
 \func{tcgetattr}.
 
+Infine sempre da BSD è stata ripresa una funzione che consente di impostare il
+teminale in una modalità analoga all cosiddetta modalità ``\textit{raw}'' di
+System V, in cui i dati in input vengono resi disponibili un carattere alla
+volta, e l'echo e tutte le interpretazioni dei caratteri in entrata e uscita
+sono disabilitate. La funzione è \funcd{cfmakeraw} ed il suo prototipo è:
+\begin{functions}
+  \headdecl{unistd.h} 
+  \headdecl{termios.h}  
+  \funcdecl{void cfmakeraw(struct termios *termios\_p)} 
+  Importa il terminale in  modalità ``\textit{raw}'' alla System V.
+  
+  \bodydesc{La funzione imposta solo i valori in \param{termios\_p}, e non
+    sono previste condizioni di errore.}
+\end{functions}
+
+Anche in questo caso la funzione si limita a preparare i valori che poi
+saranno impostato con una successiva chiamata a \func{tcsetattr}, in sostanza
+la funzione è equivalente a:
+\includecodesnip{listati/cfmakeraw.c}
 
 
 \subsection{La gestione della disciplina di linea.}