This adds two missing features to our QEMU threading and locking abstractions, qemu_thread_join and qemu_cond_timedwait, and then converts compat AIO, compatfd, and several audio subsystems. This not only saves a few lines of code, it also allows to apply certain thread and lock parameters centrally which is specifically important when using SCHED_FIFO.
Note that patch 6 is untested. Am I right that the other threads coreaudioVoiceOut::mutex addresses are created by the coreaudio core? Just curious. Furthermore note that the changes to posix-aio-compat.c depend on patches in Kevin's latest pull request. CC: Andreas Färber <andreas.faer...@web.de> CC: Kevin Wolf <kw...@redhat.com> CC: malc <av1...@comtv.ru> Jan Kiszka (6): Enable joinable POSIX threads Introduce qemu_cond_timedwait Switch POSIX compat AIO to QEMU abstractions Switch compatfd to QEMU thread audio: Use QEMU threads & synchronization audio: Switch coreaudio to QemuMutex audio/audio_pt_int.c | 167 ++--------------------------------------------- audio/audio_pt_int.h | 45 +++++++++---- audio/coreaudio.c | 56 ++-------------- audio/esdaudio.c | 92 +++++++------------------- audio/paaudio.c | 84 +++++++---------------- compatfd.c | 16 +---- cpus.c | 6 +- hw/ccid-card-emulated.c | 5 +- posix-aio-compat.c | 115 +++++++++----------------------- qemu-thread-posix.c | 53 ++++++++++++++- qemu-thread-posix.h | 3 + qemu-thread-win32.c | 20 +++++- qemu-thread.h | 9 ++- ui/vnc-jobs-async.c | 2 +- 14 files changed, 219 insertions(+), 454 deletions(-) -- 1.7.3.4