From patchwork Sat Jun 22 04:37:17 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 33261 Received: (qmail 87447 invoked by alias); 22 Jun 2019 04:39:47 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 87428 invoked by uid 89); 22 Jun 2019 04:39:46 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3 autolearn=ham version=3.3.1 spammy=RV32, HX-Envelope-From:prvs, HContent-Transfer-Encoding:8bit X-HELO: esa6.hgst.iphmx.com DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1561178385; x=1592714385; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=fv1Ya4V+aR1qMcu+kWUsO0QIs8Oy4QPrwoVn/V881pY=; b=oD/GF3+yiRa1v8CiQXLSUEQNO/LVbt57rbQpuOX0oobLiyuQsZqjmd0y 2/XYVYVe6h68H1AWw0MHqedi4XOGQ7sjYdmQr5ZKv3qmKb7856sfXFLyV I/lHFje4amGH/jviNdSemP9dXxwLtWSG6a0ynhD+DzAaEDi//6RRKqLKc ZeNH/v7Qz7LRSWhZXMjgDn7B6vcH1Zu32pWd+NeiLmI4kugGMjosCyTX2 PRRBUJJDLqQ5NE+dlHMAKfBlIQ7veIElKAv+vXGOeAjjWSTJlfB76tWqR 9WbEfdmH6e8DFwTILOZtIjlBogpCxeHy4+f6n0DovMFG86qpdzX6m44RC A==; IronPort-SDR: jVDd2PrnY8KDlAlDHLEkVBJgZwqtnSpHfkwtk4mIFp4gMjjMZo59SksSo61yKp17ACDdJOYvbB L7pwlPnQXTI7KJBK98z45hU5mf7MvKwJ1+b0StRBsGRC/9LJFJZZ/WGy/WLf6UDi66JIjS+K7E EQlj3dcq0u//cmXfvcq0V8b8tkaL9wr7UcM8qYtxBwdGKchzCkBKM22DdYG4X0c2sHWZZXH/cg +yEcF+CANxgbGvGvSGsfkkuJqDtNPl/Q1VP0HJ4BTk2soAeGeYpS+JVirzNNf2uEPneav5d9HR nUcdHa8JMLKRQclVem/HpPLg IronPort-SDR: 8m4/NBnlu+sCWjwdyo/LKbRjLpMCpbfvQjsoedQAlKO85+65m95GtNgR89y7YXGCXPWvsptWIC O6aLMoFC/vwJTCM/a+Fnr2/6Gp3uQjQL6lTKsESwDETMXh/NV8U6JnMUnIEIL9PmMos4TvzLLJ +BxC0VrMIvJYxUVW57u8D+ZYmINRV1sdvYNCgh5+pDh0znDWjIQWUDdDa5hIQqPn++pTcJJpVe dmUQCaLertZNa0wkaNcfeZ5iW0RgeGjCxY0SBf8wz6qP33n4+SSKxtKG0B40xbwT4XcvfRIo0D Xv0= From: Alistair Francis To: libc-alpha@sourceware.org Cc: alistair.francis@wdc.com, alistair23@gmail.com Subject: [RFC v1 02/16] sysdeps/futex: Use __NR_futex_time64 if we don't have __NR_futex Date: Fri, 21 Jun 2019 21:37:17 -0700 Message-Id: <9e358d4856a30c13d14f79ca45dbbef8a33826b7.1561177967.git.alistair.francis@wdc.com> In-Reply-To: References: MIME-Version: 1.0 __NR_futex isn't avaliable on newer 32-bit architectures (such as RV32) so if it isn't avaliable lets use __NR_futex_time64 instead. Signed-off-by: Alistair Francis --- ChangeLog | 1 + sysdeps/unix/sysv/linux/lowlevellock-futex.h | 28 ++++++++++++++------ 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index b90c5ab60c..a700783ef3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,7 @@ * nptl/thrd_sleep.c: Use clock_nanosleep_time64 instead of nanosleep. * sysdeps/unix/sysv/linux/nanosleep.c: Likewise. * sysdeps/unix/sysv/linux/nanosleep_nocancel.c: Likewise. + * sysdeps/unix/sysv/linux/lowlevellock-futex.h: Use __NR_futex_time64 if we don't have __NR_futex. 2019-06-20 Dmitry V. Levin Florian Weimer diff --git a/sysdeps/unix/sysv/linux/lowlevellock-futex.h b/sysdeps/unix/sysv/linux/lowlevellock-futex.h index 030a14b8dc..cde4a9157c 100644 --- a/sysdeps/unix/sysv/linux/lowlevellock-futex.h +++ b/sysdeps/unix/sysv/linux/lowlevellock-futex.h @@ -65,14 +65,26 @@ (((fl) | FUTEX_PRIVATE_FLAG) ^ (private)) #endif -#define lll_futex_syscall(nargs, futexp, op, ...) \ - ({ \ - INTERNAL_SYSCALL_DECL (__err); \ - long int __ret = INTERNAL_SYSCALL (futex, __err, nargs, futexp, op, \ - __VA_ARGS__); \ - (__glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (__ret, __err)) \ - ? -INTERNAL_SYSCALL_ERRNO (__ret, __err) : 0); \ - }) +#ifndef __NR_futex +/* __NR_futex isn't defined on all archs (RV32) so use __NR_futex_time64 */ +# define lll_futex_syscall(nargs, futexp, op, ...) \ + ({ \ + INTERNAL_SYSCALL_DECL (__err); \ + long int __ret = INTERNAL_SYSCALL (futex_time64, __err, nargs, futexp, op, \ + __VA_ARGS__); \ + (__glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (__ret, __err)) \ + ? -INTERNAL_SYSCALL_ERRNO (__ret, __err) : 0); \ + }) +#else +# define lll_futex_syscall(nargs, futexp, op, ...) \ + ({ \ + INTERNAL_SYSCALL_DECL (__err); \ + long int __ret = INTERNAL_SYSCALL (futex, __err, nargs, futexp, op, \ + __VA_ARGS__); \ + (__glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (__ret, __err)) \ + ? -INTERNAL_SYSCALL_ERRNO (__ret, __err) : 0); \ + }) +#endif #define lll_futex_wait(futexp, val, private) \ lll_futex_timed_wait (futexp, val, NULL, private)