Revisione
authorSimone Piccardi <piccardi@gnulinux.it>
Tue, 14 May 2002 17:45:03 +0000 (17:45 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Tue, 14 May 2002 17:45:03 +0000 (17:45 +0000)
system.tex

index 8b117142910ddc8788ecc267081272fbd9fcd01a..1f1f00c58dc9165286fd66d96f0797cc136afb01 100644 (file)
@@ -1935,11 +1935,7 @@ effettuto.
 
 Linux poi prevede un'altra funzione, \func{adjtimex}, che consente un
 aggiustamento molto più dettagliato, permettendo ad esempio anche di
-modificare anche la velocità dell'orologio di sistema. La funzione utilizza il
-meccanismo di David L. Mills, descritto nell'RFC~1305, che è alla base del
-protocollo NTP; la funzione è specifica di Linux e non deve essere usata se la
-portabilità è un requisito, le \acr{glibc} provvedono anhe un suo omonimo
-\func{ntp\_adjtime}. Il suo prototipo è:
+modificare anche la velocità dell'orologio di sistema.  Il suo prototipo è:
 \begin{prototype}{sys/timex.h}
 {int adjtimex(struct timex *buf)} 
   
@@ -1947,7 +1943,7 @@ portabilit
   
   \bodydesc{La funzione restituisce lo stato dell'orologio (un valore $>0$) in
     caso di successo e -1 in caso di errore, nel qual caso \var{errno}
-    assumerà il valore \macro{EPERM}.}
+    assumerà i valori \macro{EFAULT}, \macro{EINVAL} ed \macro{EPERM}.}
 \end{prototype}
 
 La funzione richiede una struttura di tipo \var{timex}, la cui definizione,
@@ -1991,11 +1987,15 @@ struct timex {
   \label{fig:sys_timex_struct}
 \end{figure}
 
-La trattazione completa di questa funzione necessita di una lettura
-approfondita del meccanismo descritto nell'RFC~1305, ci limitiamo a descrivere
-in \tabref{tab:sys_timex_mode} i principali valori utilizzabili, un elenco più
-dettagliato del significato dei vari campi può essere ritrovato in
-\cite{glibc}. 
+La funzione utilizza il meccanismo di David L. Mills, descritto nell'RFC~1305,
+che è alla base del protocollo NTP; la funzione è specifica di Linux e non
+deve essere usata se la portabilità è un requisito, le \acr{glibc} provvedono
+anche un suo omonimo \func{ntp\_adjtime}.  La trattazione completa di questa
+funzione necessita di una lettura approfondita del meccanismo descritto
+nell'RFC~1305, ci limitiamo a descrivere in \tabref{tab:sys_timex_mode} i
+principali valori utilizzabili per il campo \var{mode}, un elenco più
+dettagliato del significato dei vari campi della struttura \var{timex} può
+essere ritrovato in \cite{glibc}.
 
 \begin{table}[htb]
   \footnotesize
@@ -2046,14 +2046,75 @@ dettagliato del significato dei vari campi pu
   \label{tab:sys_timex_mode}
 \end{table}
 
-La funzione ritorna un valore positivo che esprime lo stato dell'orologio di
-sistema; questo può 
+Il valore delle costanti per \var{mode} può essere anche espresso, secondo la
+sintassi specificata per la forma equivalente di questa funzione definita come
+\func{ntp\_adjtime}, utilizzando il prefisso \macro{MOD} al posto di
+\macro{ADJ}.
+
+\begin{table}[htb]
+  \footnotesize
+  \centering
+  \begin{tabular}[c]{|l|c| p{10cm}|}
+    \hline
+    \textbf{Nome} & \textbf{Valore} & \textbf{Significato}\\
+    \hline
+    \hline
+    \macro{TIME\_OK}   & 0 & L'orologio è sincronizzato.\\ 
+    \macro{TIME\_INS}  & 1 & insert leap second.\\ 
+    \macro{TIME\_DEL}  & 2 & delete leap second.\\ 
+    \macro{TIME\_OOP}  & 3 & leap second in progress.\\ 
+    \macro{TIME\_WAIT} & 4 & leap second has occurred.\\ 
+    \macro{TIME\_BAD}  & 5 & L'orologio non è sincronizzato.\\ 
+    \hline
+  \end{tabular}
+  \caption{Possibili valori di ritorno di \func{adjtimex}.} 
+  \label{tab:sys_adjtimex_return}
+\end{table}
 
+La funzione ritorna un valore positivo che esprime lo stato dell'orologio di
+sistema; questo può assumere i valori riportati in
+\tabref{tab:sys_adjtimex_return}.  Un valore di -1 viene usato per riportare
+un errore; al solito se si cercherà di modificare l'orologio di sistema
+(specificando un \var{mode} diverso da zero) senza avere i privilegi di
+amministratore si otterrà un errore di \macro{EPERM}.
 
 
 \subsection{La gestione delle date.}
 \label{sec:sys_date}
 
+Le funzioni viste al paragrafo precedente sono molto utili per trattare le
+operazioni elementari sui tempi, però esprimere il tempo in numero di secondi,
+se ha senso per un intervallo, non è molto intuitivo quando si deve esprimere
+un'ora o una data in forma naturale.  Per questo motivo esiste una ulteriore
+rappresentazione, detta \textit{broken-down time}, che permette appunto di
+\textsl{suddividere} il \textit{calendar time} in ore, minuti, secondi, ecc.
+
+
+\begin{figure}[!htb]
+  \footnotesize \centering
+  \begin{minipage}[c]{15cm}
+    \begin{lstlisting}[labelstep=0]{}%,frame=,indent=1cm]{}
+struct tm {
+        int     tm_sec;         /* seconds */
+        int     tm_min;         /* minutes */
+        int     tm_hour;        /* hours */
+        int     tm_mday;        /* day of the month */
+        int     tm_mon;         /* month */
+        int     tm_year;        /* year */
+        int     tm_wday;        /* day of the week */
+        int     tm_yday;        /* day in the year */
+        int     tm_isdst;       /* daylight saving time */
+};
+    \end{lstlisting}
+  \end{minipage} 
+  \normalsize 
+  \caption{La struttura \var{tm} .}
+  \label{fig:sys_tm_struct}
+\end{figure}
+
+Questo viene effettuato attraverso una opportuna struttura \var{tm}, la cui
+definizione è riportata in \figref{fig:sys_tm_struct}, e a questo livello
+diventa anche possibile inserire la gestione dell'ora locale. 
 
 
 \section{La gestione degli errori}