SINTASSI
#define _BSD_SOURCE /* Vedi feature_test_macros(7) */
#include <sys/timex.h>
int adjtimex(struct timex *buf);
DESCRIZIONE
Linux usa l'algoritmo di correzione dell'orario di David L. Mill (vedere RFC 1305). La chiamata di sistema adjtimex() legge e imposta opzionalmente i parametri di correzione per questo algoritmo. Accetta un puntatore a una struttura timex, aggiorna i parametri del kernel in base ai valori dei campi e restituisce la medesima struttura con i valori correnti del kernel. La struttura è dichiarata nel seguento modo:
struct timex { int modes; /* selettore modalità */ long offset; /* spostamento orario (usec) */ long freq; /* spostamento frequenza (scaled ppm) */ long maxerror; /* errore massimo (usec) */ long esterror; /* errore stimato (usec) */ int status; /* stato/comando orologio */ long constant; /* costante di tempo pll */ long precision; /* precisione orologio (usec) (sola lettura) */ long tolerance; /* tolleranza frequenza orologio (ppm) (sola lettura) */ struct timeval time; /* orario attuale (sola lettura) */ long tick; /* usec tra i battiti dell'orologio */ };
Il campo modes determina quale eventuale parametro impostare. Può contenere una combinazione bitwise-or (OR bit-a-bit) di zero o più dei seguenti bit:
#define ADJ_OFFSET 0x0001 /* spostamento orario */ #define ADJ_FREQUENCY 0x0002 /* spostamento frequenza */ #define ADJ_MAXERROR 0x0004 /* errore tempo massimo */ #define ADJ_ESTERROR 0x0008 /* errore tempo stimato */ #define ADJ_STATUS 0x0010 /* stato orologio */ #define ADJ_TIMECONST 0x0020 /* costante di tempo pll */ #define ADJ_TICK 0x4000 /* valore battito */ #define ADJ_OFFSET_SINGLESHOT 0x8001 /* vecchio adjtime() */
Gli utenti ordinari sono limitati al valore zero per
modes.
Solo il superutente può impostare qualunque parametro.
VALORE RESTITUITO
In caso di successo, adjtimex() restituisce lo stato dell'orologio:
#define TIME_OK 0 /* orologio sincronizzato */ #define TIME_INS 1 /* inserire secondo intercalare */ #define TIME_DEL 2 /* cancellare secondo intercalare */ #define TIME_OOP 3 /* secondo intercalare in corso */ #define TIME_WAIT 4 /* secondo intercalare avvenuto */ #define TIME_BAD 5 /* orologio non sincronizzato */
Se fallisce, adjtimex() restituisce -1 e imposta errno.
ERRORI
- EFAULT
- buf non punta ad una zona di memoria scrivibile.
- EINVAL
- Si è tentato di impostare buf.offset ad un valore fuori dall'intervallo -131071 e +131071, o di impostare buf.status ad un valore diverso da quelli elencati in precedenza, o di impostare buf.tick ad un valore non incluso nell'intervallo 900000/HZ e 1100000/HZ, dove HZ è la frequenza dell'interrupt del timer di sistema.
- EPERM
- buf.modes non è zero e il chiamante non ha privilegi sufficienti. In Linux è richiesta l'abilitazione a CAP_SYS_TIME.
CONFORME A
adjtimex() è specifico di Linux e non dovrebbe essere usato in programmi pensati per la portabilità . Vedere adjtime(3) per un maggiormente portabile, ma meno flessibile metodo di correzione dell'orologio di sistema.COLOPHON
Questa pagina fa parte del rilascio 3.73 del progetto Linux man-pages. Una descrizione del progetto, le istruzioni per la segnalazione degli errori, e l'ultima versione di questa pagina si trova su http://www.kernel.org/doc/man-pages/.
La versione italiana fa parte del pacchetto
man-pages-it
v. 3.73, a cura di:
ILDP "Italian Linux Documentation Project"
http://www.pluto.it/ildp
Per la traduzione in italiano si può fare riferimento a
http://www.pluto.it/ildp/collaborare/
Segnalare eventuali errori di traduzione a
[email protected]