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