]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Don’t include sys/time.h from sys/timex.h.
authorZack Weinberg <zackw@panix.com>
Fri, 31 May 2019 14:30:38 +0000 (10:30 -0400)
committerZack Weinberg <zackw@panix.com>
Wed, 8 Jan 2020 18:45:45 +0000 (13:45 -0500)
The interfaces defined in sys/timex.h only need struct timeval, not
any of the other things defined in sys/time.h.

While I was at it I moved stuff around so that sysdeps/…/linux/bits/timex.h
defines everything that uapi linux/timex.h defines (as of version 5.0;
alas, we still cannot use linux/timex.h directly) plus the
MOD_CLKA and MOD_CLKB constants.  In particular, the TIME_* constants
are relevant to users of clock_adjtime as well as adjtimex (I presume—
clock_adjtime is not very well documented) so they should be visible
from time.h as well as sys/timex.h.  Conversely, as far as I can tell,
struct ntptimeval was never a kernel interface on Linux, and MAXTC is
not part of the exposed API and also has the wrong value for current
kernels.   Also I removed a thoroughly obsolete bug workaround from
ntp_gettime.c and ntp_gettimex.c.

* sysdeps/unix/sysv/linux/sys/timex.h: Don’t include sys/time.h.
Update commentary.  Don’t define MAXTC.  Move definition of
NTP_API and the TIME_* constants...
* sysdeps/unix/sysv/linux/bits/timex.h: ...here.
Allow inclusion only by sys/timex.h and bits/time.h.
Update commentary.

        * sysdeps/unix/sysv/linux/ntp_gettime.c
        * sysdeps/unix/sysv/linux/ntp_gettimex.c: Remove obsolete
check for MOD_OFFSET not being defined.

* scripts/check-obsolete-constructs.py (HEADER_ALLOWED_INCLUDES):
Update.

scripts/check-obsolete-constructs.py
sysdeps/unix/sysv/linux/bits/timex.h
sysdeps/unix/sysv/linux/ntp_gettime.c
sysdeps/unix/sysv/linux/ntp_gettimex.c
sysdeps/unix/sysv/linux/sys/timex.h

index 9008892dafcde09e1a9ac70766036ea321e52274..511c13d6a64394c4439a300b1cf3019a68fb1c1e 100755 (executable)
@@ -605,7 +605,6 @@ HEADER_ALLOWED_INCLUDES = {
     "sys/signalfd.h":              [ "stdint.h" ],
     "sys/socketvar.h":             [ "sys/socket.h" ],
     "sys/timerfd.h":               [ "time.h" ],
-    "sys/timex.h":                 [ "sys/time.h" ],
     "sys/ttychars.h":              [ "sys/ttydefaults.h" ],
     "sys/ucontext.h":              [ "sys/procfs.h" ],
     "sys/vfs.h":                   [ "sys/statfs.h" ],
index 9adb0bcc60d2b2f1474a8b29601966e6d94b05b7..c259930533c7d1241c1e4853b6b4d43e41667fc8 100644 (file)
 #ifndef        _BITS_TIMEX_H
 #define        _BITS_TIMEX_H   1
 
+#if !defined _SYS_TIMEX_H && !defined _BITS_TIME_H
+# error "Never include <bits/timex.h> directly; use <sys/timex.h> instead."
+#endif
+
 #include <bits/types.h>
 #include <bits/types/struct_timeval.h>
 
-/* These definitions from linux/timex.h as of 3.18.  */
+/* These definitions match linux/timex.h as of 5.0.  */
+
+#define NTP_API        4               /* NTP API version */
 
 struct timex
 {
@@ -47,7 +53,7 @@ struct timex
 
   int tai;                     /* TAI offset (ro) */
 
-  /* ??? */
+  /* room for future expansion */
   int  :32; int  :32; int  :32; int  :32;
   int  :32; int  :32; int  :32; int  :32;
   int  :32; int  :32; int  :32;
@@ -65,6 +71,7 @@ struct timex
 #define ADJ_MICRO              0x1000  /* select microsecond resolution */
 #define ADJ_NANO               0x2000  /* select nanosecond resolution */
 #define ADJ_TICK               0x4000  /* tick value */
+
 #define ADJ_OFFSET_SINGLESHOT  0x8001  /* old-fashioned adjtime */
 #define ADJ_OFFSET_SS_READ     0xa001  /* read-only adjtime */
 
@@ -107,4 +114,13 @@ struct timex
 #define STA_RONLY (STA_PPSSIGNAL | STA_PPSJITTER | STA_PPSWANDER \
     | STA_PPSERROR | STA_CLOCKERR | STA_NANO | STA_MODE | STA_CLK)
 
+/* Clock states (codes returned by adjtimex) */
+#define TIME_OK                0       /* clock synchronized, no leap second */
+#define TIME_INS       1       /* insert leap second */
+#define TIME_DEL       2       /* delete leap second */
+#define TIME_OOP       3       /* leap second in progress */
+#define TIME_WAIT      4       /* leap second has occurred */
+#define TIME_ERROR     5       /* clock not synchronized */
+#define TIME_BAD       TIME_ERROR /* bw compat */
+
 #endif /* bits/timex.h */
index c8d6a197dcc61bd70135b9b216f2c7f5ce579960..e2f10d0f13b597ebf8465423f601a13e775bf5b4 100644 (file)
 
 #undef ntp_gettime
 
-#ifndef MOD_OFFSET
-# define modes mode
-#endif
-
 
 int
 ntp_gettime (struct ntptimeval *ntv)
index 0f26d4806e0ff4c065e217c7908f1296de18a18f..a4bad69e59fc031a4a19be17fd9ffc15d8b585e6 100644 (file)
 
 #include <sys/timex.h>
 
-#ifndef MOD_OFFSET
-# define modes mode
-#endif
-
 
 int
 ntp_gettimex (struct ntptimeval *ntv)
index 6979b86b722b31e18e522e5266295fe63c2f371d..1e4c4a4aa7db244bd1d046ce5d9462033f2ba69d 100644 (file)
 #define        _SYS_TIMEX_H    1
 
 #include <features.h>
-#include <sys/time.h>
-
-/* These definitions from linux/timex.h as of 2.6.30.  */
 
+/* Get struct timex and related constants.  */
 #include <bits/timex.h>
 
-#define NTP_API        4       /* NTP API version */
-
+/* Parameter structure used by ntp_gettime(x).  */
 struct ntptimeval
 {
   struct timeval time; /* current time (ro) */
@@ -40,17 +37,6 @@ struct ntptimeval
   long int __glibc_reserved4;
 };
 
-/* Clock states (time_state) */
-#define TIME_OK                0       /* clock synchronized, no leap second */
-#define TIME_INS       1       /* insert leap second */
-#define TIME_DEL       2       /* delete leap second */
-#define TIME_OOP       3       /* leap second in progress */
-#define TIME_WAIT      4       /* leap second has occurred */
-#define TIME_ERROR     5       /* clock not synchronized */
-#define TIME_BAD       TIME_ERROR /* bw compat */
-
-/* Maximum time constant of the PLL.  */
-#define MAXTC          6
 
 __BEGIN_DECLS