NAZWA¶
adjtimex - dopasowanie zegara w jądrze
SKŁADNIA¶
#include <sys/timex.h>
int adjtimex(struct timex *buf);
OPIS¶
Uwaga! To tłumaczenie może być nieaktualne!
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ć bitowe
or 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).
Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu
Tłumaczenia Manuali i
może nie być aktualne. W razie
zauważenia różnic między powyższym opisem a
rzeczywistym zachowaniem opisywanego programu lub funkcji, prosimy o
zapoznanie się z oryginalną (angielską) wersją strony
podręcznika za pomocą polecenia:
- man --locale=C 2 adjtimex
Prosimy o pomoc w aktualizacji stron man - więcej informacji można
znaleźć pod adresem
http://sourceforge.net/projects/manpages-pl/.