From patchwork Wed Jun 26 17:50:24 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Zack Weinberg X-Patchwork-Id: 33429 Received: (qmail 12292 invoked by alias); 26 Jun 2019 17:50:40 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 12240 invoked by uid 89); 26 Jun 2019 17:50:39 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-16.4 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, SPF_HELO_PASS, SPF_PASS autolearn=ham version=3.3.1 spammy=6056, old-fashioned, leap, oldfashioned X-HELO: l2mail1.panix.com From: Zack Weinberg To: libc-alpha@sourceware.org Cc: joseph@codesourcery.com, carlos@redhat.com Subject: [PATCH 20/25] =?UTF-8?q?Don=E2=80=99t=20include=20sys/time.h=20fr?= =?UTF-8?q?om=20sys/timex.h.?= Date: Wed, 26 Jun 2019 13:50:24 -0400 Message-Id: <20190626175029.4699-11-zackw@panix.com> In-Reply-To: <20190626175029.4699-1-zackw@panix.com> References: <20190626175029.4699-1-zackw@panix.com> MIME-Version: 1.0 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 | 1 - sysdeps/unix/sysv/linux/bits/timex.h | 20 ++++++++++++++++++-- sysdeps/unix/sysv/linux/ntp_gettime.c | 4 ---- sysdeps/unix/sysv/linux/ntp_gettimex.c | 4 ---- 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 d230fcf892..f456c98def 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 bb272e8b19..db36759fba 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 directly; use instead." +#endif + #include #include -/* 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 cff9b603e0..571339f5d7 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 044122bfd0..c83aa1e718 100644 --- a/sysdeps/unix/sysv/linux/ntp_gettimex.c +++ b/sysdeps/unix/sysv/linux/ntp_gettimex.c @@ -17,10 +17,6 @@ #include -#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 c71ace1d3d..ee579466d1 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 -#include - -/* These definitions from linux/timex.h as of 2.6.30. */ +/* Get struct timex and related constants. */ #include -#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