> Linux Reviews > man >

adjtimex


  1. adjtimex.2.man


1. adjtimex.2.man

Manpage of ADJTIMEX

ADJTIMEX

Section: Руководство программиста Linux (2)
Updated: 2004-05-27
Index Return to Main Contents
 

ИМЯ

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 определяет какие параметры, если это необходимо, устанавливаются. Значение поля может содержать комбинации (or) битовых масок, значения которых следующие:

#define ADJ_OFFSET            0x0001 /* смещение времени */
#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 только ноль. Только суперпользователь может задавать любые параметры.
 

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

В случае успеха, 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 не является указателем на доступную для записи область памяти.
EINVAL
Попытка установить buf.offset в значение, выходящее за диапазон от -131071 до +131071, или установить buf.status в значение отличное от перечисленных выше, или установить buf.tick в значение за пределами диапазона от 900000/HZ до 1100000/HZ, где HZ --- частота прерываний системного таймера.
EPERM
buf.mode не ноль, а вызвавший процесс не имеет достаточных прав В Linux для этого требуется мандат CAP_SYS_TIME.
 

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

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

СМОТРИТЕ ТАКЖЕ

settimeofday(2), adjtime(3), capabilities(7), time(7)


 

Index

ИМЯ
ОБЗОР
ОПИСАНИЕ
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
ОШИБКИ
СООТВЕТСТВИЕ СТАНДАРТАМ
СМОТРИТЕ ТАКЖЕ

This document was created by man2html using the manual pages.
Time: 17:41:08 GMT, October 23, 2013

SVENSKA - SVENSKA - SVENSKA - SVENSKA - SVENSKA - ja - pl