oracular (2) clock_adjtime.2.gz

Provided by: manpages-it-dev_4.23.1-1_all bug

NOME

       adjtimex, clock_adjtime, ntp_adjtime - regola l'orologio del kernel

LIBRERIA

       Libreria C standard (libc, -lc)

SINTASSI

       #include <sys/timex.h>

       int adjtimex(struct timex *buf);

       int clock_adjtime(clockid_t clk_id, struct timex *buf);

       int ntp_adjtime(struct timex *buf);

DESCRIZIONE

       Linux  usa  l'algoritmo di correzione dell'ora di David L. Mill (vedere RFC 5905). La chiamata di sistema
       adjtimex() legge e può all'occorrenza modificare i parametri di correzione per questo algoritmo. Richiede
       un  puntatore  a  una  struttura  timex,  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:

           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 */
           };

       The  modes  field  determines  which  parameters,  if any, to set.  (As described later in this page, the
       constants used for ntp_adjtime()  are equivalent but differently named.)  It is a bit mask  containing  a
       bitwise OR combination of zero or more of the following bits:

       ADJ_OFFSET
              Imposta  lo  scostamento  dell'orario da buf.offset.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 EINVAL se il  valore
              fornito è fuori intervallo.

       ADJ_FREQUENCY
              Imposta lo scostamento della frequenza da buf.freq. A partire da Linux 2.6.26, il valore fornito è
              fissato all'intervallo  (-32768000, +32768000). Nei kernel più vecchi, si ha un errore  EINVAL  se
              il valore fornito è fuori intervallo.

       ADJ_MAXERROR
              Imposta l'errore massimmo di tempo da buf.maxerror.

       ADJ_ESTERROR
              Imposta l'errore stimato di tempo da buf.esterror.

       ADJ_STATUS
              Imposta  i bit di stato dell'orologio da buf.status. Una descrizione di questi bit viene fatta più
              avanti.

       ADJ_TIMECONST
              Imposta la costante di tempo PLL da buf.constant. Se il flag di stato STA_NANO (vedi  oltre)  è  a
              zero, il kernel aggiunge 4 a questo valore.

       ADJ_SETOFFSET (a partire da Linux 2.6.39)
              Aggiunge  buf.time  al  tempo corrente. Se buf.status include il flag ADJ_NANO, buf.time.tv_usec è
              interpretato come un valore in nanosecondi; altrimenti è considerato espresso in microsecondi.

              Il valore di buf.time è la somma dei suoi due  campi,  ma  il  campo  buf.time.tv_usec  dev'essere
              sempre non negativo.  L'esempio seguente mostra come normalzzare un timeval con una risoluzione di
              nanosecondi.

                  while (buf.time.tv_usec < 0) {
                      buf.time.tv_sec  -= 1;
                      buf.time.tv_usec += 1000000000;
                  }

       ADJ_MICRO (a partire da Linux 2.6.26)
              Seleziona la risoluzione in microsecondi.

       ADJ_NANO (a partire da Linux 2.6.26)
              Seleziona la risoluzione in nanosecondi. Dei due flag, ADJ_MICRO e  ADJ_NANO,  solo  uno  dovrebbe
              essere specificato.

       ADJ_TAI (a partire da Linux 2.6.26)
              Imposta lo scostamento dal TAI (Tempo Atomico Internazionale) di buf.constant.

              ADJ_TAI  non si dovrebbe usare insieme a ADJ_TIMECONST, poiché anche quest'ultimo impiega il campo
              buf.constant.

              Per  una  spiegazione  completa  del  TAI  e  della  differenza  tra  TAI  e  UTC,   vedere   BIPMhttp://www.bipm.org/en/bipm/tai/tai.htmlADJ_TICK
              Imposta il valore del battito da buf.tick.

       In  alternativa,  modes può essere specificato come uno dei seguenti valori (maschera multibit), nel qual
       caso non si dovrebbero utilizzare altri bit in modes:

       ADJ_OFFSET_SINGLESHOT
              Il vecchio adjtime(3): (gradualmente) aggiusta il tempo secondo il valore contenuto in buf.offset,
              che specifica una regolazione in microsecondi.

       ADJ_OFFSET_SS_READ (disponibile a partire da Linux 2.6.28)
              Restituisce (in buf.offset) la quantità di tempo ancora da regolare dopo una precedente operazione
              ADJ_OFFSET_SINGLESHOT. Questa funzionalità è stata aggiunta in Linux 2.6.24, ma non ha  funzionato
              correttamenteprima di Linux 2.6.28.

       Gli  utenti  ordinari  sono  limitati al valore 0 o ADJ_OFFSET_SS_READ per modes. Solo il superutente può
       impostare qualsiasi parametro.

       Il campo buf.status è 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.

       STA_PLL (lettura-scrittura)
              Abilita gli  aggiornamenti  dell'anello  ad  aggancio  di  fase  (PLL  -  phase-locked  loop)  via
              ADJ_OFFSET.

       STA_PPSFREQ (lettura-scrittura)
              Abilita la disciplina di frequenza PPS (impulsi al secondo.

       STA_PPSTIME (lettura-scrittura)
              Abilita la disciplina di tempo PPS.

       STA_FLL (lettura-scrittura)
              Seleziona la modalità di anello ad aggancio di frequenza (FLL - frequency-locked loop).

       STA_INS (lettura-scrittura)
              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.

       STA_DEL (lettura-scrittura)
              Toglie  un  secondo  intercalare  all'ultimo  secondo  del  giorno UTC. L'eliminazione del secondo
              intercalare avverrà ogni giorno, purché questo flag rimanga impostato.

       STA_UNSYNC (lettura-scrittura)
              Orologio non sincronizzato.

       STA_FREQHOLD (lettura-scrittura)
              Mantiene la frequenza. Normalmente gli aggiustamenti  fatti  tramite  ADJ_OFFSET  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.

              Questo  flag evita che venga fatto il piccolo aggiustamente della frequenza quando si effettua una
              correzione usando il valore ADJ_OFFSET.

       STA_PPSSIGNAL (sola lettura)
              Un segnale PPS (impulsi al secondo) è presente.

       STA_PPSJITTER (sola lettura)
              Eccessiva variazione segnale PPS.

       STA_PPSWANDER (sola lettura)
              Eccessiva dispersione segnale PPS.

       STA_PPSERROR (sola lettura)
              Errore di calibrazione segnale PPS.

       STA_CLOCKERR (sola lettura)
              Difetto hardware dell'orologio.

       STA_NANO (sola lettura; a partire da Linux 2.6.26)
              Risoluzione (0 = microsecondi, 1 = nanosecondi). Impostata con ADJ_NANO, annullata con ADJ_MICRO.

       STA_MODE (a partire da Linux 2.6.26)
              Modalità (0 = Anello ad aggancio di fase , 1 = Anello ad aggancio di frequenza; sola lettura).

       STA_CLK (sola lettura; a partire da Linux 2.6.26)
              Sorgente dell'orologio (0 = A, 1 = B;; attualmente non usata).

       I tentativi di modificare i bit di stato in sola lettura sono ignorati senza emettere messaggi.

   clock_adjtime ()
        La chiamata di sistema clock_adjtime()  (aggiunta in in Linux 2.6.39) si comporta come adjtimex() ma  ha
       un uteriore argomento  clk_id per indicare lo specifico orologio sul quale agisce.

   ntp_adjtime ()
       La  funzione  di  libreria  ntp_adjtime()  (descritta  in  NTP  "Kernel Application Program API", KAPI) è
       un'interfaccia più portabile per eseguire lo stesso compito di adjtimex(). A parte i  punti  seguenti,  è
       identica a adjtimex():

       •  Le  costanti  usate  in modes hanno il prefisso "MOD_" al posto di "ADJ_", e hanno gli stessi suffissi
          (quindi, MOD_OFFSET, MOD_FREQUENCY, e così via), oltre alle eccezioni di cui ai seguenti punti.

       •  MOD_CLKA è il sinonimo di ADJ_OFFSET_SINGLESHOT.

       •  MOD_CLKB è il sinonimo di ADJ_TICK.

       •  Non ci sono sinonimi per ADJ_OFFSET_SS_READ, che non è descritto nel KAPI.

VALORE RESTITUITO

       In caso di successo, adjtimex() e ntp_adjtime() restituiscono  lo  stato  dell'orologio;  cioè,  uno  dei
       seguenti valori:

       TIME_OK     Orologio sincronizzato, nessun aggiustamento in sospeso per il secondo intercalare.

       TIME_INS    Indica che verrà aggiunto un secondo intercalare alla fine del giorno UTC.

       TIME_DEL    Indica che verrà tolto un secondo intercalare alla fine del giorno UTC.

       TIME_OOP    Aggiunta di un secondo intercalare in corso.

       TIME_WAIT   L'aggiunta  o  la  cancellazione  di un secondo intercalare è stata completata. Questo valore
                   sarà restituito prima che la successiva  operazione  ADJ_STATUS  annulli  i  flag  STA_INS  e
                   STA_DEL.

       TIME_ERROR  L'orologio  di  sistema  non  è  sincronizzato  con un server affidabile. Questo valore viene
                   restituito quando uno dei seguenti è vero:

                   •  STA_UNSYNC o STA_CLOCKERR è impostato.

                   •  STA_PPSSIGNAL è a zero e o STA_PPSFREQ o STA_PPSTIME è impostato.

                   •  STA_PPSTIME e STA_PPSJITTER sono entrambi impostati.

                   •  STA_PPSFREQ è impostato e o STA_PPSWANDER o STA_PPSJITTER è impostato.

                   Il nome simbolico TIME_BAD è un sinonimo di TIME_ERROR, fornito per retrocompatibilità.

       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.

       Se falliscono, queste chiamate restituiscono -1 e impostano errno per indicare l'errore.

ERRORI

       EFAULT buf non punta a una zona di memoria scrivibile.

       EINVAL (before Linux 2.6.26)
              É  stato  fatto  un  tentativo  per  impostare  buf.freq  a  un valore al di fuori dell'intervallo
              (-33554432, +33554432).

       EINVAL (before Linux 2.6.26)
              An attempt was made to set buf.offset to a value outside the permitted range.  Before  Linux  2.0,
              the  permitted  range  was  (-131072,  +131072).   From Linux 2.0 onwards, the permitted range was
              (-512000, +512000).

       EINVAL É stato fatto un tentativo per impostare buf.status a un valore  diverso  da  quelli  elencati  in
              precedenza.

       EINVAL L'argomento  clk_id dato a  clock_adjtime() non è valido per una o due ragioni. Il valore di clock
              ID positivo in stile System-V prefissato è  fuori  intervallo,  o  il   clk_id   dinamico  non  fa
              riferimento  a un'istanza valida di un oggetto orologio (clock object).  Si veda  clock_gettime(2)
              per una spiegazione degli orologi dinamici.

       EINVAL É stato fatto un tentativo per impostare buf.tick a un valore esterno all'intervallo da  900000/HZ
              a 1100000/ HZ, dove HZ è la frequenza dell'interruzione del timer di sistema.

       ENODEV Il  dispositivo  collegabile "al volo" (come per esempio USB) rapresentato da un clk_id dinamico è
              scomparso dopo che il suo dispositivo a caratteri è stato aperto.  Si veda  clock_gettime(2)   per
              una spiegazione degli orologi dinamici.

       EOPNOTSUPP
              Il  clk_id dato non supporta regolazioni.

       EPERM  buf.modes non è né a zero né a ADJ_OFFSET_SS_READ, e il chiamante non ha privilegi sufficienti. In
              Linux è richiesta l'abilitazione a CAP_SYS_TIME.

ATTRIBUTI

       Per la spiegazione dei termini usati in questa sezione, vedere attributes(7).

       ┌──────────────────────────────────────────────────────────────────────────────┬───────────────┬─────────┐
       │InterfacciaAttributoValore  │
       ├──────────────────────────────────────────────────────────────────────────────┼───────────────┼─────────┤
       │ntp_adjtime()                                                                 │ Thread safety │ MT-Safe │
       └──────────────────────────────────────────────────────────────────────────────┴───────────────┴─────────┘

CONFORME A

       adjtimex()
       clock_adjtime()
              Linux.

       L'API da preferire per il demone NTP è ntp_adjtime(3).

NOTE

       In struct timex, freq, ppsfreq, and stabil are ppm (parts per million) with  a  16-bit  fractional  part,
       which  means  that a value of 1 in one of those fields actually means 2^-16 ppm, and 2^16=65536 is 1 ppm.
       This is the case for both input values (in the case of freq)  and output values.

       L'elaborazione del secondo intercalare innescato da STA_INS e STA_DEL è fatto dal kernel nell'ambito  del
       timer. Quindi, è allo scoccare esatto di un secondo che il secondo intercalare sarà aggiunto o tolto.

VEDERE ANCHE

       clock_gettime(2),   clock_settime(2),   settimeofday(2),   adjtime(3),  ntp_gettime(3),  capabilities(7),
       time(7), adjtimex(8), hwclock(8)

       NTP "Kernel Application Program Interface" ⟨http://www.slac.stanford.edu/comp/unix/package/rtems/src/
       ssrlApps/ntpNanoclock/api.htm⟩

TRADUZIONE

       La traduzione italiana di questa pagina di manuale è stata creata da Davide Cendron
       <davcen@interfree.it>, Antonio Giovanni Colombo <azc100@gmail.com> e Marco Curreli
       <marcocurreli@tiscali.it>

       Questa traduzione è documentazione libera; leggere la GNU General Public License Versione 3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ o successiva per le condizioni di copyright.  Non ci
       assumiamo alcuna responsabilità.

       Per segnalare errori nella traduzione di questa pagina di manuale inviare un messaggio a ⟨pluto-
       ildp@lists.pluto.it⟩.