xref: /qemu/include/qemu/thread-win32.h (revision dfbd2768)
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