Flag per il controllo del terminale
[gapil.git] / session.tex
index 653ff75f175b3fe0fb0fce4ec4ff8acd510242fb..82d4ff701fd78d2871cd2aa441a825c885723476 100644 (file)
@@ -970,12 +970,12 @@ coda pu
 abilitato il controllo di flusso in ingresso il driver emette i caratteri di
 STOP e START per bloccare e sbloccare l'ingresso dei dati; altrimenti i
 caratteri immessi oltre le dimensioni massime vengono persi; in alcuni casi il
-driver provvede ad inviare automaticamente un avviso (un carattere di
-\textit{BELL}, che provoca un beep) sull'output quando si eccedono le
-dimensioni della coda. Se è abilitato il modo canonico i caratteri in ingresso
-restano nella coda fintanto che non viene ricevuto un a capo; un'altra
-costante, \macro{MAX\_CANON}, specifica la dimensione massima di una riga in
-modo canonico.
+driver provvede ad inviare automaticamente un avviso (un carattere di BELL,
+che provoca un beep) sull'output quando si eccedono le dimensioni della coda.
+Se è abilitato il modo canonico i caratteri in ingresso restano nella coda
+fintanto che non viene ricevuto un a capo; un'altra costante,
+\macro{MAX\_CANON}, specifica la dimensione massima di una riga in modo
+canonico.
 
 La coda di uscita è analoga a quella di ingresso e contiene i caratteri
 scritti dai processi ma non ancora inviati al terminale. Se è abilitato il
@@ -1057,39 +1057,20 @@ terminale; essi sono realizzati come maschera binaria, pertanto il tipo
 opportuna. I valori devono essere specificati bit per bit, avendo cura di non
 modificare i bit su cui non si interviene.
 
-Il primo flag, \var{c\_iflag}, o flag di input, controlla le modalità
-dell'ingresso dei dati sul terminale come il controllo di parità, il controllo
-di flusso, la gestione dei caratteri speciali; un elenco dei vari bit, del
-loro significato e delle costanti utilizzate per identificarli è riportato in
-\tabref{tab:sess_termios_iflag}.
-
-\begin{table}[htb]
+\begin{table}[b!ht]
   \footnotesize
   \centering
-  \begin{tabular}[c]{|l|p{10cm}|}
+  \begin{tabular}[c]{|l|p{13cm}|}
     \hline
     \textbf{Valore}& \textbf{Significato}\\
     \hline
     \hline
-    \macro{IGNBRK} & Ignora le condizioni di \textit{BREAK} sull'input. Una
-                     \textit{condizione di BREAK} è definita nel contesto di
-                     una trasmissione seriale asincrona come una sequenza di
-                     bit nulli più lunga di un byte. \\
-    \macro{BRKINT} & Se si è impostato \macro{IGNBRK} un \textit{BREAK} viene
-                     comunque ignorato.  Altrimenti se \macro{BRKINT} è
-                     impostato il \textit{BREAK} causa lo scarico delle code, 
-                     e se il terminale è il terminale di controllo per un 
-                     gruppo in foreground anche l'invio di \macro{SIGINT} ai
-                     processi di quest'ultimo. Se invece  \macro{BRKINT} è
-                     impostato un \textit{BREAK} viene letto come un carattere
-                     \textit{NUL}, a meno che non sia settato \macro{PARMRK}
-                     nel qual caso viene letto come la sequenza di caratteri
-                     \texttt{0xFF 0x00 0x00}.\\
     \macro{INPCK}  & Abilita il controllo di parità in ingresso. Se non viene
                      impostato non viene fatto nessun controllo ed i caratteri
                      vengono passati in input direttamente.\\
-    \macro{IGNPAR} & Ignora gli errori di parità. Ha senso solo se si è
-                     impostato \macro{INPCK}.\\
+    \macro{IGNPAR} & Ignora gli errori di parità, il carattere viene passato
+                     come ricevuto. Ha senso solo se si è impostato 
+                     \macro{INPCK}.\\
     \macro{PARMRK} & Controlla come vengono riportati gli errori di parità. Ha 
                      senso solo se \macro{INPCK} è impostato e \macro{IGNPAR}
                      no. Se impostato inserisce una sequenza \texttt{0xFF
@@ -1097,16 +1078,58 @@ loro significato e delle costanti utilizzate per identificarli 
                      parità, se non impostato un carattere con errori di
                      parità viene letto come uno \texttt{0x00}. Se un
                      carattere ha il valore \texttt{0xFF} e \macro{ISTRIP} 
-                     non è settato, per evitare ambiguità esso viene  \\ 
-    \macro{ISTRIP} & .\\
-    \macro{INLCR}  & .\\
-    \macro{IGNCR}  & .\\
-    \macro{ICRNL}  & .\\
-    \macro{IUCLC}  & .\\
-    \macro{IXON}   & .\\
-    \macro{IXANY}  & .\\
-    \macro{IXOFF}  & .\\
-    \macro{IMAXBEL}& .\\
+                     non è settato, per evitare ambiguità esso viene sempre
+                     riportato come \texttt{0xFF 0xFF}.\\
+    \macro{ISTRIP} & Se impostato i caratteri in input sono tagliati a sette
+                     bit mettendo a zero il bit più significativo, altrimenti 
+                     vengono passati tutti gli otto bit.\\
+    \macro{IGNBRK} & Ignora le condizioni di BREAK sull'input. Una
+                     \textit{condizione di BREAK} è definita nel contesto di
+                     una trasmissione seriale asincrona come una sequenza di
+                     bit nulli più lunga di un byte. \\
+    \macro{BRKINT} & Controlla la reazione ad un BREAK quando
+                     \macro{IGNBRK} non è impostato. Se \macro{BRKINT} è
+                     impostato il BREAK causa lo scarico delle code, 
+                     e se il terminale è il terminale di controllo per un 
+                     gruppo in foreground anche l'invio di \macro{SIGINT} ai
+                     processi di quest'ultimo. Se invece \macro{BRKINT} non è
+                     impostato un BREAK viene letto come un carattere
+                     NUL, a meno che non sia settato \macro{PARMRK}
+                     nel qual caso viene letto come la sequenza di caratteri
+                     \texttt{0xFF 0x00 0x00}.\\
+    \macro{IGNCR}  & Se impostato il carattere di ritorno carrello 
+                     (\textit{carriage return}, \verb|'\r'|) viene scartato 
+                     dall'input. Può essere utile per i terminali che inviano 
+                     entrambi i caratteri di ritorno carrello e a capo 
+                     (\textit{newline}, \verb|'\n'|).  \\
+    \macro{ICRNL}  & Se impostato un carattere di ritorno carrello  
+                     (\verb|'\r'|) sul terminale viene automaticamente 
+                     trasformato in un a capo (\verb|'\n'|) sulla coda di
+                     input. \\
+    \macro{INLCR}  & Se impostato il carattere di a capo
+                     (\verb|'\n'|) viene automaticamente trasformato in un
+                     ritorno carello (\verb|'\r'|).\\
+    \macro{IUCLC}  & Se impostato trasforma i caratteri maiuscoli dal
+                     terminale in minuscoli sull'ingresso (opzione non 
+                     POSIX).\\
+    \macro{IXON}   & Se impostato attiva il controllo di flusso in uscita con i
+                     caratteri di START e STOP. se si riceve
+                     uno STOP l'output viene bloccato, e viene fatto
+                     ripartire solo da uno START, e questi due
+                     caratteri non vengono passati alla coda di input. Se non
+                     impostato i due caratteri sono passati alla coda di input
+                     insieme agli altri.\\
+    \macro{IXANY}  & Se impostato con il controllo di flusso permette a
+                     qualunque carattere di far ripartire l'output bloccato da
+                     un carattere di STOP.\\
+    \macro{IXOFF}  & Se impostato abilita il controllo di flusso in
+                     ingresso. Il computer emette un carattere di STOP per
+                     bloccare l'input dal terminale e lo sblocca con il
+                     carattere START. \\
+    \macro{IMAXBEL}& Se impostato fa suonare il cicalino se si riempie la cosa
+                     di ingresso; in Linux non è implementato e il kernel si
+                     comporta cose se fosse sempre settato (è una estensione
+                     BSD). \\
     \hline
   \end{tabular}
   \caption{Costanti identificative dei vari bit del flag di controllo
@@ -1114,35 +1137,57 @@ loro significato e delle costanti utilizzate per identificarli 
   \label{tab:sess_termios_iflag}
 \end{table}
 
-
-Il secondo flag, \var{c\_oflag}, o flag di output, controlla le modalità di
-output, come l'impacchettamento dei caratteri sullo schermo, la traslazione
-degli a capo, la conversione dei caratteri speciali; un elenco dei vari bit,
-del loro significato e delle costanti utilizzate per identificarli è riportato
-in \tabref{tab:sess_termios_oflag}.
+Il primo flag, mantenuto nel campo \var{c\_iflag}, è detto \textsl{flag di
+  input} e controlla le modalità di funzionamento dell'input dei caratteri sul
+terminale, come il controllo di parità, il controllo di flusso, la gestione
+dei caratteri speciali; un elenco dei vari bit, del loro significato e delle
+costanti utilizzate per identificarli è riportato in
+\tabref{tab:sess_termios_iflag}.
 
 \begin{table}[htb]
   \footnotesize
   \centering
-  \begin{tabular}[c]{|l|p{10cm}|}
+  \begin{tabular}[c]{|l|p{13cm}|}
     \hline
     \textbf{Valore}& \textbf{Significato}\\
     \hline
     \hline
-    \macro{OPOST} & . \\
-    \macro{OLCUC} & .\\
-    \macro{ONLCR} & .\\
-    \macro{OCRNL} & .\\
-    \macro{ONOCR} & .\\
-    \macro{ONLRET} & .\\
-    \macro{OFILL} & . \\
-    \macro{OFDEL} & .\\
-    \macro{NLDLY} & .\\
-    \macro{CRDLY} & .\\
-    \macro{TABDLY} & .\\
-    \macro{BSDLY} & .\\
-    \macro{VTDLY} & .\\
-    \macro{FFDLY} & .\\
+    \macro{OPOST} & Se impostato i caratteri vengono convertiti opportunamente
+                    per la visulizzazione sul terminale, ad esempio al
+                    carattere di a capo (NL) può venire aggiunto un ritorno
+                    carrello (CR).\\
+    \macro{OCRNL} & Se impostato converte automaticamente il carattere di a
+                    capo (NL) nella coppia ritorno carrello, a capo (CR-LF).\\
+    \macro{OLCUC} & Se impostato trasforma i caratteri minuscoli in caratteri
+                    maiuscoli sull'uscita.\\
+    \macro{ONLCR} & Se impostato converte il carattere di a capo (NL) in
+                    ritorno carrello (CR).\\
+    \macro{ONOCR} & Se impostato converte il ritorno carrello (CR) nella
+                    coppia CR-LF.\\
+    \macro{ONLRET}& Se impostato rimuove dall'output il carattere di ritorno
+                    carrello (CR).\\
+    \macro{OFILL} & Se impostato in caso di ritardo sulla linea invia dei
+                    caratteri di riempimento invece di attendere.\\
+    \macro{OFDEL} & Se impostato il carattere di riempimento è DEL
+                    (\texttt{0x3F}), invece che NUL (\texttt{0x00}).\\
+    \macro{NLDLY} & Maschera per i bit che indicano il ritardo per il
+                    carattere di a capo, i valori possibili sono \macro{NL0} o
+                    \macro{NL1}.\\
+    \macro{CRDLY} & Maschera per i bit che indicano il ritardo per il
+                    carattere ritorno carrello, i valori possibili sono
+                    \macro{CR0}, \macro{CR1}, \macro{CR2} o \macro{CR3}.\\
+    \macro{TABDLY}& Maschera per i bit che indicano il ritardo per il
+                    carattere di tabulazione, i valori possibili sono
+                    \macro{TAB0}, \macro{TAB1}, \macro{TAB2} o \macro{TAB3}.\\
+    \macro{BSDLY} & Maschera per i bit che indicano il ritardo per il
+                    carattere di ritorno indietro (\textit{backspace}), i
+                    valori possibili sono \macro{BS0} o \macro{BS1}.\\
+    \macro{VTDLY} & Maschera per i bit che indicano il ritardo per il
+                    carattere di tabulazione verticale, i valori possibili sono
+                    \macro{VT0} o \macro{VT1}.\\
+    \macro{FFDLY} & Maschera per i bit che indicano il ritardo per il
+                    carattere di pagina nuova (\textit{form feed}), i valori
+                    possibili sono \macro{FF0} o \macro{FF1}.\\
     \hline
   \end{tabular}
   \caption{Costanti identificative dei vari bit del flag di controllo
@@ -1150,11 +1195,13 @@ in \tabref{tab:sess_termios_oflag}.
   \label{tab:sess_termios_oflag}
 \end{table}
 
-Il terzo flag, \var{c\_cflag}, o flag di controllo è legato al funzionamento
-delle linee seriali permette di impostarne varie caratteristiche, come il
-numero di bit di stop, i settaggi della parità, il funzionamento del controllo
-di flusso; un elenco dei vari bit, del loro significato e delle costanti
-utilizzate per identificarli è riportato in \tabref{tab:sess_termios_cflag}.
+
+Il secondo flag, mantenuto nel campo \var{c\_oflag}, è detto \textsl{flag di
+  output} e controlla le modalità di funzionamento dell'output dei caratteri,
+come l'impacchettamento dei caratteri sullo schermo, la traslazione degli a
+capo, la conversione dei caratteri speciali; un elenco dei vari bit, del loro
+significato e delle costanti utilizzate per identificarli è riportato in
+\tabref{tab:sess_termios_oflag}.
 
 \begin{table}[htb]
   \footnotesize
@@ -1164,18 +1211,40 @@ utilizzate per identificarli 
     \textbf{Valore}& \textbf{Significato}\\
     \hline
     \hline
-    \macro{CBAUD} & . \\
-    \macro{CBAUDEX} & .\\
-    \macro{CSIZE} & .\\
-    \macro{CSTOPB} & .\\
-    \macro{CREAD} & .\\
-    \macro{PARENB} & .\\
-    \macro{PARODD} & . \\
-    \macro{HUPCL} & .\\
-    \macro{CLOCAL} & .\\
-    \macro{LOBLK} & .\\
-    \macro{CIBAUD} & .\\
-    \macro{CRTSCTS} & .\\
+    \macro{CLOCAL} & Se impostato indica che il terminale è connesso in locale
+                     e che le linee di controllo del modem devono venire 
+                     ignorate. Se questo flag non è impostato una chiamata ad
+                     \func{open} per la quale non si sia impostato
+                     \macro{O\_NOBLOCK} si bloccherà finché non si sia
+                     stabilita una connessione con il modem, e se viene
+                     rilevata una disconessione viene inviato un
+                     \macro{SIGHUP} al processo di controllo del terminale. La
+                     lettura su un terminale sconnesso comporta una condizione
+                     di \textit{end of file} e la scrittura un errore di
+                     \macro{EIO}. \\
+    \macro{HUPCL}  & Se è impostato vengono staccate le linee di
+                     connessione del modem quando non resta più nessun
+                     processo che ha un file aperto sul terminale.\\
+    \macro{CREAD}  & Se non è impostato l'input del terminale viene scartato.\\
+    \macro{CSTOPB} & Se impostato vengono usati due bit di stop sulla linea
+                     seriale invece di uno.\\
+    \macro{PARENB} & Se impostato abilita la generazione il controllo di
+                     parità. Se non è impostato i bit di parità non vengono
+                     generati e i caratteri non vengono controllati.\\
+    \macro{PARODD} & Ha senso solo se è impostato \macro{PARENB}. Se impostato
+                     la parità è dispari, altrimenti è pari.\\
+    \macro{CSIZE}  & Maschera per i bit che indicano la dimensione del
+                     carattere, i valori possibili sono
+                    \macro{CS5}, \macro{CS6}, \macro{CS7} e \macro{CS8}.\\
+    \macro{CBAUD}  & Maschera dei bit (4+1) usati per impostare della velocità
+                     della linea (il \textit{baud rate}). In Linux viene 
+                     usato un apposito campo di \var{termios}.\\
+    \macro{CBAUDEX}& Bit aggiuntivo per l'impostazione della velocità della
+                     linea.\\
+    \macro{CIBAUD} & Maschera dei bit della velocità della linea in
+                     ingresso. Analogo a \macro{CBAUD}, anch'esso in Linux è
+                     mantenuto in un apposito campo di \var{termios}. \\
+    \macro{CRTSCTS}& Abilita il controllo di flusso hardware (RTS/CTS).\\
     \hline
   \end{tabular}
   \caption{Costanti identificative dei vari bit del flag di controllo
@@ -1183,13 +1252,14 @@ utilizzate per identificarli 
   \label{tab:sess_termios_cflag}
 \end{table}
 
+Il terzo flag, mantenuto nel campo \var{c\_cflag}, è detto \textsl{flag di
+  controllo} ed è legato al funzionamento delle linee seriali, permettendo di
+impostarne varie caratteristiche, come il numero di bit di stop, i settaggi
+della parità, il funzionamento del controllo di flusso; esso ha senso solo per
+i terminali connessi a linee seriali. Un elenco dei vari bit, del loro
+significato e delle costanti utilizzate per identificarli è riportato in
+\tabref{tab:sess_termios_cflag}.
 
-Il quarto flag, \var{c\_lflag}, o flag locale, serve per modificare il
-funzionamento dell'interfaccia fra il driver e l'utente, come abilitare l'eco,
-controllare l'emissione dei segnali generati dal terminale, attivare i
-caratteri per il job control; un elenco dei vari bit, del loro significato e
-delle costanti utilizzate per identificarli è riportato in
-\tabref{tab:sess_termios_lflag}.
 
 \begin{table}[htb]
   \footnotesize
@@ -1199,16 +1269,18 @@ delle costanti utilizzate per identificarli 
     \textbf{Valore}& \textbf{Significato}\\
     \hline
     \hline
-    \macro{ISIG} & . \\
-    \macro{ICANON} & .\\
-    \macro{XCASE} & .\\
-    \macro{ECHO} & .\\
-    \macro{ECHOE} & .\\
-    \macro{ECHOK} & .\\
-    \macro{ECHONL} & . \\
-    \macro{ECHOPRT} & .\\
+    \macro{ICANON} & Se impostato il terminale opera in modo canonico,
+                     altrimenti opera in modo non canonico.\\
+    \macro{ECHO}   & Se è impostato viene attivato l'eco dei caratteri in
+                     input sull'output del terminale.\\
+    \macro{ECHOE}  & .\\
+    \macro{ISIG}   & .\\
+    \macro{XCASE}  & .\\
+    \macro{ECHOK}  & .\\
+    \macro{ECHONL} & .\\
+    \macro{ECHOPRT}& .\\
     \macro{ECHOKE} & .\\
-    \macro{DEFECHO} & .\\
+    \macro{DEFECHO}& .\\
     \macro{FLUSHO} & .\\
     \macro{NOFLSH} & .\\
     \macro{TOSTOP} & .\\
@@ -1222,6 +1294,13 @@ delle costanti utilizzate per identificarli 
 \end{table}
 
 
+Il quarto flag, mantenuto nel campo \var{c\_lflag}, è detto \textsl{flag
+  locale}, e serve per controllare il funzionamento dell'interfaccia fra il
+driver e l'utente, come abilitare l'eco, gestire i caratteri di controllo e
+l'emissione dei segnali, impostare modo canonico o non canonico; un elenco dei
+vari bit, del loro significato e delle costanti utilizzate per identificarli è
+riportato in \tabref{tab:sess_termios_lflag}.
+