.\" -*- coding: UTF-8 -*- '\" t .\" Copyright (c) 1995 Michael Chastain (mec@shell.portal.com), 15 April 1995. .\" and Copyright (C) 2014, 2016 Michael Kerrisk .\" .\" SPDX-License-Identifier: GPL-2.0-or-later .\" .\" Modified 1997-01-31 by Eric S. Raymond .\" Modified 1997-07-30 by Paul Slootman .\" Modified 2004-05-27 by Michael Kerrisk .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH adjtimex 2 "2 maja 2024 r." "Linux man\-pages 6.9.1" .SH NAZWA adjtimex, clock_adjtime, ntp_adjtime \- dopasowuje zegar w jądrze .SH BIBLIOTEKA Standardowa biblioteka C (\fIlibc\fP, \fI\-lc\fP) .SH SKŁADNIA .nf \fB#include \fP .P \fBint adjtimex(struct timex *\fP\fIbuf\fP\fB);\fP .P \fBint clock_adjtime(clockid_t \fP\fIclk_id,\fP\fB struct timex *\fP\fIbuf\fP\fB);\fP .P \fBint adjtimex(struct timex *\fP\fIbuf\fP\fB);\fP .fi .SH OPIS Linux używa algorytmu dopasowywania Davida L. Millsa (zob. w RFC\ 1305). Wywołanie systemowe \fBadjtimex\fP czyta i opcjonalnie ustawia parametry sterujące tego algorytmu. Pobiera wskaźnik do struktury \fItimex\fP, aktualizuje parametry w jądrze na podstawie (wybranych) wartości przekazanych w polach i zwraca tę samą strukturę z bieżącymi ustawieniami jądra. Struktura jest zadeklarowana następująco: .P .in +4n .EX struct timex { int modes; /* Wybór trybu */ long offset; /* Przesunięcie czasu; nanosekundy jeśli ustawiono znacznik statusu STA_NANO, jeśli nie \- mikrosekundy */ long freq; /* Przesunięcie częstotliwości; zob. UWAGI dotyczące jednostek */ long maxerror; /* Maksymalny błąd (mikrosekundy) */ long esterror; /* Szacowany błąd (mikrosekundy) */ int status; /* Polecenie/status zegara */ long constant; /* Stała czasu PLL (phase\-locked loop) */ long precision; /* Precyzja zegara (mikrosekundy, tylko do odczytu) */ long tolerance; /* Tolerancja częstotliwości zegara (tylko do odczytu); zob. UWAGI dotyczące jednostek */ struct timeval time; /* Bieżący czas (tylko do odczytu, za wyjątkiem ADJ_SETOFFSET); przy powrocie time.tv_usec zawiera nanosekundy jeśli ustawiono znacznik statusu STA_NANO, jeśli nie \- mikrosekundy */ long tick; /* Mikrosekundy pomiędzy impulsami zegara */ long ppsfreq; /* Częstotliwość PPS (pulse per second) (tylko do odczytu); zob. UWAGI dot. jednostek */ long jitter; /* Fluktuacja PPS (tylko do odczytu); nanosek. jeśli ustawiono znacznik statusu STA_NANO, jeśli nie \- mikrosekundy */ int shift; /* Czas interwału PPS (sekundy, tylko do odczytu) */ long stabil; /* Stabilność PPS (tylko do odczytu); zob. UWAGI dotyczące jednostek */ long jitcnt; /* Liczba zdarzeń wykroczenia poza limit fluktuacji PPS (tylko do odczytu) */ long calcnt; /* Liczba interwałów kalibracji PPS (tylko do odczytu) */ long errcnt; /* Liczba interwałów błędów PPS (tylko do odczytu) */ long stbcnt; /* Liczba zdarzeń wykroczenia poza limit stabilności PPS (tylko do odczytu) */ int tai; /* Przesunięcie TAI, zgodnie z ustawieniem poprzednią operacją ADJ_TAI (sekundy, tylko do odczytu, od Linuksa 2.6.26) */ /* Kolejne bajty wyrównania do przyszłych rozszerzeń */ }; .EE .in .P Pole \fImodes\fP określa, które parametry (jeśli w ogóle) ustawić (jak opisano później w niniejszym podręczniku, stałe używane w \fBntp_adjtime\fP() są równoważne, lecz inaczej nazwane). Jest to maska bitowa zawierająca sumę bitową (OR) kombinacji zera lub więcej spośród następujących bitów: .TP \fBADJ_OFFSET\fP .\" commit 074b3b87941c99bc0ce35385b5817924b1ed0c23 Ustawia przesunięcie czasu z \fIbuf.offset\fP. Od Linuksa 2.6.26, podana wartość jest ograniczana do przedziału (\-0.5s, +0.5s). W starszych jądrach występował błąd \fBEINVAL\fP, gdy podało się wartość spoza zakresu. .TP \fBADJ_FREQUENCY\fP .\" commit 074b3b87941c99bc0ce35385b5817924b1ed0c23 Ustawia przesunięcie częstotliwości z \fIbuf.freq\fP. Od Linuksa 2.6.26, podana wartość jest ograniczana do przedziału (\-32768000, +32768000). W starszych jądrach występował błąd \fBEINVAL\fP, gdy podało się wartość spoza zakresu. .TP \fBADJ_MAXERROR\fP Ustawia maksymalny błąd czasu z \fIbuf.maxerror\fP. .TP \fBADJ_ESTERROR\fP Ustawia szacowany błąd czasu z \fIbuf.esterror\fP. .TP \fBADJ_STATUS\fP Ustawia bity statusu zegara z \fIbuf.status\fP. Niżej dostępny jest opis tych bitów. .TP \fBADJ_TIMECONST\fP Ustawia stałą czasu PLL z \fIbuf.constant\fP. Jeśli znacznik statusu \fBSTA_NANO\fP (zob. niżej) jest wyczyszczony, jądro dodaje do tej wartości 4. .TP \fBADJ_SETOFFSET\fP (od Linuksa 2.6.39) .\" commit 094aa1881fdc1b8889b442eb3511b31f3ec2b762 .\" Author: Richard Cochran Dodaje \fIbuf.time\fP do bieżącego czasu. Jeśli \fIbuf.status\fP obejmuje znacznik \fBADJ_NANO\fP, to \fIbuf.time.tv_usec\fP jest interpretowane jako wartość w nanosekundach, w przeciwnym razie jest interpretowane jako mikrosekundy. .IP Wartość \fIbuf.time\fP jest sumą jego dwóch pól, lecz pole \fIbuf.time.tv_usec\fP musi być zawsze nieujemne. Poniższy przykład ukazuje sposób normalizacji \fItimeval\fP z nanosekundową rozdzielczością. .IP .in +4n .EX while (buf.time.tv_usec < 0) { buf.time.tv_sec \-= 1; buf.time.tv_usec += 1000000000; } .EE .in .TP \fBADJ_MICRO\fP (od Linuksa 2.6.26) .\" commit eea83d896e318bda54be2d2770d2c5d6668d11db .\" Author: Roman Zippel Wybiera rozdzielczość mikrosekundową. .TP \fBADJ_NANO\fP (od Linuksa 2.6.26) .\" commit eea83d896e318bda54be2d2770d2c5d6668d11db .\" Author: Roman Zippel Wybiera rozdzielczość nanosekundową. Powinno się użyć tylko jednego ze znaczników \fBADJ_MICRO\fP lub \fBADJ_NANO\fP. .TP \fBADJ_TAI\fP (od Linuksa 2.6.26) .\" commit 153b5d054ac2d98ea0d86504884326b6777f683d Ustawia przesunięcie międzynarodowego czasu atomowego \[em] TAI (ang. Atomic International Time) z \fIbuf.constant\fP. .IP \fBADJ_TAI\fP nie należy używać łącznie z \fBADJ_TIMECONST\fP, ponieważ ten ostatni również używa pola \fIbuf.constant\fP. .IP Pełne wytłumaczenie TAI oraz różnic między TAI i UTC, opisano na stronie .UR http://www.bipm.org/en/bipm/tai/tai.html \fIBIPM\fP .UE .TP \fBADJ_TICK\fP Ustawia wartość impulsu na \fIbuf.tick\fP. .P .\" In general, the other bits are ignored, but ADJ_OFFSET_SINGLESHOT 0x8001 .\" ORed with ADJ_NANO (0x2000) gives 0xa0001 == ADJ_OFFSET_SS_READ!! Alternatywnie, można podać \fImodes\fP jako jedną z następujących wartości (wielobitowej maski); wówczas w \fImodes\fP nie należy podawać innych bitów: .TP \fBADJ_OFFSET_SINGLESHOT\fP .\" In user space, ADJ_OFFSET_SINGLESHOT is 0x8001 .\" In kernel space it is 0x0001, and must be ANDed with ADJ_ADJTIME (0x8000) Staromodne \fBadjtime\fP(3): (stopniowo) dostosowuje czas przy użyciu wartości podanej w \fIbuf.offset\fP, określającej dostosowanie w mikrosekundach. .TP \fBADJ_OFFSET_SS_READ\fP (działa od Linuksa 2.6.28) .\" In user space, ADJ_OFFSET_SS_READ is 0xa001 .\" In kernel space there is ADJ_OFFSET_READONLY (0x2000) anded with .\" ADJ_ADJTIME (0x8000) and ADJ_OFFSET_SINGLESHOT (0x0001) to give 0xa001) .\" commit 52bfb36050c8529d9031d2c2513b281a360922ec .\" commit 916c7a855174e3b53d182b97a26b2e27a29726a1 Zwraca (w \fIbuf.offset\fP) czas pozostały do dostosowania po wcześniejszej operacji \fBADJ_OFFSET_SINGLESHOT\fP. Funkcjonalność tę dodano w Linuksie 2.6.24, lecz nie działała poprawnie do Linuksa 2.6.28. .P Zwykli użytkownicy są ograniczeni do wartości 0 lub \fBADJ_OFFSET_SS_READ\fP dla \fImodes\fP. Jedynie superużytkownik może ustawiać jakiekolwiek parametry. .P Pole \fIbuf.status\fP jest maską bitową używaną do ustawiania/pobierania bitów statusu powiązanych z implementacją NTP. Niektóre bity w masce można odczytać i ustawić, inne są tylko do odczytu. .TP \fBSTA_PLL\fP (tylko do odczytu) Włącza aktualizacje phase\-locked loop (PLL) za pomocą \fBADJ_OFFSET\fP. .TP \fBSTA_PPSFREQ\fP (tylko do odczytu) Włącza dostosowanie częstotliwości (ang. frequency discipline) PPS (pulse\-per\-second) . .TP \fBSTA_PPSTIME\fP (tylko do odczytu) Włącza dostosowanie czasu (ang. time discipline) PPS (pulse\-per\-second) . .TP \fBSTA_FLL\fP (tylko do odczytu) Wybiera tryb frequency\-locked loop (FLL). .TP \fBSTA_INS\fP (tylko do odczytu) .\" John Stultz; .\" Usually this is written as extending the day by one second, .\" which is represented as: .\" 23:59:59 .\" 23:59:60 .\" 00:00:00 .\" .\" But since posix cannot represent 23:59:60, we repeat the last second: .\" 23:59:59 + TIME_INS .\" 23:59:59 + TIME_OOP .\" 00:00:00 + TIME_WAIT .\" Umieszcza sekundę przestępną po ostatniej sekundzie dnia UTC, wydłużając zatem ostatnią minutę dnia o jedną sekundę. Sekunda przestępna będzie występowała każdego dnia, dopóki ten znacznik pozostanie ustawiony. .TP \fBSTA_DEL\fP (tylko do odczytu) .\" John Stultz: .\" Similarly the progression here is: .\" 23:59:57 + TIME_DEL .\" 23:59:58 + TIME_DEL .\" 00:00:00 + TIME_WAIT .\" FIXME Does there need to be a statement that it is nonsensical to set .\" to set both STA_INS and STA_DEL? Odejmuje sekundę przestępną z ostatniej sekundy dnia UTC. Odjęcie sekundy przestępnej będzie występowało każdego dnia, dopóki ten znacznik pozostanie ustawiony. .TP \fBSTA_UNSYNC\fP (tylko do odczytu) Zegar nie jest zsynchronizowany. .TP \fBSTA_FREQHOLD\fP (tylko do odczytu) .\" Following text from John Stultz: Utrzymuje częstotliwość. Zwykle, dostosowania częstotliwości uczynione za pomocą \fBADJ_OFFSET\fP powodują również stopniowe korekcje częstotliwości. Tak więc jedno wywołanie poprawia bieżące przesunięcie, ale że przesunięcia w tym samym kierunku są czynione wielokrotnie, mniejsze dostosowania częstotliwości skumulują się poprawiając odchylenie występujące w dłuższym okresie. .IP .\" According to the Kernel Application Program Interface document, .\" STA_FREQHOLD is not used by the NTP version 4 daemon Ten znacznik zapobiega wykonywaniu mniejszych dostosowań częstotliwości, przy poprawianiu wartości \fBADJ_OFFSET\fP. .TP \fBSTA_PPSSIGNAL\fP (tylko do odczytu) Dostępny jest prawidłowy sygnał PPS (pulse\-per\-second). .TP \fBSTA_PPSJITTER\fP (tylko do odczytu) Przekroczono fluktuację sygnału PSS. .TP \fBSTA_PPSWANDER\fP (tylko do odczytu) Przekroczono dryft sygnału PSS. .TP \fBSTA_PPSERROR\fP (tylko do odczytu) Błąd kalibracji sygnału PPS. .TP \fBSTA_CLOCKERR\fP (tylko do odczytu) .\" Not set in current kernel (4.5), but checked in a few places Usterka zegara sprzętowego. .TP \fBSTA_NANO\fP (tylko do odczytu; od Linuksa 2.6.26) .\" commit eea83d896e318bda54be2d2770d2c5d6668d11db .\" Author: Roman Zippel Rozdzielczość (0 = mikrosekundowa, 1 = nanosekundowa). Ustawiana poprzez \fBADJ_NANO\fP, czyszczona poprzez \fBADJ_MICRO\fP. .TP \fBSTA_MODE\fP (od Linuksa 2.6.26) .\" commit eea83d896e318bda54be2d2770d2c5d6668d11db .\" Author: Roman Zippel Tryb (0 = Phase Locked Loop, 1 = Frequency Locked Loop). .TP \fBSTA_CLK\fP (tylko do odczytu; od Linuksa 2.6.26) .\" commit eea83d896e318bda54be2d2770d2c5d6668d11db .\" Author: Roman Zippel Źródło zegara (0 = A, 1 = B); aktualnie nieużywane. .P .\" Próby ustawienia bitów \fIstatusu\fP tylko do odczytu są po cichu ignorowane. .SS "clock_adjtime ()" Wywołanie systemowe \fBclock_adjtime\fP() (dodane w Linuksie 2.6.39) zachowuje się jak \fBadjtimex\fP(), lecz przyjmuje dodatkowy argument \fIclk_id\fP określający konkretny zegar, na którym ma działać. .SS "ntp_adjtime ()" Funkcja biblioteczna \fBntp_adjtime\fP() (opisana w \[Bq]Kernel Application Program API\[rq] \[em] KAPI NTP) jest bardziej przenośnym interfejsem, wykonującym takie samo zadanie jak \fBadjtimex\fP(). Oprócz poniższych punktów, jest identyczne do \fBadjtimex\fP(): .IP \[bu] 3 Stałe używane w \fImodes\fP mają przedrostki \[Bq]MOD_\[rq] zamiast \[Bq]ADJ_\[rq] i takie same przyrostki (co daje \fBMOD_OFFSET\fP, \fBMOD_FREQUENCY\fP, itd.), poza wyjątkami opisanymi poniżej. .IP \[bu] \fBMOD_CLKA\fP jest synonimem \fBADJ_OFFSET_SINGLESHOT\fP. .IP \[bu] \fBMOD_CLKB\fP jest synonimem \fBADJ_TICK\fP. .IP \[bu] Brak jest synonimu dla \fBADJ_OFFSET_SS_READ\fP, czego nie opisano w KAPI. .SH "WARTOŚĆ ZWRACANA" W przypadku powodzenia, \fBadjtimex\fP() i \fBntp_adjtime\fP() zwracają stan zegara; tj. jedną z poniższych wartości: .TP 12 \fBTIME_OK\fP Zegar zsynchronizowany, brak oczekującego dostosowania sekundy przestępnej. .TP \fBTIME_INS\fP Wskazuje, że sekunda przestępna zostanie dodana pod koniec dnia UTC. .TP \fBTIME_DEL\fP Wskazuje, że sekunda przestępna zostanie odjęta pod koniec dnia UTC. .TP \fBTIME_OOP\fP Trwa umieszczenie sekundy przestępnej. .TP \fBTIME_WAIT\fP Zakończono umieszczenie lub odjęcie sekundy przestępnej. Ta wartość będzie zwracana do momentu wyczyszczenia znaczników \fBSTA_INS\fP i \fBSTA_DEL\fP, przez następną operację \fBADJ_STATUS\fP. .TP \fBTIME_ERROR\fP Zegar systemowy nie został zsynchronizowany z wiarygodnym serwerem. Wartość jest zwracana, w przypadku spełnienia dowolnego z poniższych warunków: .RS .IP \[bu] 3 Ustawiono \fBSTA_UNSYNC\fP albo \fBSTA_CLOCKERR\fP. .IP \[bu] \fBSTA_PPSSIGNAL\fP jest wyczyszczony i ustawiono \fBSTA_PPSFREQ\fP albo \fBSTA_PPSTIME\fP. .IP \[bu] Ustawiono \fBSTA_PPSTIME\fP oraz \fBSTA_PPSJITTER\fP. .IP \[bu] Ustawiono \fBSTA_PPSFREQ\fP i ustawiono \fBSTA_PPSWANDER\fP albo \fBSTA_PPSJITTER\fP. .RE .IP Nazwa symboliczna \fBTIME_BAD\fP jest synonimem \fBTIME_ERROR\fP, w celu zachowania wstecznej kompatybilności. .P .\" commit 6b43ae8a619d17c4935c3320d2ef9e92bdeed05d changed to asynchronous .\" operation, so we can no longer rely on the return code. Proszę zauważyć, że poczynając od Linuksa 3.4, wywołanie działa asynchronicznie i zwracana wartość zwykle nie oddaje zmiany stanu spowodowanej przez samo wywołanie. .P W przypadku błędu, wywołania zwracają \-1 i ustawiają \fIerrno\fP wskazując błąd. .SH BŁĘDY .TP \fBEFAULT\fP \fIbuf\fP nie wskazuje do zapisywalnej pamięci. .TP \fBEINVAL\fP (przed Linuksem 2.6.26) .\" From a quick glance, it appears there was no clamping or range check .\" for buf.freq before Linux 2.0 Próbowano ustawić wartość \fIbuf.freq\fP spoza przedziału (\-33554432, +33554432). .TP \fBEINVAL\fP (przed Linuksem 2.6.26) Próbowano ustawić wartość \fIbuf.offset\fP spoza dozwolonego przedziału. Przed Linuksem 2.0, dozwolony przedział wynosił (\-131072, +131072). Od Linuksa 2.0, dozwolony przedział wynosił (\-512000, +512000). .TP \fBEINVAL\fP Próbowano ustawić \fIbuf.status\fP na wartość inną niż opisaną powyżej. .TP \fBEINVAL\fP \fIclk_id\fP przekazane do \fBclock_adjtime\fP() jest nieprawidłowe z jednego z dwóch powodów: albo dodatnia wartość identyfikatora zegara zakodowana na stałe w stylu Systemu V jest poza zakresem, albo dynamiczne \fIclk_id\fP nie odnosi się do prawidłowego wystąpienia obiektu zegara. Opis dynamicznych zegarów znajduje się w podręczniku \fBclock_gettime\fP(2). .TP \fBEINVAL\fP Próbowano ustawić \fIbuf.tick\fP na wartość spoza zakresu 900000/\fBHZ\fP do 1100000/\fBHZ\fP, gdzie \fBHZ\fP jest częstotliwością przerwania systemowego czasomierza. .TP \fBENODEV\fP Urządzenie umożliwiające podłączenie \[Bq]na gorąco\[rq] (np. USB) reprezentowane przez dynamiczny \fIclk_id\fP zniknęło po otwarciu jego urządzenia znakowego. Zob. podręcznik \fBclock_gettime\fP(2) aby dowiedzieć się więcej o zegarach dynamicznych. .TP \fBEOPNOTSUPP\fP Podany \fIclk_id\fP nie obsługuje dostosowywania. .TP \fBEPERM\fP \fIbuf.modes\fP nie wynosi ani 0, ani \fBADJ_OFFSET_SS_READ\fP i wywołujący nie jest wystarczająco uprzywilejowany. W Linuksie wymagany jest przywilej (ang. capability) \fBCAP_SYS_TIME\fP. .SH ATRYBUTY Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Interfejs Atrybut Wartość T{ .na .nh \fB\%ntp_adjtime\fP() T} Bezpieczeństwo wątkowe MT\-bezpieczne .TE .SH STANDARDY .TP \fBadjtimex\fP() .TQ \fBclock_adjtime\fP() Linux. .P Preferowanym API do demona NTP jest \fBntp_adjtime\fP(). .SH UWAGI W strukturach \fItimex\fP, \fIfreq\fP, \fIppsfreq\fP i \fIstabil\fP występują ppm (części na milion) z 16\-bitową częścią ułamkową, co oznacza, że wartość w tych polach wynosi tak naprawdę 2\[ha]\-16 ppm, a 2\[ha]16=65536 jest równe 1 ppm. Jest to prawdziwe zarówno w przypadku wartości wejściowych (stosowane do \fIfreq\fP) i wyjściowych. .P Przetwarzanie sekundy przestępnej, wyzwolone przez \fBSTA_INS\fP i \fBSTA_DEL\fP jest dokonywane przez jądro w kontekście czasomierza. Z tego względu, zajmie to jeden impuls w sekundzie, zanim sekunda przestępna zostanie dodana lub usunięta. .SH "ZOBACZ TAKŻE" \fBclock_gettime\fP(2), \fBclock_settime\fP(2), \fBsettimeofday\fP(2), \fBadjtime\fP(3), \fBntp_gettime\fP(3), \fBcapabilities\fP(7), \fBtime\fP(7), \fBadjtimex\fP(8), \fBhwclock\fP(8) .P .ad l .UR http://www.slac.stanford.edu/comp/unix/\:package/\:rtems/\:src/\:ssrlApps/\:ntpNanoclock/\:api.htm NTP \[Bq]Kernel Application Program Interface\[rq] .UE .PP .SH TŁUMACZENIE Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Przemek Borys , Andrzej Krzysztofowicz i Michał Kułach . .PP Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License w wersji 3 .UE lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI. .PP Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej .MT manpages-pl-list@lists.sourceforge.net .ME .