1#ifndef __QEMU_THREAD_H 2#define __QEMU_THREAD_H 1 3 4#include <inttypes.h> 5 6typedef struct QemuMutex QemuMutex; 7typedef struct QemuCond QemuCond; 8typedef struct QemuThread QemuThread; 9 10#ifdef _WIN32 11#include "qemu-thread-win32.h" 12#else 13#include "qemu-thread-posix.h" 14#endif 15 16void qemu_mutex_init(QemuMutex *mutex); 17void qemu_mutex_destroy(QemuMutex *mutex); 18void qemu_mutex_lock(QemuMutex *mutex); 19int qemu_mutex_trylock(QemuMutex *mutex); 20void qemu_mutex_unlock(QemuMutex *mutex); 21 22#define rcu_read_lock() do { } while (0) 23#define rcu_read_unlock() do { } while (0) 24 25void qemu_cond_init(QemuCond *cond); 26void qemu_cond_destroy(QemuCond *cond); 27 28/* 29 * IMPORTANT: The implementation does not guarantee that pthread_cond_signal 30 * and pthread_cond_broadcast can be called except while the same mutex is 31 * held as in the corresponding pthread_cond_wait calls! 32 */ 33void qemu_cond_signal(QemuCond *cond); 34void qemu_cond_broadcast(QemuCond *cond); 35void qemu_cond_wait(QemuCond *cond, QemuMutex *mutex); 36 37void qemu_thread_create(QemuThread *thread, 38 void *(*start_routine)(void*), 39 void *arg); 40void qemu_thread_get_self(QemuThread *thread); 41int qemu_thread_is_self(QemuThread *thread); 42void qemu_thread_exit(void *retval); 43 44#endif 45