xref: /qemu/include/qemu/thread-posix.h (revision 727385c4)
1 #ifndef QEMU_THREAD_POSIX_H
2 #define QEMU_THREAD_POSIX_H
3 
4 #include <pthread.h>
5 #include <semaphore.h>
6 
7 struct QemuMutex {
8     pthread_mutex_t lock;
9 #ifdef CONFIG_DEBUG_MUTEX
10     const char *file;
11     int line;
12 #endif
13     bool initialized;
14 };
15 
16 /*
17  * QemuRecMutex cannot be a typedef of QemuMutex lest we have two
18  * compatible cases in _Generic.  See qemu/lockable.h.
19  */
20 typedef struct QemuRecMutex {
21     QemuMutex m;
22 } QemuRecMutex;
23 
24 struct QemuCond {
25     pthread_cond_t cond;
26     bool initialized;
27 };
28 
29 struct QemuSemaphore {
30 #ifndef CONFIG_SEM_TIMEDWAIT
31     pthread_mutex_t lock;
32     pthread_cond_t cond;
33     unsigned int count;
34 #else
35     sem_t sem;
36 #endif
37     bool initialized;
38 };
39 
40 struct QemuEvent {
41 #ifndef __linux__
42     pthread_mutex_t lock;
43     pthread_cond_t cond;
44 #endif
45     unsigned value;
46     bool initialized;
47 };
48 
49 struct QemuThread {
50     pthread_t thread;
51 };
52 
53 #endif
54