X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=session.tex;h=ba19e17ff0e58863cd68a3bf340119f1686bf3d7;hp=fdb7683579fc45b18e0a0187a58c451d26f82d87;hb=e2f92e43947fa40f05fd7d07b0a6a3a95c0a11b4;hpb=607fcef8aad9ec8be0a80cc4c069c92902455f90 diff --git a/session.tex b/session.tex index fdb7683..ba19e17 100644 --- a/session.tex +++ b/session.tex @@ -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.}