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 82F221F466 for ; Thu, 30 Jan 2020 22:05:40 +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=XC9Z/ cESRyqRUT/bP+Mg0mrabGfbojBdHf1qmJ/PNE7hVOaY52TrVGV1J4CIRn3SjQLyG KnXSTyHHk75L5vmX9Y9f1sB9SduS5Q1P9kmw++TKs4qgIQcdCRI5yFdE9X86vS4b XknfU6uogw+Dh2oL+8jCmLfKfUg3ENH4Ko63+E= 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=5RjBMxs2Iyj dxItPmuOtaaj1BJo=; b=bfmHYVGDhfC+6+UeRUqL0Tj5u3ejqUDBbcAKSN/VRdU g253PtY/2liM4Odn1OE/Cze/TKnrx7Fuv9SG2dSKy1k/DVZryNbG7H/x8B5cqQjF lD36B0LLaqLVFuM1wyMox+/UE7p/TfOlHiU4H/9Gr60Jp5kHqInoGAkqmub5lurA = Received: (qmail 63080 invoked by alias); 30 Jan 2020 22:05:37 -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 63059 invoked by uid 89); 30 Jan 2020 22:05:37 -0000 Authentication-Results: sourceware.org; auth=none X-HELO: mail-out.m-online.net Date: Thu, 30 Jan 2020 23:05:15 +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] y2038: linux: Provide __sched_rr_get_interval64 implementation Message-ID: <20200130230515.11a421d2@jawa> In-Reply-To: <20200124173817.2c11e5b2@jawa> References: <20200108162248.24336-1-lukma@denx.de> <20200124173817.2c11e5b2@jawa> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; boundary="Sig_/QVpE.pp7uwl9ozg_4pbUkVy"; protocol="application/pgp-signature" --Sig_/QVpE.pp7uwl9ozg_4pbUkVy Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Dear All, > Dear All, >=20 > > This patch replaces auto generated wrapper (as described in > > sysdeps/unix/sysv/linux/syscalls.list) for sched_rr_get_interval > > 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 > > The sched_rr_get_interval declaration in ./include/sched.h is not > > followed by corresponding libc_hidden_proto(), so it has been > > assumed that newly introduced syscall wrapper doesn't require > > libc_hidden_def() (which has been added by template used with auto > > generation script). > >=20 > > Moreover, the code for building sched_rr_gi.c file is already placed > > in ./posix/Makefiles, so there was no need to add it elsewhere. > >=20 > > Performed tests and validation are the same as for timer_gettime() > > conversion (sysdeps/unix/sysv/linux/timer_gettime.c). > > --- > > include/time.h | 7 +++ > > sysdeps/unix/sysv/linux/sched_rr_gi.c | 73 > > +++++++++++++++++++++++++++ sysdeps/unix/sysv/linux/syscalls.list | > > 1 - 3 files changed, 80 insertions(+), 1 deletion(-) > > create mode 100644 sysdeps/unix/sysv/linux/sched_rr_gi.c > >=20 > > diff --git a/include/time.h b/include/time.h > > index f23bfea737..558923274a 100644 > > --- a/include/time.h > > +++ b/include/time.h > > @@ -203,6 +203,13 @@ libc_hidden_proto (__timer_settime64); > > libc_hidden_proto (__timerfd_settime64); > > #endif > > =20 > > +#if __TIMESIZE =3D=3D 64 > > +# define __sched_rr_get_interval64 __sched_rr_get_interval > > +#else > > +extern int __sched_rr_get_interval64 (pid_t pid, struct > > __timespec64 *tp); +libc_hidden_proto (__sched_rr_get_interval64); > > +#endif > > + > > /* Compute the `struct tm' representation of T, > > offset OFFSET seconds east of UTC, > > and store year, yday, mon, mday, wday, hour, min, sec into *TP. > > diff --git a/sysdeps/unix/sysv/linux/sched_rr_gi.c > > b/sysdeps/unix/sysv/linux/sched_rr_gi.c new file mode 100644 > > index 0000000000..3d7b484591 > > --- /dev/null > > +++ b/sysdeps/unix/sysv/linux/sched_rr_gi.c > > @@ -0,0 +1,73 @@ > > +/* sched_rr_get_interval -- get the scheduler's SCHED_RR policy > > time interval. > > + Copyright (C) 2020 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 > > +__sched_rr_get_interval64 (pid_t pid, struct __timespec64 *tp) > > +{ > > +#ifdef __ASSUME_TIME64_SYSCALLS > > +# ifndef __NR_sched_rr_get_interval_time64 > > +# define __NR_sched_rr_get_interval_time64 > > __NR_sched_rr_get_interval +# endif > > + return INLINE_SYSCALL_CALL (sched_rr_get_interval_time64, pid, > > tp); +#else > > +# ifdef __NR_sched_rr_get_interval_time64 > > + int ret =3D INLINE_SYSCALL_CALL (sched_rr_get_interval_time64, pid, > > tp); > > + if (ret =3D=3D 0 || errno !=3D ENOSYS) > > + return ret; > > +# endif > > + struct timespec tp32; > > + int retval =3D INLINE_SYSCALL_CALL (sched_rr_get_interval, pid, > > &tp32); > > + if (retval =3D=3D 0) > > + *tp =3D valid_timespec_to_timespec64 (tp32); > > + > > + return retval; > > +#endif > > +} > > + > > +#if __TIMESIZE !=3D 64 > > +libc_hidden_def (__sched_rr_get_interval64) > > + > > +int > > +__sched_rr_get_interval (pid_t pid, struct timespec *tp) > > +{ > > + int ret; > > + struct __timespec64 tp64; > > + > > + ret =3D __sched_rr_get_interval64 (pid, &tp64); > > + > > + if (ret =3D=3D 0) > > + { > > + if (! in_time_t_range (tp64.tv_sec)) > > + { > > + __set_errno (EOVERFLOW); > > + return -1; > > + } > > + > > + *tp =3D valid_timespec64_to_timespec (tp64); > > + } > > + > > + return ret; > > +} > > +#endif > > +strong_alias (__sched_rr_get_interval, sched_rr_get_interval) > > diff --git a/sysdeps/unix/sysv/linux/syscalls.list > > b/sysdeps/unix/sysv/linux/syscalls.list index 1fa546f231..5d65ed23e0 > > 100644 --- a/sysdeps/unix/sysv/linux/syscalls.list > > +++ b/sysdeps/unix/sysv/linux/syscalls.list > > @@ -51,7 +51,6 @@ sched_getp - sched_getparam > > i:ip __sched_getparam sched_getparam sched_gets > > - sched_getscheduler i:i > > __sched_getscheduler sched_getscheduler sched_primax > > - sched_get_priority_max i:i > > __sched_get_priority_max sched_get_priority_max > > sched_primin - sched_get_priority_min i:i > > __sched_get_priority_min sched_get_priority_min > > -sched_rr_gi - sched_rr_get_interval i:ip > > __sched_rr_get_interval sched_rr_get_interval > > sched_setp - sched_setparam i:ip > > __sched_setparam sched_setparam sched_sets - > > sched_setscheduler i:iip __sched_setscheduler > > sched_setscheduler sched_yield - sched_yield > > i: __sched_yield sched_yield =20 >=20 > Gentle ping for review. Gentle ping for review of this patch. >=20 >=20 > Best regards, >=20 > Lukasz Majewski >=20 > -- >=20 > 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 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_/QVpE.pp7uwl9ozg_4pbUkVy Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCgAdFiEEgAyFJ+N6uu6+XupJAR8vZIA0zr0FAl4zUxsACgkQAR8vZIA0 zr3ngQgAgzpWGWqvfo2sDvCmHDrehZIEq7ZiwTKvgOfd9kd6ScdowumFhYHobL3Y NxM9PdXXbn9Tt8UV+QOAIq7IkZb8J51GsvkwlqeHPOWUGtkmJBvmRQKjBGj9KtlP dW2jPNtBzGJEnvpKp+uJwRfdas1iccXPclJBHwMkPppOC7B58k1ahD1dF5nCdGQn MmNG4uWKw5sk07vxqSqAwUqzPywN+DEyq3SZsEkjktItigKZUq3GYTlwZlISxqqi 7XaKNM/SEoIJMQ7iAdWa24WB5KewwiSV2+AYlDop+xPbuHVcAUcZ92EjpfraPPkL P2sMXlk0VSDGn7atXtILJCruJvQT1A== =SPIp -----END PGP SIGNATURE----- --Sig_/QVpE.pp7uwl9ozg_4pbUkVy--