1#ifndef QEMU_THREAD_POSIX_H 2#define QEMU_THREAD_POSIX_H 3 4#include <pthread.h> 5#include <semaphore.h> 6 7struct 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 */ 20typedef struct QemuRecMutex { 21 QemuMutex m; 22} QemuRecMutex; 23 24struct QemuCond { 25 pthread_cond_t cond; 26 bool initialized; 27}; 28 29struct QemuSemaphore { 30 QemuMutex mutex; 31 QemuCond cond; 32 unsigned int count; 33}; 34 35struct QemuEvent { 36#ifndef __linux__ 37 pthread_mutex_t lock; 38 pthread_cond_t cond; 39#endif 40 unsigned value; 41 bool initialized; 42}; 43 44struct QemuThread { 45 pthread_t thread; 46}; 47 48#endif 49