1#ifndef QEMU_THREAD_POSIX_H
2#define QEMU_THREAD_POSIX_H
3
4#include <pthread.h>
5#include <semaphore.h>
6
7typedef QemuMutex QemuRecMutex;
8#define qemu_rec_mutex_destroy qemu_mutex_destroy
9#define qemu_rec_mutex_lock_impl qemu_mutex_lock_impl
10#define qemu_rec_mutex_trylock_impl qemu_mutex_trylock_impl
11#define qemu_rec_mutex_unlock qemu_mutex_unlock
12
13struct QemuMutex {
14 pthread_mutex_t lock;
15#ifdef CONFIG_DEBUG_MUTEX
16 const char *file;
17 int line;
18#endif
19 bool initialized;
20};
21
22struct QemuCond {
23 pthread_cond_t cond;
24 bool initialized;
25};
26
27struct QemuSemaphore {
28#ifndef CONFIG_SEM_TIMEDWAIT
29 pthread_mutex_t lock;
30 pthread_cond_t cond;
31 unsigned int count;
32#else
33 sem_t sem;
34#endif
35 bool initialized;
36};
37
38struct QemuEvent {
39#ifndef __linux__
40 pthread_mutex_t lock;
41 pthread_cond_t cond;
42#endif
43 unsigned value;
44 bool initialized;
45};
46
47struct QemuThread {
48 pthread_t thread;
49};
50
51#endif
52