Provided by: manpages-ru_0.98-4_all bug

ИМЯ

       adjtimex - тонкая настройка часов в ядре

ОБЗОР

       #include <sys/timex.h>

       int adjtimex(struct timex *buf);

ОПИСАНИЕ

       Linux  использует для подстройки часов алгоритм David L. Mills (см. RFC
       1305).  Системный вызов adjtimex читает и (необязательно) устанавливает
       параметры   подстройки  для  этого  алгоритма.   В  качестве  аргумента
       используется указатель на  структуру  timex  ,  по  значениям  в  полях
       которой  осуществяется обновление параметров ядра и в этой же структуре
       происходит возврат текущих значений параметров ядра.  Данная  структура
       описана так:

              struct timex {
                  int modes;           /* выбор режима */
                  long offset;         /* смещение по времени (usec) */
                  long freq;           /* частота смещения (scaled ppm) */
                  long maxerror;       /* максимальная ошибка (usec) */
                  long esterror;       /* ожидаемая ошибка (usec) */
                  int status;          /* команда/состояние для часов */
                  long constant;       /* временная константа pll */
                  long precision;      /* точность часов (usec) (только чтение) */
                  long tolerance;      /* clock frequency tolerance (ppm)
                                          (read only) */
                  struct timeval time; /* текущее время (только чтение) */
                  long tick;           /* usecs between clock ticks */
              };

       Поле   modes   определяет   какие   параметры,   если  это  необходимо,
       устанавливаются.  Значение  поля  может  содержать  комбинации  битовых
       масок, значения которых следующие:

              #define ADJ_OFFSET            0x0001 /* смещение времениtime offset */
              #define ADJ_FREQUENCY         0x0002 /* частота смещения */
              #define ADJ_MAXERROR          0x0004 /* максимальная ошибка времени */
              #define ADJ_ESTERROR          0x0008 /* ожидаемая ошибка времени */
              #define ADJ_STATUS            0x0010 /* состояние часов */
              #define ADJ_TIMECONST         0x0020 /* временная константа pll */
              #define ADJ_TICK              0x4000 /* значение тика */
              #define ADJ_OFFSET_SINGLESHOT 0x8001 /* old-fashioned adjtime */

       Обычные  пользователи  могут  писать  в  mode.   только  ноль.   Только
       суперпользователь root может устанавливать любые параметры.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

       В случае успеха, adjtimex возвращает состояние часов:

              #define TIME_OK   0 /* часы синхронизированы */
              #define TIME_INS  1 /* вставлено секундный прыжок */
              #define TIME_DEL  2 /* удалён секундный прыжок */
              #define TIME_OOP  3 /* выполняется секундный прыжок */
              #define TIME_WAIT 4 /* секундный прыжок осуществлён */
              #define TIME_BAD  5 /* часы не синхронизированы */

       В случае неудачи, adjtimex возвращает -1 и устанавливает errno.

ОШИБКИ

       EFAULT buf не является  указателем  на  доступную  для  записи  область
              памяти.

       EPERM  buf.mode не ноль, а пользователь не является суперпользователем.

       EINVAL Попытка установить buf.offset в значение, выходящее за  диапазон
              от  -131071  до  +131071,  или  установить buf.status в значение
              отличное  от  перечисленных  выше,  или  установить  buf.tick  в
              значение  за пределами диапазона от 900000/HZ до 1100000/HZ, где
              HZ - это частота прерываний системного таймера.

СОВМЕСТИМОСТЬ СО СТАНДАРТАМИ

       adjtimex  -  это  специфичный  для  Linux  вызов   и   он   не   должен
       использоваться   в   программах,   которые  пишуться  как  переносимые.
       Существует похожий, но более общий для разных Unix систем вызов adjtime
       в SVr4.

СМОТРИ ТАКЖЕ

       settimeofday(2)

ПЕРЕВОД

       Перевёл с английского Виктор Вислобоков <corochoone@perm.ru> 2003