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