From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) by sourceware.org (Postfix) with ESMTPS id 0D35E388E83E for ; Mon, 21 Jun 2021 07:44:41 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 0D35E388E83E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=denx.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=denx.de Received: from ktm (85-222-111-42.dynamic.chello.pl [85.222.111.42]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: lukma@denx.de) by phobos.denx.de (Postfix) with ESMTPSA id DEC5B829B6; Mon, 21 Jun 2021 09:44:39 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=denx.de; s=phobos-20191101; t=1624261480; bh=QwMF5NXqLWUINkRmWRewb6OdEyvqL2wtn/VbaavZdQg=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=lrPOdbrDToFqv7F+ywTX6Vc3Takt6I1pW85uEwJbNTXfBiZhZtAhd47f5sBaTrU+p eh/xG4G/D5hDoZvBGJbQh66FOjBXsnoaep7RRIgKo9ip9xr8+7h3bq13MTEac/mdJA eidhygyyYcjJu9WZf7S2hgZdJQ8dwWClGvB7DxWrhoBWOVK3njRRZOOMI6u6PqjAFd h7kpKppizf5uwAvks0Mxug7uwdNCMDgSUtxBTzaT1bemYH6X/BKkyOK2iGkyGZcnI4 ruJvVbge5QeZIIVC+nI9/+A0aVBFxzkUaH7it5hlN/k7lOWDrjD2AegKzeTIykaylJ 3uhZbYlTce7CQ== Date: Mon, 21 Jun 2021 09:44:39 +0200 From: Lukasz Majewski To: Adhemerval Zanella Cc: libc-alpha@sourceware.org, Carlos O'Donell Subject: Re: [PATCH 14/18] linux: Only use 64-bit syscall if required for mq_timedsend Message-ID: <20210621094439.72a19c0a@ktm> In-Reply-To: <20210617115104.1359598-15-adhemerval.zanella@linaro.org> References: <20210617115104.1359598-1-adhemerval.zanella@linaro.org> <20210617115104.1359598-15-adhemerval.zanella@linaro.org> Organization: denx.de X-Mailer: Claws Mail 3.17.8 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; boundary="Sig_/RFX.xcZB=NoTT7=uS=j0JvW"; protocol="application/pgp-signature" X-Virus-Scanned: clamav-milter 0.103.2 at phobos.denx.de X-Virus-Status: Clean X-Spam-Status: No, score=-11.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_BARRACUDACENTRAL, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 21 Jun 2021 07:44:42 -0000 --Sig_/RFX.xcZB=NoTT7=uS=j0JvW Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable On Thu, 17 Jun 2021 08:51:00 -0300 Adhemerval Zanella wrote: > For !__ASSUME_TIME64_SYSCALLS there is no need to issue a 64-bit > syscall if the provided timeout fits in a 32-bit one. The 64-bit > usage should be rare since the timeout is a relative one. >=20 > Checked on i686-linux-gnu on a 4.15 kernel and on a 5.11 kernel > (with and without --enable-kernel=3D5.1) and on x86_64-linux-gnu. > --- > rt/tst-mqueue10.c | 10 ++++++++ > sysdeps/unix/sysv/linux/mq_timedsend.c | 35 > ++++++++++++++------------ 2 files changed, 29 insertions(+), 16 > deletions(-) >=20 > diff --git a/rt/tst-mqueue10.c b/rt/tst-mqueue10.c > index 7fb53a1cae..18795808e0 100644 > --- a/rt/tst-mqueue10.c > +++ b/rt/tst-mqueue10.c > @@ -54,6 +54,16 @@ do_test (void) > support_delete_timer (timer); > } > =20 > + { > + timer_t timer =3D support_create_timer (0, 100000000, false, NULL); > + /* Fill the internal buffer first. */ > + TEST_COMPARE (mq_timedsend (q, msg, sizeof (msg), 0, > + &(struct timespec) { 0, 0 }), 0); > + TEST_COMPARE (mq_timedsend (q, msg, sizeof (msg), 0, &ts), -1); > + TEST_VERIFY (errno =3D=3D EINTR || errno =3D=3D EOVERFLOW); > + support_delete_timer (timer); > + } > + > mq_unlink (name); > =20 > return 0; > diff --git a/sysdeps/unix/sysv/linux/mq_timedsend.c > b/sysdeps/unix/sysv/linux/mq_timedsend.c index 5f14ecb0bf..8fa8c010ad > 100644 --- a/sysdeps/unix/sysv/linux/mq_timedsend.c > +++ b/sysdeps/unix/sysv/linux/mq_timedsend.c > @@ -29,30 +29,33 @@ __mq_timedsend_time64 (mqd_t mqdes, const char > *msg_ptr, size_t msg_len, # ifndef __NR_mq_timedsend_time64 > # define __NR_mq_timedsend_time64 __NR_mq_timedsend > # endif > - int ret =3D SYSCALL_CANCEL (mq_timedsend_time64, mqdes, msg_ptr, > msg_len, > - msg_prio, abs_timeout); > =20 > -#ifndef __ASSUME_TIME64_SYSCALLS > - if (ret =3D=3D 0 || errno !=3D ENOSYS) > - return ret; > +#ifdef __ASSUME_TIME64_SYSCALLS > + return SYSCALL_CANCEL (mq_timedsend_time64, mqdes, msg_ptr, > msg_len, > + msg_prio, abs_timeout); > +#else > + bool is32bit =3D abs_timeout !=3D NULL > + ? in_time_t_range (abs_timeout->tv_sec) : true; > + if (!is32bit) > + { > + int r =3D SYSCALL_CANCEL (mq_timedsend_time64, mqdes, msg_ptr, > msg_len, > + msg_prio, abs_timeout); > + if (r =3D=3D 0 || errno !=3D ENOSYS) > + return r; > + __set_errno (EOVERFLOW); > + return -1; > + } > =20 > - struct timespec ts32; > + struct timespec ts32, *pts32 =3D NULL; > if (abs_timeout !=3D NULL) > { > - if (! in_time_t_range (abs_timeout->tv_sec)) > - { > - __set_errno (EOVERFLOW); > - return -1; > - } > - > ts32 =3D valid_timespec64_to_timespec (*abs_timeout); > + pts32 =3D &ts32; > } > =20 > - ret =3D SYSCALL_CANCEL (mq_timedsend, mqdes, msg_ptr, msg_len, > msg_prio, > - abs_timeout !=3D NULL ? &ts32 : NULL); > + return SYSCALL_CANCEL (mq_timedsend, mqdes, msg_ptr, msg_len, > msg_prio, > + pts32); > #endif > - > - return ret; > } > =20 > #if __TIMESIZE !=3D 64 Reviewed-by: Lukasz Majewski 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_/RFX.xcZB=NoTT7=uS=j0JvW Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCgAdFiEEgAyFJ+N6uu6+XupJAR8vZIA0zr0FAmDQQ2cACgkQAR8vZIA0 zr0TNQgAqlUmVylPJj2G+7YVj4Fu5jpn/bH8Q7O44O61yU5VnX/jhohGL7zSP0+C eSYFsTUn+vLBLcbX3CEs4k87u7bX8gSSDUdY4wTidXn16IfGGmj5yNwFU5+qastT RNnG1sEtG5a61YirrdJvYLbeFSG+eUog9jZ0Yh2i0oXMWqnRv1zZxgP+p4239ykO gGOA6EQyYoLrHcyc14k85K/9FCh6T3bei+o6bNpEqX8U78KDha+leaCohamA+PAO 7ZqPGymWBt8LpBVyuh//8m+mBNa1wdR0JzwZKwAmh0TezJ81hHKQgLURho7BMBnQ FVPbskDn/ZWKa4GiZREXRWvmnMX8ZQ== =4qaQ -----END PGP SIGNATURE----- --Sig_/RFX.xcZB=NoTT7=uS=j0JvW--