1#ifndef QEMU_THREAD_WIN32_H 2#define QEMU_THREAD_WIN32_H 3 4#include <windows.h> 5 6struct QemuMutex { 7 CRITICAL_SECTION lock; 8 LONG owner; 9}; 10 11typedef struct QemuRecMutex QemuRecMutex; 12struct QemuRecMutex { 13 CRITICAL_SECTION lock; 14}; 15 16void qemu_rec_mutex_destroy(QemuRecMutex *mutex); 17void qemu_rec_mutex_lock(QemuRecMutex *mutex); 18int qemu_rec_mutex_trylock(QemuRecMutex *mutex); 19void qemu_rec_mutex_unlock(QemuRecMutex *mutex); 20 21struct QemuCond { 22 LONG waiters, target; 23 HANDLE sema; 24 HANDLE continue_event; 25}; 26 27struct QemuSemaphore { 28 HANDLE sema; 29}; 30 31struct QemuEvent { 32 int value; 33 HANDLE event; 34}; 35 36typedef struct QemuThreadData QemuThreadData; 37struct QemuThread { 38 QemuThreadData *data; 39 unsigned tid; 40}; 41 42/* Only valid for joinable threads. */ 43HANDLE qemu_thread_get_handle(QemuThread *thread); 44 45#endif 46