From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS31976 209.132.180.0/23 X-Spam-Status: No, score=-3.9 required=3.0 tests=AWL,BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 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 dcvr.yhbt.net (Postfix) with ESMTPS id E92F71F463 for ; Thu, 2 Jan 2020 11:11:29 +0000 (UTC) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:date:from:to:cc:subject:message-id:in-reply-to :references:mime-version:content-type; q=dns; s=default; b=peO6y 94UZd4ax7SND7LmlwIHKFpEMUo/7Iq/Eg1uRebabj/ixiScTJuKU8hjb/IAR1/Nl b7+zLX7SfKiXO1cKd7WRQJ1SVTqKZDutg/hYnWyGmS45Xsd74dOzVQRmSRCiHE1k Vj2GS2TcMAhTYbvwsEPMvYu8O6u2fY/9fKzw/g= 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:date:from:to:cc:subject:message-id:in-reply-to :references:mime-version:content-type; s=default; bh=MBO5W9QMSv5 ebYhfTkfkgSYUDg0=; b=vQcS63CdEBkw6MqKKGf6A3ZiJ0XaBflxI8gu9LTG5Hl bOHUvbkvO90/RrHKtj3lPi1lFWuedEpM2az9zAwVbEQHaR6tyHRnlMvwcu10mj4x baCaK7i8/A1vREu2mnSaH8E1mBh/HMFIBWyrHn/+kxoqUmvviiLp6aTEl5KNX5EM = Received: (qmail 16313 invoked by alias); 2 Jan 2020 11:11:26 -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 Received: (qmail 16299 invoked by uid 89); 2 Jan 2020 11:11:25 -0000 Authentication-Results: sourceware.org; auth=none X-HELO: mail-out.m-online.net Date: Thu, 2 Jan 2020 12:11:06 +0100 From: Lukasz Majewski To: Joseph Myers , Paul Eggert , Adhemerval Zanella , Andreas Schwab Cc: Alistair Francis , Alistair Francis , GNU C Library , Siddhesh Poyarekar , Florian Weimer , Florian Weimer , Zack Weinberg , Carlos O'Donell Subject: Re: [PATCH v3 1/2] y2038: linux: Provide __timerfd_gettime64 implementation Message-ID: <20200102121106.46729b3d@jawa> In-Reply-To: <20191217155858.28706-1-lukma@denx.de> References: <20191217155858.28706-1-lukma@denx.de> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; boundary="Sig_/UX.ThAseqjhCMjPM4D2KVad"; protocol="application/pgp-signature" --Sig_/UX.ThAseqjhCMjPM4D2KVad Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Dear Community, > This patch replaces auto generated wrapper (as described in > sysdeps/unix/sysv/linux/syscalls.list) for timerfd_gettime with one > which adds extra support for reading 64 bit time values on machines > with __TIMESIZE !=3D 64. > There is no functional change for architectures already supporting 64 > bit time ABI. >=20 > This patch is conceptually identical to timer_gettime conversion > already done in sysdeps/unix/sysv/linux/timer_gettime.c. > Please refer to corresponding commit message for detailed description > of introduced functions and the testing procedure. >=20 > --- > Changes for v3: > - Add missing libc_hidden_def() >=20 > Changes for v2: > - Remove "Contributed by" from the file header > - Remove early check for (fd < 0) in __timerfd_gettime64 as the fd > correctness check is already done in Linux kernel > - Add single descriptive comment line to provide concise explanation > of the code > --- > include/time.h | 3 + > sysdeps/unix/sysv/linux/Makefile | 3 +- > sysdeps/unix/sysv/linux/syscalls.list | 1 - > sysdeps/unix/sysv/linux/timerfd_gettime.c | 68 > +++++++++++++++++++++++ 4 files changed, 73 insertions(+), 2 > deletions(-) create mode 100644 > sysdeps/unix/sysv/linux/timerfd_gettime.c >=20 > diff --git a/include/time.h b/include/time.h > index e5e8246eac..eb5082b4d7 100644 > --- a/include/time.h > +++ b/include/time.h > @@ -181,9 +181,12 @@ libc_hidden_proto (__futimens64); > =20 > #if __TIMESIZE =3D=3D 64 > # define __timer_gettime64 __timer_gettime > +# define __timerfd_gettime64 __timerfd_gettime > #else > extern int __timer_gettime64 (timer_t timerid, struct __itimerspec64 > *value); +extern int __timerfd_gettime64 (int fd, struct > __itimerspec64 *value); libc_hidden_proto (__timer_gettime64); > +libc_hidden_proto (__timerfd_gettime64); > #endif > =20 > #if __TIMESIZE =3D=3D 64 > diff --git a/sysdeps/unix/sysv/linux/Makefile > b/sysdeps/unix/sysv/linux/Makefile index 07776d28ea..e599fcec23 100644 > --- a/sysdeps/unix/sysv/linux/Makefile > +++ b/sysdeps/unix/sysv/linux/Makefile > @@ -18,7 +18,8 @@ sysdep_routines +=3D adjtimex clone umount umount2 > readahead \ setfsuid setfsgid epoll_pwait signalfd \ > eventfd eventfd_read eventfd_write prlimit \ > personality epoll_wait tee vmsplice splice \ > - open_by_handle_at mlock2 pkey_mprotect pkey_set > pkey_get > + open_by_handle_at mlock2 pkey_mprotect pkey_set > pkey_get \ > + timerfd_gettime > =20 > CFLAGS-gethostid.c =3D -fexceptions > CFLAGS-tee.c =3D -fexceptions -fasynchronous-unwind-tables > diff --git a/sysdeps/unix/sysv/linux/syscalls.list > b/sysdeps/unix/sysv/linux/syscalls.list index 603e517ca6..385007c662 > 100644 --- a/sysdeps/unix/sysv/linux/syscalls.list > +++ b/sysdeps/unix/sysv/linux/syscalls.list > @@ -95,7 +95,6 @@ mq_setattr - mq_getsetattr > i:ipp mq_setattr=20 > timerfd_create EXTRA timerfd_create i:ii > timerfd_create timerfd_settime EXTRA > timerfd_settime i:iipp timerfd_settime > -timerfd_gettime EXTRA timerfd_gettime > i:ip timerfd_gettime fanotify_init EXTRA > fanotify_init i:ii fanotify_init=20 > diff --git a/sysdeps/unix/sysv/linux/timerfd_gettime.c > b/sysdeps/unix/sysv/linux/timerfd_gettime.c new file mode 100644 > index 0000000000..ff5c4550b3 > --- /dev/null > +++ b/sysdeps/unix/sysv/linux/timerfd_gettime.c > @@ -0,0 +1,68 @@ > +/* timerfd_gettime -- get the timer setting referred to by file > descriptor. > + Copyright (C) 2019 Free Software Foundation, Inc. > + This file is part of the GNU C Library. > + > + The GNU C Library is free software; you can redistribute it and/or > + modify it under the terms of the GNU Lesser General Public > License as > + published by the Free Software Foundation; either version 2.1 of > the > + License, or (at your option) any later version. > + > + The GNU C Library is distributed in the hope that it will be > useful, > + but WITHOUT ANY WARRANTY; without even the implied warranty of > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + Lesser General Public License for more details. > + > + You should have received a copy of the GNU Lesser General Public > + License along with the GNU C Library; see the file COPYING.LIB. > If > + not, see . */ > + > +#include > +#include > +#include > +#include > +#include > + > +int > +__timerfd_gettime64 (int fd, struct __itimerspec64 *value) > +{ > +#ifdef __ASSUME_TIME64_SYSCALLS > +# ifndef __NR_timerfd_gettime64 > +# define __NR_timerfd_gettime64 __NR_timerfd_gettime > +# endif > + return INLINE_SYSCALL_CALL (timerfd_gettime64, fd, value); > +#else > +# ifdef __NR_timerfd_gettime64 > + int ret =3D INLINE_SYSCALL_CALL (timerfd_gettime64, fd, value); > + if (ret =3D=3D 0 || errno !=3D ENOSYS) > + return ret; > +# endif > + struct itimerspec its32; > + int retval =3D INLINE_SYSCALL_CALL (timerfd_gettime, fd, &its32); > + if (retval =3D=3D 0) > + { > + value->it_interval =3D valid_timespec_to_timespec64 > (its32.it_interval); > + value->it_value =3D valid_timespec_to_timespec64 > (its32.it_value); > + } > + > + return retval; > +#endif > +} > + > +#if __TIMESIZE !=3D 64 > +libc_hidden_def (__timerfd_gettime64) > + > +int > +__timerfd_gettime (int fd, struct itimerspec *value) > +{ > + struct __itimerspec64 its64; > + int retval =3D __timerfd_gettime64 (fd, &its64); > + if (retval =3D=3D 0) > + { > + value->it_interval =3D valid_timespec64_to_timespec > (its64.it_interval); > + value->it_value =3D valid_timespec64_to_timespec > (its64.it_value); > + } > + > + return retval; > +} > +#endif > +strong_alias (__timerfd_gettime, timerfd_gettime) Are there any more comments regarding this patch? (Yes, I will need to update the year from 2019 to 2020, but this is rather a cosmetic change). Best regards, Lukasz Majewski -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de --Sig_/UX.ThAseqjhCMjPM4D2KVad Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCgAdFiEEgAyFJ+N6uu6+XupJAR8vZIA0zr0FAl4Nz8oACgkQAR8vZIA0 zr0jKQf+OG3FWV/f36AuG3rwNv2W6FDZiPRQX1+5LLDKvphe8Vh9qCxg7/Q9QxUO 8fBgWttN1CHSTpQmDwCDm60PapBsCdm9LirPpfQqfnNkjT73kItfjPc63MVvmpnz Pc6Koz3HDAVy7XpNcjCvkxy3oXUwwITyDQdkU8FRPGu1YUdVAqgisdn1HKuPF0pV uYleZsGl3Ojc7wscjk9Icbumg593mvUgmLx5dZWEP8+8Mg+Qu9hQIaIkbqQvBGTY k4p1YkIrAMetDiKeHV3mdNSPGsihF6T7oIIww03SdnJ8uprykISpLnlhvM258ghh gntLgWoVyxXWg+SZn+9V1sGB5E7MIA== =+7ap -----END PGP SIGNATURE----- --Sig_/UX.ThAseqjhCMjPM4D2KVad--