Inizio della revisione del formato per la suddivisione in due parti,
[gapil.git] / session.tex
index fdb7683579fc45b18e0a0187a58c451d26f82d87..0cb02ef4de4ddb3bf48289912d0a2f5d3e28a136 100644 (file)
@@ -534,9 +534,8 @@ comunque viene sempre fatto è di eseguire almeno una istanza di un programma
 che permetta l'accesso ad un terminale. Uno schema di massima della procedura
 è riportato in fig.~\ref{fig:sess_term_login}.
 
-\begin{figure}[htb]
-  \centering
-  \includegraphics[width=13cm]{img/tty_login}
+\begin{figure}[!htb]
+  \centering \includegraphics[width=13cm]{img/tty_login}
   \caption{Schema della procedura di login su un terminale.}
   \label{fig:sess_term_login}
 \end{figure}
@@ -994,7 +993,7 @@ sono riportati in fig.~\ref{fig:printk_priority}
 
 \begin{figure}[!htb]
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\textwidth}
     \includestruct{listati/printk_prio.c}
   \end{minipage} 
   \normalsize 
@@ -1256,7 +1255,7 @@ bufferizzazione all'interno del kernel.\footnote{completamente indipendente
   dalla eventuale ulteriore bufferizzazione fornita dall'interfaccia standard
   dei file.}
 
-\begin{figure}[htb]
+\begin{figure}[!htb]
   \centering \includegraphics[width=14.5cm]{img/term_struct}
   \caption{Struttura interna generica di un driver per un terminale.}
   \label{fig:term_struct}
@@ -1399,7 +1398,7 @@ ne aggiungono degli altri per mantenere ulteriori informazioni.\footnote{la
 
 \begin{figure}[!htb] 
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\textwidth}
     \includestruct{listati/termios.h}
   \end{minipage} 
   \normalsize 
@@ -1976,9 +1975,9 @@ se soltanto uno dei cambiamenti richiesti è stato eseguito. Pertanto se si
 effettuano più cambiamenti è buona norma controllare con una ulteriore
 chiamata a \func{tcgetattr} che essi siano stati eseguiti tutti quanti.
 
-\begin{figure}[!htb]
+\begin{figure}[!htbp]
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\codesamplewidth}
     \includecodesample{listati/SetTermAttr.c}
   \end{minipage} 
   \normalsize 
@@ -2009,9 +2008,9 @@ infine si scrive il nuovo valore modificato con \func{tcsetattr}
 (\texttt{\small 13}), notificando un eventuale errore (\texttt{\small 14-15})
 o uscendo normalmente.
 
-\begin{figure}[!htb]
+\begin{figure}[!htbp]
   \footnotesize \centering
-  \begin{minipage}[c]{15cm}
+  \begin{minipage}[c]{\codesamplewidth}
     \includecodesample{listati/UnSetTermAttr.c}
   \end{minipage} 
   \normalsize 
@@ -2083,6 +2082,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 +2119,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.}