Provided by:
manpages-ru_0.98-4_all 
ИМЯ
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