adjtimex

Autres langues

Langue: es

Version: 30 julio 1997 (mandriva - 01/05/08)

Autres sections - même nom

Section: 2 (Appels système)

NOMBRE

adjtimex - ajusta el reloj del núcleo

SINOPSIS

#include <sys/timex.h>

int adjtimex(struct timex *buf);

DESCRIPCIÓN

Linux usa el algoritmo de David L. Mills para ajustar el reloj (véase RFC 1305). La llamada al sistema adjtimex lee y opcionalmente prepara parámetros de ajuste para dicho algoritmo. Esta llamada toma un indicador a una estructura timex , actualiza los parámetros del núcleo a partir de los valores de los campos, y devuelve la misma estructura con los valores actuales del núcleo. Esta estructura se declara como sigue a continuación:
 struct timex {
     int modes;           /* selector de modo*/
     long offset;         /* ajuste de la hora (usec) */
     long freq;           /* ajuste de la frecuencia (ppm escalada) */
     long maxerror;       /* error máximo  (usec) */
     long esterror;       /* error estimado  (usec) */
     int status;          /* comando/estado del reloj*/
     long constant;       /* pll constante de tiempo */
     long precision;      /* precisión del reloj(usec) (sólo lectura) */
     long tolerance;      /* tolerancia de la frecuencia del reloj (ppm)
                             (sólo lectura) */
     struct timeval time; /* hora actual (sólo lectura) */
     long tick;           /* usecs entre ticks del reloj */
 };
 

El campo modes determina que parámetros serán asignados, si es que hay alguno. Puede contener una combinación (mediante una operación-O lógica) 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 /* estado 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 */
 

Los usuarios comunes sólo puede utilizar un valor cero para mode. Únicamente el superusuario puede asignar un valor a un parámetro.

VALOR DEVUELTO

En caso de éxito, adjtimex devuelve el estado del reloj:
 #define TIME_OK   0 /* reloj sincronizado */
 #define TIME_INS  1 /* insertar segundo de salto */
 #define TIME_DEL  2 /* borrar segundo de salto */
 #define TIME_OOP  3 /* segundo de salto en progreso */
 #define TIME_WAIT 4 /* se ha producido un segundo de salto */
 #define TIME_BAD  5 /* reloj no sincronizado  */
 

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

ERRORES

EFAULT
buf no apunta a una zona de memoria escribible.
EPERM
buf.mode no es cero y el usuario no es el 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 TAMBIÉN

settimeofday(2)