adjtimex

Autres langues

Langue: pl

Autres versions - même langue

Version: 1997-07-30 (fedora - 25/11/07)

Autres sections - même nom

Section: 2 (Appels système)

NAZWA

adjtimex - dopasowanie zegara w jądrze

SKŁADNIA

#include <sys/timex.h>

int adjtimex(struct timex *buf);

OPIS

Linux używa algorytmu dopasowywania Davida L. Millsa (zobacz w RFC 1305). Wywołanie systemowe adjtimex czyta i opcjonalnie ustawia parametry sterujące tego algorytmu. adjtimex pobiera wskaźnik do struktury timex, poprawia parametry w jądrze na podstawie wartości przekazanych w polach i zwraca tę samą strukturę z bieżącymi ustawieniami jądra. Struktura jest zadeklarowana następująco:
 struct timex {
     int modes;           /* przełącznik trybu */
     long offset;         /* offset czasu (usec) */
     long frequency;      /* offset częstotliwości (skalowany ppm) */
     long maxerror;       /* maksymalny błąd (usec) */
     long esterror;       /* obliczony błąd (usec) */
     int status;          /* komenda/status zegara */
     long constant;       /* stała czasu pll */
     long precision;      /* dokładność zegara (usec) (tylko do odczytu) */
     long tolerance;      /* tolerancja częstotliwości zegara (ppm)
                             (tylko do odczytu) */
     struct timeval time; /* aktualny czas (tylko do odczytu) */
     long tick;           /* czas miedzy tyknięciami zegara (usec) */
 };
 

Pole modes określa, które parametry (jeśli w ogóle) ustawić. Może ono zawierać bitoweor kombinacji zera lub więcej spośród następujących bitów:

 #define ADJ_OFFSET            0x0001 /* offset czasu */
 #define ADJ_FREQUENCY         0x0002 /* offset częstotliwości */
 #define ADJ_MAXERROR          0x0004 /* maksymalny błąd czasu */
 #define ADJ_ESTERROR          0x0008 /* obliczany błąd czasu */
 #define ADJ_STATUS            0x0010 /* status zegara */
 #define ADJ_TIMECONST         0x0020 /* stała czasu pll */
 #define ADJ_TICK              0x4000 /* wartość tyknięcia */
 #define ADJ_OFFSET_SINGLESHOT 0x8001 /* staromodne adjtime */
 

Zwyczajni użytkownicy są ograniczeni do wartości zero dla mode. Jedynie superużytkownik może ustawiać jakiekolwiek parametry.

WARTOŚĆ ZWRACANA

Po pomyślnym zakończeniu, adjtimex zwraca stan zegara z
 #define TIME_OK   0 /* zegar zsynchronizowany */
 #define TIME_INS  1 /* dodaj sekundę przestępną */
 #define TIME_DEL  2 /* skasuj sekundę przestępną */
 #define TIME_OOP  3 /* sekunda przestępna trwa */
 #define TIME_WAIT 4 /* wystąpiła sekunda przestępna */
 #define TIME_BAD  5 /* zegar nie zsynchronizowany */
 

W przypadku błędu, adjtimex zwraca -1 i ustawia errno.

BŁĘDY

EFAULT
buf nie wskazuje do zapisywalnej pamięci.
EPERM
buf.mode jest niezerowe, a użytkownik nie jest superużytkownikiem.
EINVAL
Próbowano ustawić buf.offset na wartość poza obszarem od -131071 do +131071, lub ustawić buf.status na wartość inną niż te wymienione powyżej, lub ustawić buf.tick na wartość spoza zakresu 900000/HZ do 1100000/HZ, gdzie HZ jest częstotliwością przerwania systemowego timera.

ZGODNE Z

adjtimex jest specyficzny dla Linuksa i nie powinien być używany w programach, które mają być przenośne. W SVr4 istnieje podobna, lecz mniej ogólna funkcja adjtime.

ZOBACZ TAKŻE

settimeofday(2).