| From f7957c35654222e5bd1038341612bbb40a88e98b Mon Sep 17 00:00:00 2001 | 
| From: Khem Raj <raj.khem@gmail.com> | 
| Date: Mon, 16 Nov 2020 12:08:43 -0800 | 
| Subject: [PATCH] linux/thread: Use SYS_futex instead of __NR_futex | 
|   | 
| SYS_futex it expected from system C library. | 
| in glibc (/usr/include/bits/syscall.h defines it in terms of of NR_futex) | 
| some newer 32bit architectures e.g. riscv32 are using 64bit time_t from | 
| get go unlike other 32bit architectures in glibc, therefore it wont have | 
| NR_futex defined but just NR_futex_time64 this aliases it to NR_futex so | 
| that SYS_futex is then defined for rv32 | 
|   | 
| Upstream-Status: Submitted [https://github.com/videolan/vlc/pull/117] | 
| Signed-off-by: Khem Raj <raj.khem@gmail.com> | 
| --- | 
|  src/linux/thread.c | 7 ++++++- | 
|  1 file changed, 6 insertions(+), 1 deletion(-) | 
|   | 
| diff --git a/src/linux/thread.c b/src/linux/thread.c | 
| index 20da296..30639a3 100644 | 
| --- a/src/linux/thread.c | 
| +++ b/src/linux/thread.c | 
| @@ -30,6 +30,11 @@ | 
|  #include <sys/syscall.h> | 
|  #include <linux/futex.h> | 
|   | 
| +/* 32bit architectures with 64bit time_t do not define __NR_futex syscall */ | 
| +#if !defined(SYS_futex) && defined(SYS_futex_time64) | 
| +#define SYS_futex SYS_futex_time64 | 
| +#endif | 
| + | 
|  #ifndef FUTEX_PRIVATE_FLAG | 
|  #define FUTEX_WAKE_PRIVATE FUTEX_WAKE | 
|  #define FUTEX_WAIT_PRIVATE FUTEX_WAIT | 
| @@ -50,7 +55,7 @@ unsigned long vlc_thread_id(void) | 
|  static int sys_futex(void *addr, int op, unsigned val, | 
|                       const struct timespec *to, void *addr2, int val3) | 
|  { | 
| -    return syscall(__NR_futex, addr, op, val, to, addr2, val3); | 
| +    return syscall(SYS_futex, addr, op, val, to, addr2, val3); | 
|  } | 
|   | 
|  static int vlc_futex_wake(void *addr, int nr) | 
| --  | 
| 2.29.2 |