Re: [patch v2] adjtimex.2: add explanation about ADJ_TAI action

From: Laurent Georget
Date: Fri Nov 28 2014 - 18:02:55 EST


Le 28/11/2014 22:00, Richard Cochran a écrit :
> On Fri, Nov 28, 2014 at 02:40:44PM +0100, Laurent Georget wrote:
>> @@ -101,7 +99,19 @@ combination of zero or more of the following bits:
>> Ordinary users are restricted to a zero value for
>> .IR modes .
>> Only the superuser may set any parameters.
>> +.PP
>> +Support for TAI (Atomic International Time, for a complete explanation
>> about
>> +what it is and what is the difference between TAI and UTC, see
>> +.UR http://www.bipm.org/en/bipm/tai/tai.html
>> +.I BIPM
>> +.UE )
>> +has been added in version 2.6.29. For any clock, the TAI offset may
>
> Not for "any clock", just for CLOCK_REALTIME.

Considering that this is the only one representing the "human" time and
supporting an adjtime action, indeed, it's not relevant for anything
else than the realtime clock.

>
>> +be calculated by adding a value to the UTC offset which is updated when a
>> +leap second is added or deleted.
>> .br
>> +All the offsets in the timex structure are expressed between the value
>> of the
>> +clock and the corresponding value (e.g. TAI offset is the difference
>> between
>> +the clock and the TAI, not between TAI and another value such as UTC).
>
> The TAI offset is just (TAI - UTC). That's all.
>

Yes, my mistake, I misunderstood the part about timekeeping
(__timekeeping_set_tai_offset() in kernel/time/timekeeping.c, line 815)
which does store the offset in several formats (monotonic -> TAI and UTC
-> TAI). But this is not directly related to the timex value. Aniway
this is not very relevant in the man page.

Thank you for your comments. Below is a new version of the patch. Less
unrelevant chit-chat, more useful information (hopefully).


diff --git a/man2/adjtimex.2 b/man2/adjtimex.2
index 20a2f0b..871e607 100644
--- a/man2/adjtimex.2
+++ b/man2/adjtimex.2
@@ -26,9 +26,6 @@
.\" Modified 2004-05-27 by Michael Kerrisk <mtk.manpages@xxxxxxxxx>
.\" Modified 2014-11-28 by Laurent Georget <laurent.georget@xxxxxxxxxx>
.\"
-.\" FIXME Document ADJ_TAI (added in Linux 2.6.26)
-.\" commit 153b5d054ac2d98ea0d86504884326b6777f683d
-.\"
.\" FIXME Document ADJ_MICRO and ADJ_NANO (added in Linux 2.6.26)
.\" commit eea83d896e318bda54be2d2770d2c5d6668d11db
.\" Author: Roman Zippel <zippel@xxxxxxxxxxxxxx>
@@ -74,6 +71,17 @@ struct timex {
(read-only) */
struct timeval time; /* current time (read-only) */
long tick; /* usecs between clock ticks */
+
+ long ppsfreq; /* pps frequency (scaled ppm) (read-only) */
+ long jitter; /* pps jitter (usec) (read-only) */
+ int shift; /* interval duration (sec) (read-only) */
+ long stabil; /* pps stability (scaled ppm) (read-only) */
+ long jitcnt; /* jitter limit exceeded (read-only) */
+ long calcnt; /* calibration intervals (read-only) */
+ long errcnt; /* calibration errors (read-only) */
+ long stbcnt; /* stability limit exceeded (read-only) */
+
+ int tai; /* TAI offset (s) (read-only) */
};
.fi
.in
@@ -93,6 +101,7 @@ combination of zero or more of the following bits:
#define ADJ_ESTERROR 0x0008 /* estimated time error */
#define ADJ_STATUS 0x0010 /* clock status */
#define ADJ_TIMECONST 0x0020 /* pll time constant */
+#define ADJ_TAI 0x0080 /* TAI offset */
#define ADJ_TICK 0x4000 /* tick value */
#define ADJ_OFFSET_SINGLESHOT 0x8001 /* old-fashioned adjtime() */
.fi
@@ -102,6 +111,20 @@ Ordinary users are restricted to a zero value for
.IR modes .
Only the superuser may set any parameters.
.br
+In the case of
+.BR ADJ_TAI ,
+as
+.I buf->tai
+is read-only, the new value is passed through
+.IR buf->constant .
+.PP
+Support for TAI (Atomic International Time, for a complete explanation
about
+what it is and what is the difference between TAI and UTC, see
+.UR http://www.bipm.org/en/bipm/tai/tai.html
+.I BIPM
+.UE )
+has been added in version 2.6.29.
+.br
.ne 12v
.SH RETURN VALUE
On success,
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/