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 433 invoked from network); 27 Dec 2020 18:56:14 -0000 Received: from mother.openwall.net (195.42.179.200) by inbox.vuxu.org with ESMTPUTF8; 27 Dec 2020 18:56:14 -0000 Received: (qmail 15543 invoked by uid 550); 27 Dec 2020 18:56:03 -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 5418 invoked from network); 27 Dec 2020 18:41:31 -0000 Date: Sun, 27 Dec 2020 18:41:16 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pm.me; s=protonmail; t=1609094479; bh=2QHHstWXiHYtD+ZiZjAASVJwEu+juby9zS+k+Swfp64=; h=Date:To:From:Cc:Reply-To:Subject:In-Reply-To:References:From; b=dYLsJb1K9fMVmdwS271xxhtr0NUDvvXXnc/VW74aivf4fEtF9XmSy5JyEWdrh9bVc MQBfKO3eD3hWNi9R12N4vNHq9+aUzmaQERsGyU156Mx3sGaiEBq80xpNZzdCU0ln4J kmSy00RDaqlGb+5yPrDxCoMI3GNJXQJ9ZwGZUoaGhTIC4HtRTRtHK956RYMf5/6bSk TapYw+0/A5NM98qmnqfEtnC+bQsGhmAj4t/Yk/R9LUlHeEElMP+CsBgROZTksCq9WL hNDCebGnV7EH+KkESR5O7ZP3uM9YnVnWIuzSwToQ/fFQQJg3R5pEXmYGQZpVkmh4NN 7kGbAxFjbMtig== To: Rich Felker , musl@lists.openwall.com From: Alexander Lobakin Cc: Alexander Lobakin Message-ID: <20201227184032.22413-5-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 05/18] clock_nanosleep: prefer time64 variant 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 nanosleep only as a last chance. Signed-off-by: Alexander Lobakin --- src/time/clock_nanosleep.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/time/clock_nanosleep.c b/src/time/clock_nanosleep.c index e195499cc072..ea090eb8c313 100644 --- a/src/time/clock_nanosleep.c +++ b/src/time/clock_nanosleep.c @@ -11,27 +11,29 @@ int __clock_nanosleep(clockid_t clk, int flags, const s= truct timespec *req, stru #ifdef SYS_clock_nanosleep_time64 =09time_t s =3D req->tv_sec; =09long ns =3D req->tv_nsec; -=09int r =3D -ENOSYS; -=09if (SYS_clock_nanosleep =3D=3D SYS_clock_nanosleep_time64 || !IS32BIT(s= )) -=09=09r =3D __syscall_cp(SYS_clock_nanosleep_time64, clk, flags, -=09=09=09((long long[]){s, ns}), rem); +=09int r =3D __syscall_cp(SYS_clock_nanosleep_time64, clk, flags, +=09=09((long long[]){s, ns}), rem); =09if (SYS_clock_nanosleep =3D=3D SYS_clock_nanosleep_time64 || r!=3D-ENOS= YS) =09=09return -r; =09long long extra =3D s - CLAMP(s); =09long ts32[2] =3D { CLAMP(s), ns }; -=09if (clk =3D=3D CLOCK_REALTIME && !flags) +=09r =3D __syscall_cp(SYS_clock_nanosleep, clk, flags, &ts32, &ts32); +#ifdef SYS_nanosleep +=09if (r =3D=3D -ENOSYS && clk =3D=3D CLOCK_REALTIME && !flags) =09=09r =3D __syscall_cp(SYS_nanosleep, &ts32, &ts32); -=09else -=09=09r =3D __syscall_cp(SYS_clock_nanosleep, clk, flags, &ts32, &ts32); +#endif =09if (r=3D=3D-EINTR && rem && !(flags & TIMER_ABSTIME)) { =09=09rem->tv_sec =3D ts32[0] + extra; =09=09rem->tv_nsec =3D ts32[1]; =09} =09return -r; #else -=09if (clk =3D=3D CLOCK_REALTIME && !flags) -=09=09return -__syscall_cp(SYS_nanosleep, req, rem); -=09return -__syscall_cp(SYS_clock_nanosleep, clk, flags, req, rem); +=09int r =3D __syscall_cp(SYS_clock_nanosleep, clk, flags, req, rem); +#ifdef SYS_nanosleep +=09if (r =3D=3D -ENOSYS && clk =3D=3D CLOCK_REALTIME && !flags) +=09=09r =3D __syscall_cp(SYS_nanosleep, req, rem); +#endif +=09return -r; #endif } =20 --=20 2.29.2