Iniziata ioctl, aggiunti pezzi di fctnl
authorSimone Piccardi <piccardi@gnulinux.it>
Fri, 16 Nov 2001 00:01:36 +0000 (00:01 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Fri, 16 Nov 2001 00:01:36 +0000 (00:01 +0000)
fileunix.tex
gapil.tex

index a8a522867180c1d4e03c4531a9a13149115322ca..4343a898bbeb31017506243f08970c2fbb6e8326 100644 (file)
@@ -897,9 +897,52 @@ valori 
 \item[\macro{F\_SETFL}] setta il \textit{file status flag} al valore
   specificato da \param{arg}, possono essere settati solo i bit riportati
   nella terza sezione di \tabref{tab:file_open_flags} (da verificare).
+\item[\macro{F\_GETLK}]
+\item[\macro{F\_SETLK}]
+\item[\macro{F\_SETLKW}]
+\item[\macro{F\_GETOWN}]
+\item[\macro{F\_SETOWN}]
+\item[\macro{F\_GETSIG}]
+\item[\macro{F\_SETSIG}]
 \end{basedescript}
 
 
 \subsection{La funzione \func{ioctl}}
 \label{sec:file_ioctl}
 
+Benché il concetto di \textit{everything is a file} si sia dimostratato molto
+valido anche per l'interazione con i più vari dispositivi, con cui si può
+interagire con le stesse funzioni usate per i normali file di dati, ognuno di
+essi avrà poi delle caratteristiche peculiari, specifiche dell'hardware e
+della funzionalità che provvede, che non possono venire comprese in questa
+interfaccia astratta (un caso tipico è il settaggio della velocità di una
+porta seriale, o le dimensioni di un framebuffer).
+
+Per questo motivo fin dall'inizio è sempre stata previsto l'uso della funzione
+\func{ioctl} come un \textit{coltellino svizzero} con cui poter compiere tutte
+le operazioni specifiche e particolari di ogni singolo dispositivo. Tutto
+quello che non è possibile effettuare con le funzioni finora esaminate finisce
+per essere effettuato attraverso \func{ioctl}; il prototipo di questa funzione
+è:
+
+\begin{prototype}{sys/ioctl.h}{int ioctl(int fd, int request, ...)}
+  
+  La funzione manipola il sottostante dispositivo, usando il parametro
+  \param{request} per specificare l'operazione richiesta e il terzo parametro
+  (che usualmente è di tipo \param{char * argp}) per passare o ricevere
+  l'informazione necessaria al dispositivo.
+  
+  La funzione nella maggior parte dei casi ritorna 0, alcune operazioni usano
+  però il valore di ritorno per  in caso di successo e -1
+  in caso di errore, nel qual caso \var{errno} viene settata ad uno dei
+  valori:
+  \begin{errlist}
+  \item \macro{ENOTTY} il file \param{fd} non è associato con un device.
+  \item \macro{EINVAL} gli argomenti \param{request} o \param{argp} non sono
+    validi.
+  \end{errlist}
+  ed inoltre \macro{EBADF}, 
+\end{prototype}
+
+
+
index 162be338cf4875e578e1416aa0802bcdf457b262..3b8ed0bce59169bbb4fd74946df4440205a300a8 100644 (file)
--- a/gapil.tex
+++ b/gapil.tex
@@ -1,4 +1,4 @@
-%% 
+%%
 %% GaPiL : Guida alla Programmazione in Linux
 %%
 %% S. Piccardi Oct. 2000