Provided by: manpages-pl-dev_20051117-1_all bug

NAZWA

       adjtimex - dopasowanie zegara w jądrze

SKŁADNIA

       #include <sys/timex.h>

       int adjtimex(struct timex *buf);

OPIS

       Linux  używa  algorytmu  dopasowywania  Davida  L. Millsa (zobacz w RFC
       1305).   Wywołanie  systemowe  adjtimex  czyta  i  opcjonalnie  ustawia
       parametry  sterujące  tego  algorytmu.   adjtimex  pobiera  wskaźnik do
       struktury timex, poprawia parametry  w  jądrze  na  podstawie  wartości
       przekazanych   w   polach  i  zwraca  tę  samą  strukturę  z  bieżącymi
       ustawieniami jądra.  Struktura jest zadeklarowana następująco:

              struct timex {
                  int modes;           /* przełącznik trybu */
                  long offset;         /* offset czasu (usec) */
                  long frequency;      /* offset częstotliwości (skalowany ppm) */
                  long maxerror;       /* maksymalny błąd (usec) */
                  long esterror;       /* obliczony błąd (usec) */
                  int status;          /* komenda/status zegara */
                  long constant;       /* stała czasu pll */
                  long precision;      /* dokładność zegara (usec) (tylko do odczytu) */
                  long tolerance;      /* tolerancja częstotliwości zegara (ppm)
                                          (tylko do odczytu) */
                  struct timeval time; /* aktualny czas (tylko do odczytu) */
                  long tick;           /* czas miedzy tyknięciami zegara (usec) */
              };

       Pole modes określa, które parametry (jeśli w ogóle) ustawić.  Może  ono
       zawierać  bitoweor  kombinacji  zera  lub  więcej spośród następujących
       bitów:

              #define ADJ_OFFSET            0x0001 /* offset czasu */
              #define ADJ_FREQUENCY         0x0002 /* offset częstotliwości */
              #define ADJ_MAXERROR          0x0004 /* maksymalny błąd czasu */
              #define ADJ_ESTERROR          0x0008 /* obliczany błąd czasu */
              #define ADJ_STATUS            0x0010 /* status zegara */
              #define ADJ_TIMECONST         0x0020 /* stała czasu pll */
              #define ADJ_TICK              0x4000 /* wartość tyknięcia */
              #define ADJ_OFFSET_SINGLESHOT 0x8001 /* staromodne adjtime */

       Zwyczajni  użytkownicy  są  ograniczeni  do  wartości  zero  dla  mode.
       Jedynie superużytkownik może ustawiać jakiekolwiek parametry.

WARTOŚĆ ZWRACANA

       Po pomyślnym zakończeniu, adjtimex zwraca stan zegara z

              #define TIME_OK   0 /* zegar zsynchronizowany */
              #define TIME_INS  1 /* dodaj sekundę przestępną */
              #define TIME_DEL  2 /* skasuj sekundę przestępną */
              #define TIME_OOP  3 /* sekunda przestępna trwa */
              #define TIME_WAIT 4 /* wystąpiła sekunda przestępna */
              #define TIME_BAD  5 /* zegar nie zsynchronizowany */

       W przypadku błędu, adjtimex zwraca -1 i ustawia errno.

BŁĘDY

       EFAULT buf nie wskazuje do zapisywalnej pamięci.

       EPERM  buf.mode    jest    niezerowe,    a    użytkownik    nie    jest
              superużytkownikiem.

       EINVAL Próbowano ustawić buf.offset na wartość poza obszarem od -131071
              do  +131071,  lub  ustawić  buf.status  na  wartość  inną niż te
              wymienione  powyżej,  lub  ustawić  buf.tick  na  wartość  spoza
              zakresu  900000/HZ  do 1100000/HZ, gdzie HZ jest częstotliwością
              przerwania systemowego timera.

ZGODNE Z

       adjtimex jest specyficzny dla Linuksa i  nie  powinien  być  używany  w
       programach,  które  mają  być  przenośne. W SVr4 istnieje podobna, lecz
       mniej ogólna funkcja adjtime.

ZOBACZ TAKŻE

       settimeofday(2).