.\" -*- coding: UTF-8 -*- .\" Copyright (c) 1995 Michael Chastain (mec@shell.portal.com), 15 April 1995. .\" and Copyright (C) 2014, 2016 Michael Kerrisk .\" .\" %%%LICENSE_START(GPLv2+_DOC_FULL) .\" This is free documentation; you can redistribute it and/or .\" modify it under the terms of the GNU General Public License as .\" published by the Free Software Foundation; either version 2 of .\" the License, or (at your option) any later version. .\" .\" The GNU General Public License's references to "object code" .\" and "executables" are to be interpreted as the output of any .\" document formatting or typesetting system, including .\" intermediate and printed output. .\" .\" This manual is distributed in the hope that it will be useful, .\" but WITHOUT ANY WARRANTY; without even the implied warranty of .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the .\" GNU General Public License for more details. .\" .\" You should have received a copy of the GNU General Public .\" License along with this manual; if not, see .\" . .\" %%%LICENSE_END .\" .\" 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 "6. März 2019" Linux Linux\-Programmierhandbuch .SH BEZEICHNUNG adjtimex, ntp_adjtime \- Kernel\-Uhr einstellen .SH ÜBERSICHT .nf \fB#include \fP .PP \fBint adjtimex(struct timex *\fP\fIPuffer\fP\fB);\fP .PP \fBint ntp_adjtime(struct timex *\fP\fIPuffer\fP\fB);\fP .fi .SH BESCHREIBUNG Linux verwendet den Algorithmus von David L.\& Mills für die Einstellung von Uhren (siehe RFC\ 5905). Der Systemaufruf \fBadjtimex\fP() liest und setzt optional Einstellparameter für diesen Algorithmus. Ihm wird ein Zeiger auf eine Struktur \fItimex\fP übergeben. Aus ausgewählten Feldwerten davon aktualisiert er Kernel\-Parameter. Abschließend wird die gleiche Struktur mit aus den aktuellen Kernelwerten aktualisierten Parametern zurückgeliefert. Die Struktur ist wie folgt deklariert: .PP .in +4n .EX struct timex { int modes; /* Modusauswahl */ long offset; /* Zeitversatz; Nanosekunden, falls STA_NANO Statusschalter gesetzt ist, andernfalls Mikrosekunden */ long freq; /* Frequenzversatz; siehe ANMERKUNGEN für Einheiten */ long maxerror; /* Maximaler Fehler (Mikrosekunden) */ long esterror; /* Abgeschätzter Fehler (Mikrosekunden) */ int status; /* Uhrbefehl/\-status */ long constant; /* PLL (Phasenregelschleife) Zeitkonstante */ long precision; /* Uhr\-Genauigkeit (Mikrosekunden, nur lesbar) */ long tolerance; /* Uhrfrequenztoleranz (nur lesbar); siehe ANMERKUNGEN für Einheiten */ struct timeval time; /* Aktuelle Zeit (nur lesbar, außer für ADJ_SETOFFSET); nach Rückkehr enthält time.tv_usec Nanosekunden, falls der STA_NANO\-Status\- schalter gesetzt ist, andernfalls Mikrosekunden */ long tick; /* Mikrosekunden zwischen Uhr\-Ticks */ long ppsfreq; /* PPS\- (Impulse pro Sekunde) Frequenz (nur lesbar); siehe ANMERKUNGEN für Einheiten */ long jitter; /* PPS\-Jitter (nur lesbar); Nanosekunden, falls STA_NANO Statusschalter gesetzt ist, andernfalls Mikrosekunden */ int shift; /* PPS\-Intervalldauer (Sekunden, nur lesbar) */ long stabil; /* PPS\-Stabilität (nur lesbar); siehe ANMERKUNGEN für Einheiten */ long jitcnt; /* PPS\-Anzahl der Ereignisse, die die Jitter\-Begrenzung überschreiten (nur lesbar) */ long calcnt; /* PPS\-Anzahl der Kalibrierungsintervalle (nur lesbar) */ long errcnt; /* PPS\-Anzahl der Kalibrierungsfehler (nur lesbar) */ long stbcnt; /* PPS\-Anzahl der Ereignisse, die die Stabilitäts\-Begrenzung überschreiten (nur lesbar) */ int tai; /* TAI\-Versatz, wie durch frühere ADJ_TAI\- Aktionen gesetzt (Sekunden, nur lesbar, seit Linux 2.6.26) */ /* Weitere Füll\-Bytes, um zukünftige Erweiterungen zu ermöglichen */ }; .EE .in .PP Das Feld \fImodes\fP bestimmt, welche Parameter, falls vorhanden, zu setzen sind. (Wie später auf dieser Seite beschrieben wird, sind die Konstanten für \fBntp_adjtime\fP() äquivalent, aber anders benannt.) Es darf eine bitweise \fIOder\fP\-Verknüpfung von Null oder mehr der folgenden Bits enthalten: .TP \fBADJ_OFFSET\fP .\" commit 074b3b87941c99bc0ce35385b5817924b1ed0c23 Setzt den Zeitversatz aus \fIPuffer.offset\fP. Seit Linux 2.6.26 ist der bereitgestellte Wert auf den Bereich (\-0.5s, +0.5s) festgelegt. Unter älteren Kerneln tritt ein Fehler \fBEINVAL\fP auf, falls der bereitgestellte Wert außerhalb des Bereichs liegt. .TP \fBADJ_FREQUENCY\fP .\" commit 074b3b87941c99bc0ce35385b5817924b1ed0c23 Setzt den Zeitversatz aus \fIPuffer.freq\fP. Seit Linux 2.6.26 ist der bereitgestellte Wert auf den Bereich (\-32768000, +32768000) festgelegt. Unter älteren Kerneln tritt ein Fehler \fBEINVAL\fP auf, falls der bereitgestellte Wert außerhalb des Bereichs liegt. .TP \fBADJ_MAXERROR\fP Setzt den maximalen Zeitfehler aus \fIPuffer.maxerror\fP. .TP \fBADJ_ESTERROR\fP Setzt den abgeschätzten Zeitfehler aus \fIPuffer.esterror\fP. .TP \fBADJ_STATUS\fP Setzt die Uhrstatus\-Bits aus \fIPuffer.status\fP. Eine Beschreibung dieser Bits erfolgt weiter unten. .TP \fBADJ_TIMECONST\fP Setzt die PLL\-Zeitkonstante aus \fIPuffer.constant\fP. Falls der Statusschalter \fBSTA_NANO\fP (siehe unten) zurückgesetzt ist, fügt der Kernel 4 zu diesem Wert hinzu. .TP \fBADJ_SETOFFSET\fP (seit Linux 2.6.39) .\" commit 094aa1881fdc1b8889b442eb3511b31f3ec2b762 .\" Author: Richard Cochran Fügt \fIPuffer.time\fP zu der aktuellen Zeit hinzu. Falls \fIPuffer.status\fP den Schalter \fBADJ_NANO\fP enthält, dann wird \fIPuffer.time.tv_usec\fP als Nanosekundenwert interpretiert; andernfalls wird er als Mikrosekunden interpretiert. .TP \fBADJ_MICRO\fP (seit Linux 2.6.26) .\" commit eea83d896e318bda54be2d2770d2c5d6668d11db .\" Author: Roman Zippel Wählt Mikrosekundenauflösung. .TP \fBADJ_NANO\fP (seit Linux 2.6.26) .\" commit eea83d896e318bda54be2d2770d2c5d6668d11db .\" Author: Roman Zippel Wählte Nanosekundenauflösung. Nur einer von \fBADJ_MICRO\fP und \fBADJ_NANO\fP sollte angegeben werden. .TP \fBADJ_TAI\fP (seit Linux 2.6.26) .\" commit 153b5d054ac2d98ea0d86504884326b6777f683d Setzt den TAI\- (Atomic International Time)\-Versatz auf \fIPuffer.constant\fP. .IP \fBADJ_TAI\fP sollte nicht zusammen mit \fBADJ_TIMECONST\fP verwandt werden, da letzterer Modus auch das Feld \fIPuffer.constant\fP einsetzt. .IP Für eine vollständige Erklärung von TAI und dem Unterschied zwischen TAI und UTC siehe .UR http://www.bipm.org/en/bipm/tai/tai.html \fIBIPM\fP .UE .TP \fBADJ_TICK\fP Setzt den Tick\-Wert aus \fIPuffer.tick\fP. .PP .\" In general, the other bits are ignored, but ADJ_OFFSET_SINGLESHOT 0x8001 .\" ORed with ADJ_NANO (0x2000) gives 0xa0001 == ADJ_OFFSET_SS_READ!! Alternativ kann \fImodes\fP als einer der folgenden (Mehrfach\-Bitmasken\-)Werte angegeben werden; in diesem Fall sollten andere Bits nicht in \fImodes\fP angegeben werden: .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) Altertümliches \fBadjtime\fP(): passt die Zeit (graduell) durch den in \fIPuffer.offset\fP, der Anpassungen in Mikrosekunden spezifiziert, festgelegten Wert an. .TP \fBADJ_OFFSET_SS_READ\fP (funktionell seit Linux 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 Liefert (in \fIPuffer.offset\fP) die verbleibende Dauer zurück, die nach einer früheren \fBADJ_OFFSET_SINGLESHOT\fP\-Aktion noch angepasst werden muss. Diese Funktionalität wurde in Linux 2.6.24 hinzugefügt, funktionierte aber erst richtig ab Linux 2.6.28. .PP Normale Benutzer sind auf einen Wert von entweder 0 oder \fBADJ_OFFSET_SS_READ\fP für \fImodes\fP eingeschränkt. Nur der Superuser darf Parameter setzen. .PP Das Feld \fIPuffer.status\fP ist eine Bitmaske, die zum Setzen und/oder Abfragen von der NTP\-Implementierung zugeordneten Statusbits verwandt wird. Einige Bits in der Maske sind sowohl les\- als auch setzbar, während andere nur lesbar sind. .TP \fBSTA_PLL\fP (lesen/schreiben) Aktiviert Aktualisierungen von Phasenregelschleifen (PLL) per \fBADJ_OFFSET\fP. .TP \fBSTA_PPSFREQ\fP (lesen/schreiben) Aktiviert PPS\- (Impulse pro Sekunde) Frequenzeinhaltung. .TP \fBSTA_PPSTIME\fP (lesen/schreiben) Aktiviert PPS (Impulse pro Sekunde) Zeiteinhaltung. .TP \fBSTA_FLL\fP (lesen/schreiben) Wählt Frequenz\-verriegelten\- (FLL) Modus. .TP \fBSTA_INS\fP (lesen/schreiben) .\" 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 .\" Fügt eine Schaltsekunde nach der letzten Sekunde des UTC\-Tages ein. Damit wird die letzte Minute des Tages um eine Sekunde verlängert. Die Einfügung von Schaltsekunden erfolgt solange wie dieser Schalter gesetzt bleibt. .TP \fBSTA_DEL\fP (lesen/schreiben) .\" 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? Löscht eine Schaltsekunde in der letzten Sekunde des UTC\-Tages. Schaltsekundenlöschung wird jeden Tag erfolgen, solange dieser Schalter gesetzt bleibt. .TP \fBSTA_UNSYNC\fP (lesen/schreiben) Uhr nicht synchronisiert. .TP \fBSTA_FREQHOLD\fP (lesen/schreiben) .\" Following text from John Stultz: Haltefrequenz. Normale Anpassungen, die über \fBADJ_OFFSET\fP gemacht wurden, führten dazu, dass auch gedämpfte Frequenzanpassungen gemacht wurden. Daher korrigiert ein einzelner Aufruf den derzeitigen Versatz, da Versätze jedoch in der selben Richtung wiederholt wurden, summieren sich die kleinen Frequenzanpassungen, um die Verzerrung über einen längeren Zeitraum zu beheben. .IP .\" According to the Kernel Application Program Interface document, .\" STA_FREQHOLD is not used by the NTP version 4 daemon Dieser Schalter verhindert die Durchführungen der kleinen Frequenzanpassungen, wenn für einen Wert \fBADJ_OFFSET\fP korrigiert wird. .TP \fBSTA_PPSSIGNAL\fP (nur lesend) Ein gültiges PPS\- (Impulse\-pro\-Sekunde\-)Signal ist vorhanden. .TP \fBSTA_PPSJITTER\fP (nur lesend) PPS\-Signal\-Jitter überschritten. .TP \fBSTA_PPSWANDER\fP (nur lesend) PPS\-Signalwandern überschritten. .TP \fBSTA_PPSERROR\fP (nur lesend) PPS\-Signal\-Kalibrierungsfehler. .TP \fBSTA_CLOCKERR\fP (nur lesend) .\" Not set in current kernel (4.5), but checked in a few places Uhr\-Hardware\-Ausnahmebehandlung. .TP \fBSTA_NANO\fP (nur lesend; seit Linux 2.6.26) .\" commit eea83d896e318bda54be2d2770d2c5d6668d11db .\" Author: Roman Zippel Auflösung (0=Mikrosekunden, 1=Nanosekunden). Gesetzt über \fBADJ_NANO\fP, entfernt über \fBADJ_MICRO\fP. .TP \fBSTA_MODE\fP (seit Linux 2.6.26) .\" commit eea83d896e318bda54be2d2770d2c5d6668d11db .\" Author: Roman Zippel Modus (0 = Phasenregelschleife, 1 = Frequenz\-verriegelte Schleife). .TP \fBSTA_CLK\fP (nur lesend; seit Linux 2.6.26) .\" commit eea83d896e318bda54be2d2770d2c5d6668d11db .\" Author: Roman Zippel Uhrquelle (0=A, 1=B); derzeit nicht verwandt. .PP .\" Versuche, nur lesbare \fIStatus\fP\-Bits zu ändern, werden ohne Meldung ignoriert. .SS "ntp_adjtime ()" Die Bibliotheksfunktion \fBntp_adjtime\fP() (beschrieben in dem NTP »Kernel Application Program API«, KAPI) ist eine portierbarere Schnittstelle für die Erledigung der gleichen Aufgaben wie \fBadjtimex\fP(). Abgesehen von den folgenden Punkten ist sie zu \fBadjtime\fP() identisch: .IP * 3 Den in \fImodes\fP verwandten Konstanten wird »MOD_« statt »ADJ_« vorangestellt und sie haben die gleichen Endungen (daher \fBMOD_OFFSET\fP, \fBMOD_FREQUENCY\fP und so weiter), außer den in den folgenden Punkten bemerkten Ausnahmen. .IP * \fBMOD_CLKA\fP ist das Synonym für \fBADJ_OFFSET_SINGLESHOT\fP. .IP * \fBMOD_CLKB\fP ist das Synonym für \fBADJ_TICK\fP. .IP * Es gibt kein Synonym für \fBADJ_OFFSET_SS_READ\fP, das nicht in der KAPI beschrieben ist. .SH RÜCKGABEWERT Bei Erfolg geben \fBadjtimex\fP() und \fBntp_adjtime\fP() den Status der Uhr, d.h. einen der folgenden Werte, zurück: .TP 12 \fBTIME_OK\fP Uhr synchronisiert, keine Schaltsekundenanpassung anhängig. .TP \fBTIME_INS\fP Anzeige, dass am Ende des UTC\-Tages eine Schaltsekunde hinzugefügt wird. .TP \fBTIME_DEL\fP Anzeige, dass am Ende des UTC\-Tages eine Schaltsekunde entfernt wird. .TP \fBTIME_OOP\fP Einfügen einer Schaltsekunde erfolgt derzeit. .TP \fBTIME_WAIT\fP Es erfolgte eine Einfügung oder Entfernung einer Schaltsekunde. Dieser Wert wird zurückgeliefert, bis die nächste Aktion \fBADJ_STATUS\fP die Schalter \fBSTA_INS\fP und \fBSTA_DEL\fP zurücksetzt. .TP \fBTIME_ERROR\fP Die Systemuhr ist nicht mit einem zuverlässigen Server synchronisiert. Dieser Wert wird zurückgeliefert, solange eines der Folgenden zutrifft: .RS .IP * 3 Entweder \fBSTA_UNSYNC\fP oder \fBSTA_CLOCKERR\fP ist gesetzt. .IP * \fBSTA_PPSSIGNAL\fP ist nicht gesetzt und entweder \fBSTA_PPSFREQ\fP oder \fBSTA_PPSTIME\fP ist gesetzt. .IP * \fBSTA_PPSTIME\fP und \fBSTA_PPSJITTER\fP sind beide gesetzt. .IP * \fBSTA_PPSFREQ\fP ist gesetzt und entweder \fBSTA_PPSWANDER\fP oder \fBSTA_PPSJITTER\fP ist gesetzt. .RE .IP Der symbolische Name \fBTIME_BAD\fP ist ein Synonym für \fBTIME_ERROR\fP, bereitgestellt zur Rückwärtskompatibilität. .PP .\" commit 6b43ae8a619d17c4935c3320d2ef9e92bdeed05d changed to asynchronous .\" operation, so we can no longer rely on the return code. Beachten Sie, dass seit Linux 3.4 der Aufruf asynchron erfolgt und der Rückgabewert normalerweise nicht die vom Aufruf selbst ausgelösten Zustandsänderung wiedergibt. .PP Im Fehlerfall geben diese Aufrufe \-1 zurück und setzen \fIerrno\fP. .SH FEHLER .TP \fBEFAULT\fP \fIPuffer\fP zeigt nicht auf beschreibbaren Speicher. .TP \fBEINVAL\fP (Kernel vor Linux 2.6.26) .\" From a quick glance, it appears there was no clamping or range check .\" for buf.freq in kernels before 2.0 Es wurde versucht, \fIPuffer.freq\fP auf einen Wert außerhalb des Bereichs (\-33554432, +33554432) zu setzen. .TP \fBEINVAL\fP (Kernel vor Linux 2.6.26) Es wurde versucht, \fIPuffer.offset\fP auf einen Wert außerhalb des erlaubten Bereichs zu setzen. In Kerneln vor Linux 2.0 war der erlaubte Bereich (\-131072,+131072). Seit Linux 2.0 ist der erlaubte Bereich (\-512000, +512000). .TP \fBEINVAL\fP Es wurde versucht, \fIPuffer.status\fP auf einen anderen als einen der aufgeführten Werte zu setzen. .TP \fBEINVAL\fP Es wurde versucht, \fIPuffer.tick\fP auf einen Wert außerhalb des Bereichs (900000/\fBHZ\fP,1100000/\fBHZ\fP), zu setzen, wobei \fBHZ\fP die Interruptfrequenz des System\-Timers ist. .TP \fBEPERM\fP \fIPuffer.mode\fP ist weder 0 noch \fBADJ_OFFSET_SS_READ\fP und der aufrufende Prozess verfügt nicht über ausreichende Privilegien. Unter Linux ist die \fBCAP_SYS_TIME\fP\-Capability erforderlich. .SH ATTRIBUTE Siehe \fBattributes\fP(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke. .TS allbox; lb lb lb l l l. Schnittstelle Attribut Wert T{ \fBntp_adjtime\fP() T} Multithread\-Fähigkeit MT\-Safe .TE .SH "KONFORM ZU" Keiner dieser Schnittstellen ist in POSIX.1 beschrieben. .PP \fBadjtimex\fP() ist Linux\-spezifisch und sollte nicht in portierbaren Programmen benutzt werden. .PP Das bevorzugte API für den NTP\-Daemon ist \fBntp_adjtime\fP(). .SH ANMERKUNGEN Im Struct \fItimex\fP sind \fIfreq\fP, \fIppsfreq\fP und \fIstabil\fP ppm (parts per million, Teile pro Million) mit einem 16\-Bit\-Bruchteil. Das bedeutet, ein Wert von 1 in diesen Feldern bedeutet tatsächlich 2^\-16 ppm und 2^16=65536 ist 1 ppm. Dies ist sowohl für Eingabefelder (für \fIfreq\fP) und Ausgabefelder der Fall. .PP Die von \fBSTA_INS\fP und \fBSTA_DEL\fP ausgelöste Schaltsekundenverarbeitung wird vom Kernel im Timer\-Kontext durchgeführt. Daher wird ein Tick in die Sekunde benötigt, damit die Schaltsekunde eingefügt oder gelöscht wird. .SH "SIEHE AUCH" \fBsettimeofday\fP(2), \fBadjtime\fP(3), \fBntp_gettime\fP(3), \fBcapabilities\fP(7), \fBtime\fP(7), \fBadjtimex\fP(8), \fBhwclock\fP(8) .PP .ad l .UR http://www.slac.stanford.edu/comp/unix/\:package/\:rtems/\:src/\:ssrlApps/\:ntpNanoclock/\:api.htm NTP "Kernel Application Program Interface" .UE .SH KOLOPHON Diese Seite ist Teil der Veröffentlichung 5.04 des Projekts Linux\-\fIman\-pages\fP. Eine Beschreibung des Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden sich unter \%https://www.kernel.org/doc/man\-pages/. .SH ÜBERSETZUNG Die deutsche Übersetzung dieser Handbuchseite wurde von Patrick Rother , Martin Eberhard Schauer , Chris Leick , Helge Kreutzmann und Mario Blättermann erstellt. Diese Übersetzung ist Freie Dokumentation; lesen Sie die .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen. Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die .MT debian-l10n-german@\:lists.\:debian.\:org Mailingliste der Übersetzer .ME .