From: Adhemerval Zanella Date: Tue, 5 Nov 2019 21:52:48 +0000 (+0000) Subject: nptl: Refactor thrd_sleep in terms of clock_nanosleep X-Git-Tag: glibc-2.31~283 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=807edded258e888dbfa0d19ca967d6e42882d069;p=thirdparty%2Fglibc.git nptl: Refactor thrd_sleep in terms of clock_nanosleep Checked on x86_64-linux-gnu and powerpc64le-linux-gnu. Reviewed-by: Florian Weimer --- diff --git a/nptl/thrd_sleep.c b/nptl/thrd_sleep.c index 2e185dd748e..3f5e307d56d 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; + } }