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: 1122949 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=sourceware.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=libc-alpha-return-103173-incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=panix.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b="auiTgEqV"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 45YrFp1dhZz9sN6 for ; Thu, 27 Jun 2019 03:52:14 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-type:content-transfer-encoding; q=dns; s=default; b=FVM+di/LUrZCCsh7KLHyG7pp19vHuZsjAyGNM3kpJfG pMeVRWfA9lEhWeKMtTTVpJ03grMgs736EfyMoJLLNedfNgQcvoSx1fmdFMx5SrMS GC+94vmkUwO3XuQAn2ClOpT2Lqud3EGJYE1TfAlux8njEre7vnBMy7TWJrqKHjVI = DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-type:content-transfer-encoding; s=default; bh=rsFepXlhp9cebQnYUlrYJqwInpM=; b=auiTgEqV3FFwt5p0O xrRSqUfdor0aHYvLfmFj8JyxjDyeJ8YDywBlghlbHhSchPcXrCYtaJnbirLaQqHW XpMSEI2Ispa4enOKv5e9dG7tbrlas4G4p9i8JKVTX9wJ23+kVTutoQ313YjVuMRN ukJKd/bKy7NHJcNwngmNs8qcVc= 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_include_sys/time=2Eh_from_s?= =?utf-8?q?ys/timex=2Eh=2E?= 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