From: Simone Piccardi Date: Tue, 14 May 2002 17:45:03 +0000 (+0000) Subject: Revisione X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=commitdiff_plain;h=128620016688ca796362cef5b1fefe9e8b52f112;hp=b08cbbc5abd1579c0a94d357d5ded1fe902044a0 Revisione --- diff --git a/system.tex b/system.tex index 8b11714..1f1f00c 100644 --- a/system.tex +++ b/system.tex @@ -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}