diff options
author | Zack Weinberg <zackw@panix.com> | 2019-05-31 10:30:38 -0400 |
---|---|---|
committer | Zack Weinberg <zackw@panix.com> | 2020-01-08 13:45:45 -0500 |
commit | 886864a8f2436d8c13f37c425ef28293146691ce (patch) | |
tree | ada468fbc33bd7f8c16e4cf79ac25db861117516 | |
parent | 225a0f4ef94a6505f2bb28d44d85bb3a9a45e5ef (diff) | |
download | glibc-886864a8f2436d8c13f37c425ef28293146691ce.tar glibc-886864a8f2436d8c13f37c425ef28293146691ce.tar.gz glibc-886864a8f2436d8c13f37c425ef28293146691ce.tar.bz2 glibc-886864a8f2436d8c13f37c425ef28293146691ce.zip |
Don’t include sys/time.h from sys/timex.h.
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.
-rwxr-xr-x | scripts/check-obsolete-constructs.py | 1 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/bits/timex.h | 20 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/ntp_gettime.c | 4 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/ntp_gettimex.c | 4 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sys/timex.h | 18 |
5 files changed, 20 insertions, 27 deletions
diff --git a/scripts/check-obsolete-constructs.py b/scripts/check-obsolete-constructs.py index 9008892daf..511c13d6a6 100755 --- a/scripts/check-obsolete-constructs.py +++ b/scripts/check-obsolete-constructs.py @@ -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" ], diff --git a/sysdeps/unix/sysv/linux/bits/timex.h b/sysdeps/unix/sysv/linux/bits/timex.h index 9adb0bcc60..c259930533 100644 --- a/sysdeps/unix/sysv/linux/bits/timex.h +++ b/sysdeps/unix/sysv/linux/bits/timex.h @@ -18,10 +18,16 @@ #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 */ diff --git a/sysdeps/unix/sysv/linux/ntp_gettime.c b/sysdeps/unix/sysv/linux/ntp_gettime.c index c8d6a197dc..e2f10d0f13 100644 --- a/sysdeps/unix/sysv/linux/ntp_gettime.c +++ b/sysdeps/unix/sysv/linux/ntp_gettime.c @@ -21,10 +21,6 @@ #undef ntp_gettime -#ifndef MOD_OFFSET -# define modes mode -#endif - int ntp_gettime (struct ntptimeval *ntv) diff --git a/sysdeps/unix/sysv/linux/ntp_gettimex.c b/sysdeps/unix/sysv/linux/ntp_gettimex.c index 0f26d4806e..a4bad69e59 100644 --- a/sysdeps/unix/sysv/linux/ntp_gettimex.c +++ b/sysdeps/unix/sysv/linux/ntp_gettimex.c @@ -17,10 +17,6 @@ #include <sys/timex.h> -#ifndef MOD_OFFSET -# define modes mode -#endif - int ntp_gettimex (struct ntptimeval *ntv) diff --git a/sysdeps/unix/sysv/linux/sys/timex.h b/sysdeps/unix/sysv/linux/sys/timex.h index 6979b86b72..1e4c4a4aa7 100644 --- a/sysdeps/unix/sysv/linux/sys/timex.h +++ b/sysdeps/unix/sysv/linux/sys/timex.h @@ -19,14 +19,11 @@ #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 |