ADJTIMEX(2)

NOMBRE
adjtimex - ajusta el reloj del kernel

SINOPSIS
#include <sys/timex.h>

int adjtimex(struct timex *buf);

DESCRIPCIÓN
Linux usa el algoritmo de David Mill para ajustar el reloj. adjtimex lee y opcionalmente prepara parámetros de ajuste para dicho algoritmo.

adjtimex toma un indicador a una estructura timex , actualiza parámetros del kernel a partir de los valores en los campos, y regresa la misma estructura con los valores del kernel actuales. Esta estructura se declara como sigue a continuación:

    struct timex
    {
        int mode;            /* modo selector */
        long offset;         /* ajuste de la hora (usec) */
        long frequency;      /* ajuste de la frecuencia (ppm escalada) */
        long maxerror;       /* error máximo  (usec) */
        long esterror;       /* error estimado  (usec) */
        int status;          /* comando/estatus del reloj*/
        long time_constant;  /* pll constante de tiempo */
        long precision;      /* precisión del reloj(usec) (read only) */
        long tolerance;      /* tolerancia de la frecuencia del reloj (ppm)
                                (read only) */
        struct timeval time; /* (read only) */
        long tick;           /* usecs entre ticks del reloj */
    };

El campo mode determina que parámetros serán asignados, si alguno en absoluto. Puede contener una combinación bitwise-or de cero o más elementos de la lista siguiente:

    #define ADJ_OFFSET            0x0001 /* ajuste de la hora */
    #define ADJ_FREQUENCY         0x0002 /* ajuste de la frecuencia */
    #define ADJ_MAXERROR          0x0004 /* error máximo de la hora*/
    #define ADJ_ESTERROR          0x0008 /* error estimado de la hora */
    #define ADJ_STATUS            0x0010 /* estatus del reloj */
    #define ADJ_TIMECONST         0x0020 /* pll constante de tiempo */
    #define ADJ_TICK              0x4000 /* valor tick*/
    #define ADJ_OFFSET_SINGLESHOT 0x8001 /* ajuste de hora; método antiguo */

Usuarios ordinarios están limitados a un valor de cero para mode. Sólo el superusuario puede asignar cualquier parámetro.

VALOR REGRESADO
En caso de éxito, adjtimex regresa el valor de buf.status:

    #define TIME_OK  0 /* reloj sincronizado */
    #define TIME_INS 1 /* inserte segundo saltado */
    #define TIME_DEL 2 /* borrar un segundo saltado */
    #define TIME_OOP 3 /* saltando un segundo en progreso */
    #define TIME_BAD 4 /* reloj no sincronizado  */

En caso de fallo, adjtimex regresa -1 y asigna el valor apropiado a errno.

ERRORES

EFAULT
    buf no señala una zona de memoria escribible.

EPERM
    buf.mode no es cero y el usuario no es superusuario.

EINVAL
    Se ha hecho un intento de asignar a buf.offset un valor fuera del intervalo -131071 a +131071, o de asignar a buf.status un valor no contenido en la lista anteriormente discutida, o de asignar a buf.tick un valor fuera del intervalo 900000/HZ a 1100000/HZ, donde HZ es la frecuencia de interrupción del reloj del sistema.

VÉASE
settimeofday(2).