int adjtimex(struct timex *buf);
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
mode.
Solo il superutente può impostare qualunque parametro.
#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.