xref: /openbmc/qemu/include/qemu/thread-win32.h (revision 9516034d)
12a6a4076SMarkus Armbruster #ifndef QEMU_THREAD_WIN32_H
22a6a4076SMarkus Armbruster #define QEMU_THREAD_WIN32_H
3a9c94277SMarkus Armbruster 
4a9c94277SMarkus Armbruster #include <windows.h>
51de7afc9SPaolo Bonzini 
61de7afc9SPaolo Bonzini struct QemuMutex {
712f8def0SAndrey Shedel     SRWLOCK lock;
8ba59fb77SPaolo Bonzini #ifdef CONFIG_DEBUG_MUTEX
9ba59fb77SPaolo Bonzini     const char *file;
10ba59fb77SPaolo Bonzini     int line;
11ba59fb77SPaolo Bonzini #endif
12c096358eSFam Zheng     bool initialized;
131de7afc9SPaolo Bonzini };
141de7afc9SPaolo Bonzini 
15feadec63SPaolo Bonzini typedef struct QemuRecMutex QemuRecMutex;
16feadec63SPaolo Bonzini struct QemuRecMutex {
17feadec63SPaolo Bonzini     CRITICAL_SECTION lock;
18c096358eSFam Zheng     bool initialized;
19feadec63SPaolo Bonzini };
20feadec63SPaolo Bonzini 
211de7afc9SPaolo Bonzini struct QemuCond {
2212f8def0SAndrey Shedel     CONDITION_VARIABLE var;
23c096358eSFam Zheng     bool initialized;
241de7afc9SPaolo Bonzini };
251de7afc9SPaolo Bonzini 
261de7afc9SPaolo Bonzini struct QemuSemaphore {
271de7afc9SPaolo Bonzini     HANDLE sema;
28c096358eSFam Zheng     bool initialized;
291de7afc9SPaolo Bonzini };
301de7afc9SPaolo Bonzini 
31c7c4d063SPaolo Bonzini struct QemuEvent {
327c9b2bf6SPaolo Bonzini     int value;
33c7c4d063SPaolo Bonzini     HANDLE event;
34c096358eSFam Zheng     bool initialized;
35c7c4d063SPaolo Bonzini };
36c7c4d063SPaolo Bonzini 
371de7afc9SPaolo Bonzini typedef struct QemuThreadData QemuThreadData;
381de7afc9SPaolo Bonzini struct QemuThread {
391de7afc9SPaolo Bonzini     QemuThreadData *data;
401de7afc9SPaolo Bonzini     unsigned tid;
411de7afc9SPaolo Bonzini };
421de7afc9SPaolo Bonzini 
431de7afc9SPaolo Bonzini /* Only valid for joinable threads.  */
44*ec150c7eSMarkus Armbruster HANDLE qemu_thread_get_handle(struct QemuThread *thread);
451de7afc9SPaolo Bonzini 
461de7afc9SPaolo Bonzini #endif
47