.\" -*- coding: UTF-8 -*- .\" Copyright (c) 1995 Michael Chastain (mec@shell.portal.com), 15 April 1995. .\" and Copyright (C) 2014, 2016 Michael Kerrisk .\" .\" %%%LICENSE_START(GPLv2+_DOC_FULL) .\" This is free documentation; you can redistribute it and/or .\" modify it under the terms of the GNU General Public License as .\" published by the Free Software Foundation; either version 2 of .\" the License, or (at your option) any later version. .\" .\" The GNU General Public License's references to "object code" .\" and "executables" are to be interpreted as the output of any .\" document formatting or typesetting system, including .\" intermediate and printed output. .\" .\" This manual is distributed in the hope that it will be useful, .\" but WITHOUT ANY WARRANTY; without even the implied warranty of .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the .\" GNU General Public License for more details. .\" .\" You should have received a copy of the GNU General Public .\" License along with this manual; if not, see .\" . .\" %%%LICENSE_END .\" .\" Modified 1997-01-31 by Eric S. Raymond .\" Modified 1997-07-30 by Paul Slootman .\" Modified 2004-05-27 by Michael Kerrisk .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH ADJTIMEX 2 "9 giugno 2020" Linux "Manuale del programmatore di Linux" .SH NOME adjtimex, clock_adjtime, ntp_adjtime \- regola l'orologio del kernel .SH SINTASSI .nf \fB#include \fP .PP \fBint adjtimex(struct timex *\fP\fIbuf\fP\fB);\fP .PP \fBint clock_adjtime(clockid_t \fP\fIclk_id,\fP\fB struct timex *\fP\fIbuf\fP\fB);\fP .PP \fBint ntp_adjtime(struct timex *\fP\fIbuf\fP\fB);\fP .fi .SH DESCRIZIONE Linux usa l'algoritmo di correzione dell'ora di David L.\& Mill (vedere RFC 5905). La chiamata di sistema \fBadjtimex\fP() legge e può all'occorrenza modificare i parametri di correzione per questo algoritmo. Richiede un puntatore a una struttura \fItimex\fP, aggiorna i parametri del kernel in base ai valori dei campi (selezionati) e restituisce la medesima struttura aggiornata con i valori correnti del kernel. La struttura è dichiarata nel seguento modo: .PP .in +4n .EX struct timex { int modes; /* Selettore modalità */ long offset; /* Scostamento orario; nanosecondi, se è impostato il flag STA_NANO, altrimenti microsecondi */ long freq; /* Scostamento frequenza; per le unità vedi NOTE) */ long maxerror; /* Errore massimo (microsecondi) */ long esterror; /* Errore stimato (microsecondi) */ int status; /* Comando/stato orologio */ long constant; /* Costante di tempo PLL (anello ad aggancio di fase [Phase\-Locked Loop])*/ long precision; /* Precisione orologio (microsecondi, sola lettura) */ long tolerance; /* Tolleranza frequenza orologio (sola lettura); vedi NOTE per le unità */ struct timeval time; /* Ora attuale (sola lettura, eccetto che per ADJ_SETOFFSET); a chiamata eseguita, time.tv_usec ccontiene nanosecondi, se il flag di stato STA_NANO è impostato, altrimenti microsecondi) */ long tick; /* Microsecondi tra i battiti dell'orologio */ long ppsfreq; /* Frequenza PPS (impulsi al secondo) (sola lettura); vedi NOTE per le unità */ long jitter; /* Variazione PPS (sola lettura); nanosecondi, se il flag di stato STA_NANO è impostato, altrimenti microsecondi */ int shift; /* Durata dell'intervallo PPS (secondsi, sola lettura) */ long stabil; /* Stabilità PPS (sola lettura); vedi NOTE per le unità */ long jitcnt; /* Conteggio degli eventi di limite variazione PPS superato (sola lettura) */ long calcnt; /* Conteggio degli intervalli di calibrazione PPS (sola lettura) */ long errcnt; /* Conteggio degli errori di calibrazione PPS (sola lettura) */ long stbcnt; /* Conteggio degli eventi di limite di stabilità PPS superato (sola lettura) */ int tai; /* Scostamento TAI, come impostato dall'ultima operazione ADJ_TAI (secondi, sola lettura, a partire da Linux 2.6.26) */ /* Ulteriori byte disponibili in previsione di future espansioni */ }; .EE .in .PP Il campo \fImodes\fP determina quali eventuali parametri impostare. (Come descritto più avanti in questa pagina, le costanti usate per \fBntp_adjtime\fP() sono equivalenti ma denominate in modo diverso.) Consiste in una maschera \fIbit a bit di tipo\fP OR che imposta zero o più dei seguenti bit: .TP \fBADJ_OFFSET\fP .\" commit 074b3b87941c99bc0ce35385b5817924b1ed0c23 Imposta lo scostamento dell'orario da \fIbuf.offset\fP.A partire da Linux 2.6.26, il valore fornito è fissato all'intervallo (\-0.5s, +0.5s). Nei kernel più vecchi, si ha un errore \fBEINVAL\fP se il valore fornito è fuori intervallo. .TP \fBADJ_FREQUENCY\fP .\" commit 074b3b87941c99bc0ce35385b5817924b1ed0c23 Imposta lo scostamento della frequenza da \fIbuf.freq\fP. A partire da Linux 2.6.26, il valore fornito è fissato all'intervallo (\-32768000, +32768000). Nei kernel più vecchi, si ha un errore \fBEINVAL\fP se il valore fornito è fuori intervallo. .TP \fBADJ_MAXERROR\fP Imposta l'errore massimmo di tempo da \fIbuf.maxerror\fP. .TP \fBADJ_ESTERROR\fP Imposta l'errore stimato di tempo da \fIbuf.esterror\fP. .TP \fBADJ_STATUS\fP Imposta i bit di stato dell'orologio da \fIbuf.status\fP. Una descrizione di questi bit viene fatta più avanti. .TP \fBADJ_TIMECONST\fP Imposta la costante di tempo PLL da \fIbuf.constant\fP. Se il flag di stato \fBSTA_NANO\fP (vedi oltre) è a zero, il kernel aggiunge 4 a questo valore. .TP \fBADJ_SETOFFSET\fP (a partire da Linux 2.6.39) .\" commit 094aa1881fdc1b8889b442eb3511b31f3ec2b762 .\" Author: Richard Cochran Aggiunge \fIbuf.time\fP al tempo corrente. Se \fIbuf.status\fP include il flag \fBADJ_NANO\fP, \fIbuf.time.tv_usec\fP è interpretato come un valore in nanosecondi; altrimenti è considerato espresso in microsecondi. .IP Il valore di \fIbuf.time\fP è la somma dei suoi due campi, ma il campo \fIbuf.time.tv_usec\fP dev'essere sempre non negativo. L'esempio seguente mostra come normalzzare un \fItimeval\fP con una risoluzione di nanosecondi. .IP .in +4n .EX while (buf.time.tv_usec < 0) { buf.time.tv_sec \-= 1; buf.time.tv_usec += 1000000000; } .EE .in .TP \fBADJ_MICRO\fP (a partire da Linux 2.6.26) .\" commit eea83d896e318bda54be2d2770d2c5d6668d11db .\" Author: Roman Zippel Seleziona la risoluzione in microsecondi. .TP \fBADJ_NANO\fP (a partire da Linux 2.6.26) .\" commit eea83d896e318bda54be2d2770d2c5d6668d11db .\" Author: Roman Zippel Seleziona la risoluzione in nanosecondi. Dei due flag, \fBADJ_MICRO\fP e \fBADJ_NANO\fP, solo uno dovrebbe essere specificato. .TP \fBADJ_TAI\fP (a partire da Linux 2.6.26) .\" commit 153b5d054ac2d98ea0d86504884326b6777f683d Imposta lo scostamento dal TAI (Tempo Atomico Internazionale) di \fIbuf.constant\fP. .IP \fBADJ_TAI\fP non si dovrebbe usare insieme a \fBADJ_TIMECONST\fP, poiché anche quest'ultimo impiega il campo \fIbuf.constant\fP. .IP Per una spiegazione completa del TAI e della differenza tra TAI e UTC, vedere .UR http://www.bipm.org/en/bipm/tai/tai.html \fIBIPM\fP .UE .TP \fBADJ_TICK\fP Imposta il valore del battito da \fIbuf.tick\fP. .PP .\" In general, the other bits are ignored, but ADJ_OFFSET_SINGLESHOT 0x8001 .\" ORed with ADJ_NANO (0x2000) gives 0xa0001 == ADJ_OFFSET_SS_READ!! In alternativa, \fImodes\fP può essere specificato come uno dei seguenti valori (maschera multibit), nel qual caso non si dovrebbero utilizzare altri bit in \fImodes\fP: .TP \fBADJ_OFFSET_SINGLESHOT\fP .\" In user space, ADJ_OFFSET_SINGLESHOT is 0x8001 .\" In kernel space it is 0x0001, and must be ANDed with ADJ_ADJTIME (0x8000) Il vecchio \fBadjtime\fP(3): (gradualmente) aggiusta il tempo secondo il valore contenuto in \fIbuf.offset\fP, che specifica una regolazione in microsecondi. .TP \fBADJ_OFFSET_SS_READ\fP (disponibile a partire da Linux 2.6.28) .\" In user space, ADJ_OFFSET_SS_READ is 0xa001 .\" In kernel space there is ADJ_OFFSET_READONLY (0x2000) anded with .\" ADJ_ADJTIME (0x8000) and ADJ_OFFSET_SINGLESHOT (0x0001) to give 0xa001) .\" commit 52bfb36050c8529d9031d2c2513b281a360922ec .\" commit 916c7a855174e3b53d182b97a26b2e27a29726a1 Restituisce (in \fIbuf.offset\fP) la quantità di tempo ancora da regolare dopo una precedente operazione \fBADJ_OFFSET_SINGLESHOT\fP. Questa funzionalità è stata aggiunta in Linux 2.6.24, ma non ha funzionato correttamenteprima di Linux 2.6.28. .PP Gli utenti ordinari sono limitati al valore 0 o \fBADJ_OFFSET_SS_READ\fP per \fImodes\fP. Solo il superutente può impostare qualsiasi parametro. .PP Il campo \fIbuf.status\fP è una maschera di bit usata per impostare e/o leggere bit di stato associati con l'implementazione NTP. Alcuni bit nella maschera possono essere usati sia per leggere che per impostare, mentre altri sono in sola lettura. .TP \fBSTA_PLL\fP (lettura\-scrittura) Abilita gli aggiornamenti dell'anello ad aggancio di fase (PLL \- phase\-locked loop) via \fBADJ_OFFSET\fP. .TP \fBSTA_PPSFREQ\fP (lettura\-scrittura) Abilita la disciplina di frequenza PPS (impulsi al secondo. .TP \fBSTA_PPSTIME\fP (lettura\-scrittura) Abilita la disciplina di tempo PPS. .TP \fBSTA_FLL\fP (lettura\-scrittura) Seleziona la modalità di anello ad aggancio di frequenza (FLL \- frequency\-locked loop). .TP \fBSTA_INS\fP (lettura\-scrittura) .\" John Stultz; .\" Usually this is written as extending the day by one second, .\" which is represented as: .\" 23:59:59 .\" 23:59:60 .\" 00:00:00 .\" .\" But since posix cannot represent 23:59:60, we repeat the last second: .\" 23:59:59 + TIME_INS .\" 23:59:59 + TIME_OOP .\" 00:00:00 + TIME_WAIT .\" Inserisce un secondo intercalare dopo l'ultimo secondo del giorno UTC, estendendo così di un secondo l'ultimo minuto del giorno. L'inserimento del secondo intercalare avverrà ogni giorno, purché questo flag rimanga impostato. .TP \fBSTA_DEL\fP (lettura\-scrittura) .\" John Stultz: .\" Similarly the progression here is: .\" 23:59:57 + TIME_DEL .\" 23:59:58 + TIME_DEL .\" 00:00:00 + TIME_WAIT .\" FIXME Does there need to be a statement that it is nonsensical to set .\" to set both STA_INS and STA_DEL? Toglie un secondo intercalare all'ultimo secondo del giorno UTC. L'eliminazione del secondo intercalare avverrà ogni giorno, purché questo flag rimanga impostato. .TP \fBSTA_UNSYNC\fP (lettura\-scrittura) Orologio non sincronizzato. .TP \fBSTA_FREQHOLD\fP (lettura\-scrittura) .\" Following text from John Stultz: Mantiene la frequenza. Normalmente gli aggiustamenti fatti tramite \fBADJ_OFFSET\fP implicano anche aggiustamenti minori della frequenza. Così una chiamata singola corregge lo scostamento orario corrente, ma applicando tali scostamenti ripetutamente nella stessa direzione, i piccoli aggiustamenti della frequenza si accumuleranno per correggere la distorsione. .IP .\" According to the Kernel Application Program Interface document, .\" STA_FREQHOLD is not used by the NTP version 4 daemon Questo flag evita che venga fatto il piccolo aggiustamente della frequenza quando si effettua una correzione usando il valore \fBADJ_OFFSET\fP. .TP \fBSTA_PPSSIGNAL\fP (sola lettura) Un segnale PPS (impulsi al secondo) è presente. .TP \fBSTA_PPSJITTER\fP (sola lettura) Eccessiva variazione segnale PPS. .TP \fBSTA_PPSWANDER\fP (sola lettura) Eccessiva dispersione segnale PPS. .TP \fBSTA_PPSERROR\fP (sola lettura) Errore di calibrazione segnale PPS. .TP \fBSTA_CLOCKERR\fP (sola lettura) .\" Not set in current kernel (4.5), but checked in a few places Difetto hardware dell'orologio. .TP \fBSTA_NANO\fP (sola lettura; a partire da Linux 2.6.26) .\" commit eea83d896e318bda54be2d2770d2c5d6668d11db .\" Author: Roman Zippel Risoluzione (0 = microsecondi, 1 = nanosecondi). Impostata con \fBADJ_NANO\fP, annullata con \fBADJ_MICRO\fP. .TP \fBSTA_MODE\fP (a partire da Linux 2.6.26) .\" commit eea83d896e318bda54be2d2770d2c5d6668d11db .\" Author: Roman Zippel Modalità (0 = Anello ad aggancio di fase , 1 = Anello ad aggancio di frequenza; sola lettura). .TP \fBSTA_CLK\fP (sola lettura; a partire da Linux 2.6.26) .\" commit eea83d896e318bda54be2d2770d2c5d6668d11db .\" Author: Roman Zippel Sorgente dell'orologio (0 = A, 1 = B;; attualmente non usata). .PP .\" I tentativi di modificare i bit di \fIstato\fP in sola lettura sono ignorati senza emettere messaggi. .SS "clock_adjtime ()" La chiamata di sistema \fBclock_adjtime\fP() (aggiunta in in Linux 2.6.39) si comporta come \fBadjtimex\fP() ma ha un uteriore argomento \fIclk_id\fP per indicare lo specifico orologio sul quale agisce. .SS "ntp_adjtime ()" La funzione di libreria \fBntp_adjtime\fP() (descritta in NTP "Kernel Application Program API", KAPI) è un'interfaccia più portabile per eseguire lo stesso compito di \fBadjtimex\fP(). A parte i punti seguenti, è identica a \fBadjtimex\fP(): .IP * 3 Le costanti usate in \fImodes\fP hanno il prefisso "MOD_" al posto di "ADJ_", e hanno gli stessi suffissi (quindi, \fBMOD_OFFSET\fP, \fBMOD_FREQUENCY\fP, e così via), oltre alle eccezioni di cui ai seguenti punti. .IP * \fBMOD_CLKA\fP è il sinonimo di \fBADJ_OFFSET_SINGLESHOT\fP. .IP * \fBMOD_CLKB\fP è il sinonimo di \fBADJ_TICK\fP. .IP * Non ci sono sinonimi per \fBADJ_OFFSET_SS_READ\fP, che non è descritto nel KAPI. .SH "VALORE RESTITUITO" In caso di successo, \fBadjtimex\fP() e \fBntp_adjtime\fP() restituiscono lo stato dell'orologio; cioè, uno dei seguenti valori: .TP 12 \fBTIME_OK\fP Orologio sincronizzato, nessun aggiustamento in sospeso per il secondo intercalare. .TP \fBTIME_INS\fP Indica che verrà aggiunto un secondo intercalare alla fine del giorno UTC. .TP \fBTIME_DEL\fP Indica che verrà tolto un secondo intercalare alla fine del giorno UTC. .TP \fBTIME_OOP\fP Aggiunta di un secondo intercalare in corso. .TP \fBTIME_WAIT\fP L'aggiunta o la cancellazione di un secondo intercalare è stata completata. Questo valore sarà restituito prima che la successiva operazione \fBADJ_STATUS\fP annulli i flag \fBSTA_INS\fP e \fBSTA_DEL\fP. .TP \fBTIME_ERROR\fP L'orologio di sistema non è sincronizzato con un server affidabile. Questo valore viene restituito quando uno dei seguenti è vero: .RS .IP * 3 \fBSTA_UNSYNC\fP o \fBSTA_CLOCKERR\fP è impostato. .IP * \fBSTA_PPSSIGNAL\fP è a zero e o \fBSTA_PPSFREQ\fP o \fBSTA_PPSTIME\fP è impostato. .IP * \fBSTA_PPSTIME\fP e \fBSTA_PPSJITTER\fP sono entrambi impostati. .IP * \fBSTA_PPSFREQ\fP è impostato e o \fBSTA_PPSWANDER\fP o \fBSTA_PPSJITTER\fP è impostato. .RE .IP Il nome simbolico \fBTIME_BAD\fP è un sinonimo di \fBTIME_ERROR\fP, fornito per retrocompatibilità. .PP .\" commit 6b43ae8a619d17c4935c3320d2ef9e92bdeed05d changed to asynchronous .\" operation, so we can no longer rely on the return code. Si noti che a partire da Linux 3.4, la chiamata opera in modo asincrono e il valore restituito usualmente non non riflette un cambiamento di stato causato dalla chiamata stessa. .PP Se falliscono, queste chiamate restituiscono \-1 e impostano \fIerrno\fP. .SH ERRORI .TP \fBEFAULT\fP \fIbuf\fP non punta a una zona di memoria scrivibile. .TP \fBEINVAL\fP (kernel precedenti a Linux 2.6.26) .\" From a quick glance, it appears there was no clamping or range check .\" for buf.freq in kernels before 2.0 É stato fatto un tentativo per impostare \fIbuf.freq\fP a un valore al di fuori dell'intervallo (\-33554432, +33554432). .TP \fBEINVAL\fP (kernel precedenti a Linux 2.6.26) É stato fatto un tentativo per impostare \fIbuf.offset\fP a un valore al di fuori dell'intervallo consentito. Nei kernel precedenti a Linux 2.0 gli intervalli consentiti erano (\-131072, +131072). Da Linux 2.0 in poi, gli intervalli consentiti erano (\-512000, +512000). .TP \fBEINVAL\fP É stato fatto un tentativo per impostare \fIbuf.status\fP a un valore diverso da quelli elencati in precedenza. .TP \fBEINVAL\fP L'argomento \fIclk_id\fP dato a \fBclock_adjtime\fP() non è valido per una o due ragioni. Il valore di clock ID positivo in stile System\-V prefissato è fuori intervallo, o il \fIclk_id\fP dinamico non fa riferimento a un'istanza valida di un oggetto orologio (clock object). Si veda \fBclock_gettime\fP(2) per una spiegazione degli orologi dinamici. .TP \fBEINVAL\fP É stato fatto un tentativo per impostare \fIbuf.tick\fP a un valore esterno all'intervallo da 900000/\fBHZ\fP a 1100000/ \fBHZ\fP, dove \fBHZ\fP è la frequenza dell'interruzione del timer di sistema. .TP \fBENODEV\fP Il dispositivo collegabile "al volo" (come per esempio USB) rapresentato da un \fIclk_id\fP dinamico è scomparso dopo che il suo dispositivo a caratteri è stato aperto. Si veda \fBclock_gettime\fP(2) per una spiegazione degli orologi dinamici. .TP \fBEOPNOTSUPP\fP Il \fIclk_id\fP dato non supporta regolazioni. .TP \fBEPERM\fP \fIbuf.modes\fP non è né a zero né a \fBADJ_OFFSET_SS_READ\fP, e il chiamante non ha privilegi sufficienti. In Linux è richiesta l'abilitazione a \fBCAP_SYS_TIME\fP. .SH ATTRIBUTI Per la spiegazione dei termini usati in questa sezione, vedere \fBattributes\fP(7). .TS allbox; lb lb lb l l l. Interfaccia Attributo Valore T{ \fBntp_adjtime\fP() T} Thread safety MT\-Safe .TE .SH "CONFORME A" Nessuna di queste interfacce è descritta in POSIX.1 .PP \fBadjtimex\fP() e \fBclock_adjtime\fP() sono specifici di Linux e non dovrebbe essere usato in programmi pensati per la portabilità. .PP L'API da preferire per il demone NTP è \fBntp_adjtime\fP(3). .SH NOTE In struct \fItimex\fP, \fIfreq\fP, \fIppsfreq\fP e \fIstabil\fP sono espressi in ppm (parti per milione) con una parte frazionale di 16\-bit, il che significa che il valore 1 in uno di quei campi sta a indicare un valore di 2^\-16 ppm, mentre 2^16=65536 significa 1 ppm. Questo vale sia per i valori in input (nel caso di \fIfreq\fP) sia per quelli di output. .PP L'elaborazione del secondo intercalare innescato da \fBSTA_INS\fP e \fBSTA_DEL\fP è fatto dal kernel nell'ambito del timer. Quindi, è allo scoccare esatto di un secondo che il secondo intercalare sarà aggiunto o tolto. .SH "VEDERE ANCHE" \fBclock_gettime\fP(2), \fBclock_settime\fP(2), \fBsettimeofday\fP(2), \fBadjtime\fP(3), \fBntp_gettime\fP(3), \fBcapabilities\fP(7), \fBtime\fP(7), \fBadjtimex\fP(8), \fBhwclock\fP(8) .PP .ad l .UR http://www.slac.stanford.edu/comp/unix/\:package/\:rtems/\:src/\:ssrlApps/\:ntpNanoclock/\:api.htm NTP "Kernel Application Program Interface" .UE .SH COLOPHON Questa pagina fa parte del rilascio 5.10 del progetto Linux \fIman\-pages\fP. Una descrizione del progetto, le istruzioni per la segnalazione degli errori, e l'ultima versione di questa pagina si trovano su \%https://www.kernel.org/doc/man\-pages/. .PP .SH TRADUZIONE La traduzione italiana di questa pagina di manuale è stata creata da Davide Cendron , Antonio Giovanni Colombo e Marco Curreli . .PP Questa traduzione è documentazione libera; leggere la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Versione 3 .UE o successiva per le condizioni di copyright. Non ci assumiamo alcuna responsabilità. .PP Per segnalare errori nella traduzione di questa pagina di manuale inviare un messaggio a .MT pluto-ildp@lists.pluto.it .ME .