aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Hajnoczi <stefanha@redhat.com>2022-02-22 14:01:50 +0000
committerKevin Wolf <kwolf@redhat.com>2022-03-04 18:14:40 +0100
commitd5d2b15ecf62c662985983ca065ddeeec48fd248 (patch)
tree346ba85ecf6115b6531b1924cc3eae3a5a114304
parent17c78154b0ba2237c37f3e4a95140b754cb6ac8b (diff)
downloadqemu-d5d2b15ecf62c662985983ca065ddeeec48fd248.zip
qemu-d5d2b15ecf62c662985983ca065ddeeec48fd248.tar.gz
qemu-d5d2b15ecf62c662985983ca065ddeeec48fd248.tar.bz2
cpus: use coroutine TLS macros for iothread_locked
qemu_mutex_iothread_locked() may be used from coroutines. Standard __thread variables cannot be used by coroutines. Use the coroutine TLS macros instead. Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Message-Id: <20220222140150.27240-5-stefanha@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
-rw-r--r--softmmu/cpus.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/softmmu/cpus.c b/softmmu/cpus.c
index 035395a..d1ff3cf 100644
--- a/softmmu/cpus.c
+++ b/softmmu/cpus.c
@@ -25,6 +25,7 @@
#include "qemu/osdep.h"
#include "qemu-common.h"
#include "monitor/monitor.h"
+#include "qemu/coroutine-tls.h"
#include "qapi/error.h"
#include "qapi/qapi-commands-machine.h"
#include "qapi/qapi-commands-misc.h"
@@ -473,11 +474,11 @@ bool qemu_in_vcpu_thread(void)
return current_cpu && qemu_cpu_is_self(current_cpu);
}
-static __thread bool iothread_locked = false;
+QEMU_DEFINE_STATIC_CO_TLS(bool, iothread_locked)
bool qemu_mutex_iothread_locked(void)
{
- return iothread_locked;
+ return get_iothread_locked();
}
/*
@@ -490,13 +491,13 @@ void qemu_mutex_lock_iothread_impl(const char *file, int line)
g_assert(!qemu_mutex_iothread_locked());
bql_lock(&qemu_global_mutex, file, line);
- iothread_locked = true;
+ set_iothread_locked(true);
}
void qemu_mutex_unlock_iothread(void)
{
g_assert(qemu_mutex_iothread_locked());
- iothread_locked = false;
+ set_iothread_locked(false);
qemu_mutex_unlock(&qemu_global_mutex);
}