This patch provides support for 'joining a thread' by wrapping the POSIX pthread_join with qemu_thread_join.
Since the backend implementation is based on threads and I am stopping and starting that thread during operations like 'snapshot resume', I do use this functionality to synchronize with the TPM thread's termination before terminating the TPM, creating a new one and loading previous state from the time of the snapshot into the TPM. Signed-off-by: Stefan Berger <stef...@linux.vnet.ibm.com> --- qemu-thread-posix.c | 5 +++++ qemu-thread.h | 1 + 2 files changed, 6 insertions(+) Index: qemu-git/qemu-thread-posix.c =================================================================== --- qemu-git.orig/qemu-thread-posix.c +++ qemu-git/qemu-thread-posix.c @@ -147,3 +147,8 @@ void qemu_thread_exit(void *retval) { pthread_exit(retval); } + +int qemu_thread_join(QemuThread *thread, void **retval) +{ + return pthread_join(thread->thread, retval); +} Index: qemu-git/qemu-thread.h =================================================================== --- qemu-git.orig/qemu-thread.h +++ qemu-git/qemu-thread.h @@ -35,5 +35,6 @@ void qemu_thread_create(QemuThread *thre void qemu_thread_get_self(QemuThread *thread); int qemu_thread_is_self(QemuThread *thread); void qemu_thread_exit(void *retval); +int qemu_thread_join(QemuThread *thread, void **retval); #endif