#ifndef QEMU_THREAD_POSIX_H #define QEMU_THREAD_POSIX_H #include #include struct QemuMutex { pthread_mutex_t lock; #ifdef CONFIG_DEBUG_MUTEX const char *file; int line; #endif bool initialized; }; /* * QemuRecMutex cannot be a typedef of QemuMutex lest we have two * compatible cases in _Generic. See qemu/lockable.h. */ typedef struct QemuRecMutex { QemuMutex m; } QemuRecMutex; struct QemuCond { pthread_cond_t cond; bool initialized; }; struct QemuSemaphore { #ifndef CONFIG_SEM_TIMEDWAIT pthread_mutex_t lock; pthread_cond_t cond; unsigned int count; #else sem_t sem; #endif bool initialized; }; struct QemuEvent { #ifndef __linux__ pthread_mutex_t lock; pthread_cond_t cond; #endif unsigned value; bool initialized; }; struct QemuThread { pthread_t thread; }; #endif