blob: eb5c7a1da12dc34cfd3b0fcb6e4c84352e996bc5 [file] [log] [blame]
Paolo Bonzini9257d462011-03-12 17:43:52 +01001#ifndef __QEMU_THREAD_POSIX_H
2#define __QEMU_THREAD_POSIX_H 1
3#include "pthread.h"
Paolo Bonzini38b14db2011-08-08 14:36:41 +02004#include <semaphore.h>
Paolo Bonzini9257d462011-03-12 17:43:52 +01005
6struct QemuMutex {
7 pthread_mutex_t lock;
8};
9
10struct QemuCond {
11 pthread_cond_t cond;
12};
13
Paolo Bonzini38b14db2011-08-08 14:36:41 +020014struct QemuSemaphore {
Brad Smith927fa902012-12-28 01:38:11 -050015#if defined(__APPLE__) || defined(__NetBSD__)
Paolo Bonzinic166cb72012-11-02 15:43:21 +010016 pthread_mutex_t lock;
17 pthread_cond_t cond;
Izumi Tsutsui79761c62013-07-03 17:58:14 +090018 unsigned int count;
Paolo Bonzinic166cb72012-11-02 15:43:21 +010019#else
Paolo Bonzini38b14db2011-08-08 14:36:41 +020020 sem_t sem;
Paolo Bonzinic166cb72012-11-02 15:43:21 +010021#endif
Paolo Bonzini38b14db2011-08-08 14:36:41 +020022};
23
Paolo Bonzinic7c4d062013-09-25 14:20:59 +080024struct QemuEvent {
25#ifndef __linux__
26 pthread_mutex_t lock;
27 pthread_cond_t cond;
28#endif
29 unsigned value;
30};
31
Paolo Bonzini9257d462011-03-12 17:43:52 +010032struct QemuThread {
33 pthread_t thread;
34};
35
Paolo Bonzini9257d462011-03-12 17:43:52 +010036#endif