From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 118751 invoked by alias); 8 Jan 2020 19:20:29 -0000 Mailing-List: contact glibc-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: , Sender: glibc-cvs-owner@sourceware.org List-Subscribe: Received: (qmail 118734 invoked by uid 9014); 8 Jan 2020 19:20:28 -0000 Date: Wed, 08 Jan 2020 19:20:00 -0000 Message-ID: <20200108192028.118733.qmail@sourceware.org> Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Zack Weinberg To: glibc-cvs@sourceware.org Subject: =?utf-8?q?=5Bglibc/zack/no-nested-includes=5D_Don=E2=80=99t_include_sys/t?= =?utf-8?q?ime=2Eh_from_sys/timex=2Eh=2E?= X-Act-Checkin: glibc X-Git-Author: Zack Weinberg X-Git-Refname: refs/heads/zack/no-nested-includes X-Git-Oldrev: 225a0f4ef94a6505f2bb28d44d85bb3a9a45e5ef X-Git-Newrev: 886864a8f2436d8c13f37c425ef28293146691ce X-SW-Source: 2020-q1/txt/msg00098.txt https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=886864a8f2436d8c13f37c425ef28293146691ce commit 886864a8f2436d8c13f37c425ef28293146691ce Author: Zack Weinberg Date: Fri May 31 10:30:38 2019 -0400 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. Diff: --- 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 9008892d..511c13d 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 9adb0bc..c259930 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 c8d6a19..e2f10d0 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 0f26d480..a4bad69 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 6979b86..1e4c4a4 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