From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 518 invoked from network); 27 Dec 2020 18:56:44 -0000 Received: from mother.openwall.net (195.42.179.200) by inbox.vuxu.org with ESMTPUTF8; 27 Dec 2020 18:56:44 -0000 Received: (qmail 20336 invoked by uid 550); 27 Dec 2020 18:56:28 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Reply-To: musl@lists.openwall.com Received: (qmail 5713 invoked from network); 27 Dec 2020 18:42:14 -0000 Date: Sun, 27 Dec 2020 18:42:01 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pm.me; s=protonmail; t=1609094522; bh=ArXlitd12aNiXPcGUGLtI4dTu2X9U7PATzBZ+NmAKlM=; h=Date:To:From:Cc:Reply-To:Subject:In-Reply-To:References:From; b=VhsvycHD/t6rmFL1SPxIGtVMB9jkDKP1c0+JVbwHyP1btTwtkW3VNCDNAZXDkPb23 U0MCParQ+htEP5elxBxBilu4NwNLlm4gWCQ0oCr0UBvqMKWZIu3dCF6MJs6Y7wv2aZ TcPZTIaKZ/8CR7ZAt5ajHfFS84WZ6g+OneaILTDgIDgjWlciNvDDrgdg+Usvw1cJYK 7KpO02Th/AmtksFUj/thM/0h4D+QfonXeAqAZkk9E2lWkIrEqaCpyn0RRWLUintw3A +1TcxVBlpMcSVs5NOBCVQKrsMvWFSOSLYcwd70mTM9xqnh/zF6Jn1r9X+MrSim4i7H HLBYBU2gzWt5g== To: Rich Felker , musl@lists.openwall.com From: Alexander Lobakin Cc: Alexander Lobakin Message-ID: <20201227184032.22413-11-alobakin@pm.me> In-Reply-To: <20201227184032.22413-1-alobakin@pm.me> References: <20201227183842.22030-1-alobakin@pm.me> <20201227184032.22413-1-alobakin@pm.me> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Subject: [musl] [PATCH 11/18] pselect, select: prefer time64 variant of pselect6 if available Instead of using time64 variant "only when needed", use it as a default and fallback to time32 only on -ENOSYS. Also use deprecated select only as a last chance. Signed-off-by: Alexander Lobakin --- src/select/pselect.c | 6 ++---- src/select/select.c | 22 ++++++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/select/pselect.c b/src/select/pselect.c index 54cfb291bba2..f68616a247de 100644 --- a/src/select/pselect.c +++ b/src/select/pselect.c @@ -13,10 +13,8 @@ int pselect(int n, fd_set *restrict rfds, fd_set *restri= ct wfds, fd_set *restric =09time_t s =3D ts ? ts->tv_sec : 0; =09long ns =3D ts ? ts->tv_nsec : 0; #ifdef SYS_pselect6_time64 -=09int r =3D -ENOSYS; -=09if (SYS_pselect6 =3D=3D SYS_pselect6_time64 || !IS32BIT(s)) -=09=09r =3D __syscall_cp(SYS_pselect6_time64, n, rfds, wfds, efds, -=09=09=09ts ? ((long long[]){s, ns}) : 0, data); +=09int r =3D __syscall_cp(SYS_pselect6_time64, n, rfds, wfds, efds, +=09=09ts ? ((long long[]){s, ns}) : 0, data); =09if (SYS_pselect6 =3D=3D SYS_pselect6_time64 || r!=3D-ENOSYS) =09=09return __syscall_ret(r); =09s =3D CLAMP(s); diff --git a/src/select/select.c b/src/select/select.c index 8a7868840304..d2dbb7b08362 100644 --- a/src/select/select.c +++ b/src/select/select.c @@ -13,6 +13,7 @@ int select(int n, fd_set *restrict rfds, fd_set *restrict= wfds, fd_set *restrict =09suseconds_t us =3D tv ? tv->tv_usec : 0; =09long ns; =09const time_t max_time =3D (1ULL<<8*sizeof(time_t)-1)-1; +=09int r =3D -ENOSYS; =20 =09if (s<0 || us<0) return __syscall_ret(-EINVAL); =09if (us/1000000 > max_time - s) { @@ -26,19 +27,20 @@ int select(int n, fd_set *restrict rfds, fd_set *restri= ct wfds, fd_set *restrict =09} =20 #ifdef SYS_pselect6_time64 -=09int r =3D -ENOSYS; -=09if (SYS_pselect6 =3D=3D SYS_pselect6_time64 || !IS32BIT(s)) -=09=09r =3D __syscall_cp(SYS_pselect6_time64, n, rfds, wfds, efds, -=09=09=09tv ? ((long long[]){s, ns}) : 0, -=09=09=09((syscall_arg_t[]){ 0, _NSIG/8 })); +=09r =3D __syscall_cp(SYS_pselect6_time64, n, rfds, wfds, efds, +=09=09tv ? ((long long[]){s, ns}) : 0, +=09=09((syscall_arg_t[]){ 0, _NSIG/8 })); =09if (SYS_pselect6 =3D=3D SYS_pselect6_time64 || r!=3D-ENOSYS) =09=09return __syscall_ret(r); #endif -#ifdef SYS_select -=09return syscall_cp(SYS_select, n, rfds, wfds, efds, -=09=09tv ? ((long[]){s, us}) : 0); -#else -=09return syscall_cp(SYS_pselect6, n, rfds, wfds, efds, +#ifdef SYS_pselect6 +=09r =3D __syscall_cp(SYS_pselect6, n, rfds, wfds, efds, =09=09tv ? ((long[]){s, ns}) : 0, ((syscall_arg_t[]){ 0, _NSIG/8 })); #endif +#ifdef SYS_select +=09if (r =3D=3D -ENOSYS) +=09=09r =3D __syscall_cp(SYS_select, n, rfds, wfds, efds, +=09=09=09tv ? ((long[]){s, us}) : 0); +#endif +=09return __syscall_ret(r); } --=20 2.29.2