diff options
Diffstat (limited to 'poc.c')
-rw-r--r-- | poc.c | 12 |
1 files changed, 6 insertions, 6 deletions
@@ -14,17 +14,17 @@ #define FUTEX_WAIT_REQUEUE_PI 11 #define FUTEX_CMP_REQUEUE_PI 12 -inline void userlock_wait(volatile const int *userlock) { +__always_inline void userlock_wait(volatile const int *userlock) { while (USERLOCK_OCCUPIED == *userlock) { usleep(10); } } -inline void userlock_lock(volatile int *userlock) { +__always_inline void userlock_lock(volatile int *userlock) { *userlock = USERLOCK_OCCUPIED; } -inline void userlock_release(volatile int *userlock) { +__always_inline void userlock_release(volatile int *userlock) { *userlock = USERLOCK_FREE; } @@ -52,15 +52,15 @@ void wait_for_thread_to_wait_in_kernel(pthread_t tid, int context_switch_count) } } -inline int futex_lock_pi(int *uaddr) { +__always_inline int futex_lock_pi(int *uaddr) { return syscall(__NR_futex, uaddr, FUTEX_LOCK_PI, 0, NULL, NULL, 0); } -inline int futex_wait_requeue_pi(int *uaddr1, int *uaddr2) { +__always_inline int futex_wait_requeue_pi(int *uaddr1, int *uaddr2) { return syscall(__NR_futex, uaddr1, FUTEX_WAIT_REQUEUE_PI, 0, NULL, uaddr2, 0); } -inline int futex_requeue_pi(int *uaddr1, int *uaddr2, int cmpval) { +__always_inline int futex_requeue_pi(int *uaddr1, int *uaddr2, int cmpval) { return syscall(__NR_futex, uaddr1, FUTEX_CMP_REQUEUE_PI, 1, NULL, uaddr2, cmpval); } |