xref: /openbsd/sys/dev/pci/drm/include/linux/wait_bit.h (revision ad8b1aaf)
1 /* Public domain. */
2 
3 #ifndef _LINUX_WAIT_BIT_H
4 #define _LINUX_WAIT_BIT_H
5 
6 #include <linux/wait.h>
7 
8 int wait_on_bit(unsigned long *, int, unsigned);
9 int wait_on_bit_timeout(unsigned long *, int, unsigned, int);
10 void wake_up_bit(void *, int);
11 void clear_and_wake_up_bit(int, void *);
12 
13 wait_queue_head_t *bit_waitqueue(void *, int);
14 wait_queue_head_t *__var_waitqueue(void *);
15 
16 extern wait_queue_head_t var_waitq;
17 
18 static inline void
wake_up_var(void * var)19 wake_up_var(void *var)
20 {
21 	wake_up(&var_waitq);
22 }
23 
24 #define wait_var_event(var, condition)				\
25 	wait_event(var_waitq, (condition))
26 
27 #define wait_var_event_interruptible(var, condition)		\
28 	wait_event_interruptible(var_waitq, condition)
29 
30 #define wait_var_event_killable(var, condition)			\
31 	wait_event_killable(var_waitq, (condition))
32 
33 #define ___wait_var_event(var, condition, state, ex, ret, fn)	\
34 ({								\
35 	long __ret = ret ;					\
36 	if (state & TASK_INTERRUPTIBLE)				\
37 		__ret = wait_var_event_interruptible((var), (condition)); \
38 	else							\
39 		wait_var_event((var), (condition));		\
40 	__ret;							\
41 })
42 
43 #endif
44