1*4882a593SmuzhiyunUse SYS_futex for syscall 2*4882a593Smuzhiyun 3*4882a593Smuzhiyunglibc defines SYS_futex and on newer 32bit CPUs like RISCV-32, arc there 4*4882a593Smuzhiyunis no 32bit time_t therefore define SYS_futex in terms of SYS_futex_time64 5*4882a593Smuzhiyun 6*4882a593SmuzhiyunUpstream-Status: Pending 7*4882a593SmuzhiyunSigned-off-by: Khem Raj <raj.khem@gmail.com> 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun--- a/storage/innobase/sync/srw_lock.cc 10*4882a593Smuzhiyun+++ b/storage/innobase/sync/srw_lock.cc 11*4882a593Smuzhiyun@@ -210,6 +210,12 @@ void ssux_lock_low::wake() { WakeByAddre 12*4882a593Smuzhiyun # ifdef __linux__ 13*4882a593Smuzhiyun # include <linux/futex.h> 14*4882a593Smuzhiyun # include <sys/syscall.h> 15*4882a593Smuzhiyun+/** Newer 32bit CPUs eg. RISCV-32 are defaulting to 64bit time_t from get go and 16*4882a593Smuzhiyun+ therefore do not define __NR_futex */ 17*4882a593Smuzhiyun+# if !defined(SYS_futex) && defined(SYS_futex_time64) 18*4882a593Smuzhiyun+# define SYS_futex SYS_futex_time64 19*4882a593Smuzhiyun+# endif 20*4882a593Smuzhiyun+ 21*4882a593Smuzhiyun # define SRW_FUTEX(a,op,n) \ 22*4882a593Smuzhiyun syscall(SYS_futex, a, FUTEX_ ## op ## _PRIVATE, n, nullptr, nullptr, 0) 23*4882a593Smuzhiyun # elif defined __OpenBSD__ 24