From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 49282 invoked by alias); 6 Nov 2019 17:47:52 -0000 Mailing-List: contact glibc-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: , Sender: glibc-cvs-owner@sourceware.org List-Subscribe: Received: (qmail 49261 invoked by uid 9943); 6 Nov 2019 17:47:52 -0000 Date: Wed, 06 Nov 2019 17:47:00 -0000 Message-ID: <20191106174752.49260.qmail@sourceware.org> Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Adhemerval Zanella To: glibc-cvs@sourceware.org Subject: [glibc] nptl: Refactor thrd_sleep in terms of clock_nanosleep X-Act-Checkin: glibc X-Git-Author: Adhemerval Zanella X-Git-Refname: refs/heads/master X-Git-Oldrev: 3537ecb49cf7177274607004c562d6f9ecc99474 X-Git-Newrev: 807edded258e888dbfa0d19ca967d6e42882d069 X-SW-Source: 2019-q4/txt/msg00288.txt.bz2 https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=807edded258e888dbfa0d19ca967d6e42882d069 commit 807edded258e888dbfa0d19ca967d6e42882d069 Author: Adhemerval Zanella Date: Tue Nov 5 21:52:48 2019 +0000 nptl: Refactor thrd_sleep in terms of clock_nanosleep Checked on x86_64-linux-gnu and powerpc64le-linux-gnu. Reviewed-by: Florian Weimer Diff: --- nptl/thrd_sleep.c | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/nptl/thrd_sleep.c b/nptl/thrd_sleep.c index 2e185dd..3f5e307 100644 --- a/nptl/thrd_sleep.c +++ b/nptl/thrd_sleep.c @@ -24,16 +24,13 @@ int thrd_sleep (const struct timespec* time_point, struct timespec* remaining) { - INTERNAL_SYSCALL_DECL (err); - int ret = INTERNAL_SYSCALL_CANCEL (nanosleep, err, time_point, remaining); - if (INTERNAL_SYSCALL_ERROR_P (ret, err)) - { - /* C11 states thrd_sleep function returns -1 if it has been interrupted - by a signal, or a negative value if it fails. */ - ret = INTERNAL_SYSCALL_ERRNO (ret, err); - if (ret == EINTR) - return -1; - return -2; - } - return 0; + int ret = __clock_nanosleep (CLOCK_REALTIME, 0, time_point, remaining); + /* C11 states thrd_sleep function returns -1 if it has been interrupted + by a signal, or a negative value if it fails. */ + switch (ret) + { + case 0: return 0; + case EINTR: return -1; + default: return -2; + } }