diff options
Diffstat (limited to 'include/condvar.h')
-rw-r--r-- | include/condvar.h | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/include/condvar.h b/include/condvar.h index cba7678..8ee3859 100644 --- a/include/condvar.h +++ b/include/condvar.h | |||
@@ -6,7 +6,7 @@ | |||
6 | #include <sys/syscall.h> | 6 | #include <sys/syscall.h> |
7 | #include <linux/futex.h> | 7 | #include <linux/futex.h> |
8 | 8 | ||
9 | #include "ticketlock.h" | 9 | #include "spinlock.h" |
10 | 10 | ||
11 | typedef int seq_t; | 11 | typedef int seq_t; |
12 | 12 | ||
@@ -36,32 +36,32 @@ static inline void cv_init_shared(cv_t* cv) | |||
36 | *cv = CV_INITIALIZER_PUBLIC; | 36 | *cv = CV_INITIALIZER_PUBLIC; |
37 | } | 37 | } |
38 | 38 | ||
39 | static inline int cv_wait(cv_t* cv, ticketlock_t* l) | 39 | static inline int cv_wait(cv_t* cv, spinlock_t* l) |
40 | { | 40 | { |
41 | int ret; | 41 | int ret; |
42 | int wait_mode = (cv->mode == CV_PRIVATE) ? FUTEX_WAIT_PRIVATE : FUTEX_WAIT; | 42 | int wait_mode = (cv->mode == CV_PRIVATE) ? FUTEX_WAIT_PRIVATE : FUTEX_WAIT; |
43 | seq_t seq = cv->seq; | 43 | seq_t seq = cv->seq; |
44 | 44 | ||
45 | ++cv->waiters; | 45 | ++cv->waiters; |
46 | tl_unlock(l); /* memory barrier */ | 46 | spin_unlock(l); /* memory barrier */ |
47 | ret = syscall(SYS_futex, &cv->seq, wait_mode, seq, NULL, NULL, 0); | 47 | ret = syscall(SYS_futex, &cv->seq, wait_mode, seq, NULL, NULL, 0); |
48 | tl_lock(l); | 48 | spin_lock(l); |
49 | --cv->waiters; | 49 | --cv->waiters; |
50 | 50 | ||
51 | return ret; | 51 | return ret; |
52 | } | 52 | } |
53 | 53 | ||
54 | #ifndef PGM_PREEMPTIVE | 54 | #ifndef PGM_PREEMPTIVE |
55 | static inline int cv_wait_np(cv_t* cv, ticketlock_t* l, unsigned long *flags) | 55 | static inline int cv_wait_np(cv_t* cv, spinlock_t* l, unsigned long *flags) |
56 | { | 56 | { |
57 | int ret; | 57 | int ret; |
58 | int wait_mode = (cv->mode == CV_PRIVATE) ? FUTEX_WAIT_PRIVATE : FUTEX_WAIT; | 58 | int wait_mode = (cv->mode == CV_PRIVATE) ? FUTEX_WAIT_PRIVATE : FUTEX_WAIT; |
59 | seq_t seq = cv->seq; | 59 | seq_t seq = cv->seq; |
60 | 60 | ||
61 | ++cv->waiters; | 61 | ++cv->waiters; |
62 | tl_unlock_np(l, *flags); /* memory barrier */ | 62 | spin_unlock_np(l, *flags); /* memory barrier */ |
63 | ret = syscall(SYS_futex, &cv->seq, wait_mode, seq, NULL, NULL, 0); | 63 | ret = syscall(SYS_futex, &cv->seq, wait_mode, seq, NULL, NULL, 0); |
64 | tl_lock_np(l, flags); | 64 | spin_lock_np(l, flags); |
65 | --cv->waiters; | 65 | --cv->waiters; |
66 | 66 | ||
67 | return ret; | 67 | return ret; |