ipfw: Add icmpcodes support.
[dragonfly.git] / sys / sys / condvar.h
blobee39f4ae4cd6c3626889061b12e0189ddc848fc7
1 #ifndef _SYS_CONDVAR_H_
2 #define _SYS_CONDVAR_H_
4 #include <sys/spinlock.h>
6 struct lock;
8 struct cv {
9 struct spinlock cv_lock;
10 int cv_waiters;
11 const char *cv_desc;
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) \
32 _cv_signal((cv), 0)
33 #define cv_broadcast(cv) \
34 _cv_signal((cv), 1)
35 #define cv_broadcastpri(cv, pri) \
36 cv_broadcast((cv))
38 #endif /* _SYS_CONDVAR_H_ */