adjtimex - функция корректировки системных часов
НАЗВАНИЕadjtimex - функция корректировки системных часов
СИНТАКСИС
#include
int adjtimex(struct timex *buf);
ОПИСАНИЕ
Linux использует алгоритм, изобретенный David L. Mills
для корректировки времени на системных часах. Системный
вызов adjtimex считывает и устанавливает параметры
временных корректировок.
adjtimex Он создает ссылку на структуру timex, обновляет
параметры ядра с помощью своих значений и возвращает
программе ту же структуру с текущими значениями ядра.
Структура описывается следующим способом:
struct timex {
int modes; /* переключатель режимов
(mode selector) */
long offset; /* смещение (мксек)
(time offset) */
long freq; /* смещение частоты
(frequency offset) */
long maxerror; /* наибольшая ошибка
(maximum error) */
long esterror; /* величина коррекции мксек
(estimated error) */
int status; /* команда/статус часов
(clock command/status) */
long constant; /* константа времени pll
(pll time constant) */
long precision; /* точность часов мксек (только для чтения)
(clock precision) */
long tolerance; /* допуск смещения частоты часов
(clock frequency tolerance (ppm)) */
struct timeval time; /* текущее время
(current time) */
long tick; /* количество мксекунд между колебаниями часов
(usecs between clock ticks) */
};
Поле modes определяет, какие параметры часов (при их
наличии) необходимо установить. Оно может быть равно
нулю или может содержать комбинацию следующих битов:
Начинающим пользователям рекомендуется оперировать
нулевыми значениями mode . Опытные пользователи могут
устанавливать различные параметры работы часов.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
После успешного завершения операции adjtimex возвращает
следующие значения часовых установок:
При ошибке adjtimex возвращает значение -1, а переменной
errno присваивается соответствующее значение.
КОДЫ ОШИБОК
EFAULT buf указывает на участок памяти, недоступный для
записи.
EPERM Значение buf.mode не равно нулю, и пользователь не
является суперпользователем.
EINVAL Делается попытка установить значение buf.offset,
выходящее за пределы от -131071 до +131071, или
значение buf.status, выходящее за вышеописанные
пределы, а также значение buf.tick, выходящее за
пределы от 900000/HZ до 1100000/HZ, где HZ -
частота прерываний в работе системных часов.
СООТВЕТСТВИЕ СТАНДАРТАМ
Команда adjtimex является специфической (только для Linux)
и не должна запускаться в программах, переносимых на
другие платформы. В SVr4 существует похожая команда, но
она является более специализированной.