1 #ifndef _SYS_CONDVAR_H_
2 #define _SYS_CONDVAR_H_
4 #include <sys/spinlock.h>
9 struct spinlock cv_lock;
14 void cv_init(struct cv *, const char *desc);
15 void cv_destroy(struct cv *);
17 int _cv_timedwait(struct cv *, struct lock *, int timo, int wakesig);
18 void _cv_signal(struct cv *, int broadcast);
20 int cv_has_waiters(const struct cv *);
22 #define cv_wait(cv, lock) \
23 _cv_timedwait((cv), (lock), 0, 0)
24 #define cv_wait_sig(cv, lock) \
25 _cv_timedwait((cv), (lock), 0, 1)
26 #define cv_timedwait(cv, lock, timeo) \
27 _cv_timedwait((cv), (lock), (timeo), 0)
28 #define cv_timedwait_sig(cv, lock, timeo) \
29 _cv_timedwait((cv), (lock), (timeo), 1)
31 #define cv_signal(cv) \
33 #define cv_broadcast(cv) \
35 #define cv_broadcastpri(cv, pri) \
38 #endif /* _SYS_CONDVAR_H_ */