aboutsummaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
authorStefan Hajnoczi <stefanha@redhat.com>2024-01-02 10:35:25 -0500
committerStefan Hajnoczi <stefanha@redhat.com>2024-01-08 10:45:43 -0500
commit195801d700c008b6a8d8acfa299aa5f177446647 (patch)
tree7ab423e4a773b818f6c6d65f2fa06dc4517cad24 /util
parent897a06c6d7ce8fb962a33cea1910d17218c746e9 (diff)
system/cpus: rename qemu_mutex_lock_iothread() to bql_lock()
The Big QEMU Lock (BQL) has many names and they are confusing. The actual QemuMutex variable is called qemu_global_mutex but it's commonly referred to as the BQL in discussions and some code comments. The locking APIs, however, are called qemu_mutex_lock_iothread() and qemu_mutex_unlock_iothread(). The "iothread" name is historic and comes from when the main thread was split into into KVM vcpu threads and the "iothread" (now called the main loop thread). I have contributed to the confusion myself by introducing a separate --object iothread, a separate concept unrelated to the BQL. The "iothread" name is no longer appropriate for the BQL. Rename the locking APIs to: - void bql_lock(void) - void bql_unlock(void) - bool bql_locked(void) There are more APIs with "iothread" in their names. Subsequent patches will rename them. There are also comments and documentation that will be updated in later patches. Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Paul Durrant <paul@xen.org> Acked-by: Fabiano Rosas <farosas@suse.de> Acked-by: David Woodhouse <dwmw@amazon.co.uk> Reviewed-by: Cédric Le Goater <clg@kaod.org> Acked-by: Peter Xu <peterx@redhat.com> Acked-by: Eric Farman <farman@linux.ibm.com> Reviewed-by: Harsh Prateek Bora <harshpb@linux.ibm.com> Acked-by: Hyman Huang <yong.huang@smartx.com> Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com> Message-id: 20240102153529.486531-2-stefanha@redhat.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Diffstat (limited to 'util')
-rw-r--r--util/async.c2
-rw-r--r--util/main-loop.c8
-rw-r--r--util/qsp.c6
-rw-r--r--util/rcu.c14
4 files changed, 15 insertions, 15 deletions
diff --git a/util/async.c b/util/async.c
index 460529057c..36a8e76ab0 100644
--- a/util/async.c
+++ b/util/async.c
@@ -727,7 +727,7 @@ AioContext *qemu_get_current_aio_context(void)
if (ctx) {
return ctx;
}
- if (qemu_mutex_iothread_locked()) {
+ if (bql_locked()) {
/* Possibly in a vCPU thread. */
return qemu_get_aio_context();
}
diff --git a/util/main-loop.c b/util/main-loop.c
index 63b4cda84a..a0386cfeb6 100644
--- a/util/main-loop.c
+++ b/util/main-loop.c
@@ -299,13 +299,13 @@ static int os_host_main_loop_wait(int64_t timeout)
glib_pollfds_fill(&timeout);
- qemu_mutex_unlock_iothread();
+ bql_unlock();
replay_mutex_unlock();
ret = qemu_poll_ns((GPollFD *)gpollfds->data, gpollfds->len, timeout);
replay_mutex_lock();
- qemu_mutex_lock_iothread();
+ bql_lock();
glib_pollfds_poll();
@@ -514,7 +514,7 @@ static int os_host_main_loop_wait(int64_t timeout)
poll_timeout_ns = qemu_soonest_timeout(poll_timeout_ns, timeout);
- qemu_mutex_unlock_iothread();
+ bql_unlock();
replay_mutex_unlock();
@@ -522,7 +522,7 @@ static int os_host_main_loop_wait(int64_t timeout)
replay_mutex_lock();
- qemu_mutex_lock_iothread();
+ bql_lock();
if (g_poll_ret > 0) {
for (i = 0; i < w->num; i++) {
w->revents[i] = poll_fds[n_poll_fds + i].revents;
diff --git a/util/qsp.c b/util/qsp.c
index 2fe3764906..6b783e2e7f 100644
--- a/util/qsp.c
+++ b/util/qsp.c
@@ -124,7 +124,7 @@ static const char * const qsp_typenames[] = {
[QSP_CONDVAR] = "condvar",
};
-QemuMutexLockFunc qemu_bql_mutex_lock_func = qemu_mutex_lock_impl;
+QemuMutexLockFunc bql_mutex_lock_func = qemu_mutex_lock_impl;
QemuMutexLockFunc qemu_mutex_lock_func = qemu_mutex_lock_impl;
QemuMutexTrylockFunc qemu_mutex_trylock_func = qemu_mutex_trylock_impl;
QemuRecMutexLockFunc qemu_rec_mutex_lock_func = qemu_rec_mutex_lock_impl;
@@ -439,7 +439,7 @@ void qsp_enable(void)
{
qatomic_set(&qemu_mutex_lock_func, qsp_mutex_lock);
qatomic_set(&qemu_mutex_trylock_func, qsp_mutex_trylock);
- qatomic_set(&qemu_bql_mutex_lock_func, qsp_bql_mutex_lock);
+ qatomic_set(&bql_mutex_lock_func, qsp_bql_mutex_lock);
qatomic_set(&qemu_rec_mutex_lock_func, qsp_rec_mutex_lock);
qatomic_set(&qemu_rec_mutex_trylock_func, qsp_rec_mutex_trylock);
qatomic_set(&qemu_cond_wait_func, qsp_cond_wait);
@@ -450,7 +450,7 @@ void qsp_disable(void)
{
qatomic_set(&qemu_mutex_lock_func, qemu_mutex_lock_impl);
qatomic_set(&qemu_mutex_trylock_func, qemu_mutex_trylock_impl);
- qatomic_set(&qemu_bql_mutex_lock_func, qemu_mutex_lock_impl);
+ qatomic_set(&bql_mutex_lock_func, qemu_mutex_lock_impl);
qatomic_set(&qemu_rec_mutex_lock_func, qemu_rec_mutex_lock_impl);
qatomic_set(&qemu_rec_mutex_trylock_func, qemu_rec_mutex_trylock_impl);
qatomic_set(&qemu_cond_wait_func, qemu_cond_wait_impl);
diff --git a/util/rcu.c b/util/rcu.c
index e587bcc483..bb7f633b5c 100644
--- a/util/rcu.c
+++ b/util/rcu.c
@@ -283,24 +283,24 @@ static void *call_rcu_thread(void *opaque)
qatomic_sub(&rcu_call_count, n);
synchronize_rcu();
- qemu_mutex_lock_iothread();
+ bql_lock();
while (n > 0) {
node = try_dequeue();
while (!node) {
- qemu_mutex_unlock_iothread();
+ bql_unlock();
qemu_event_reset(&rcu_call_ready_event);
node = try_dequeue();
if (!node) {
qemu_event_wait(&rcu_call_ready_event);
node = try_dequeue();
}
- qemu_mutex_lock_iothread();
+ bql_lock();
}
n--;
node->func(node);
}
- qemu_mutex_unlock_iothread();
+ bql_unlock();
}
abort();
}
@@ -337,13 +337,13 @@ static void drain_rcu_callback(struct rcu_head *node)
void drain_call_rcu(void)
{
struct rcu_drain rcu_drain;
- bool locked = qemu_mutex_iothread_locked();
+ bool locked = bql_locked();
memset(&rcu_drain, 0, sizeof(struct rcu_drain));
qemu_event_init(&rcu_drain.drain_complete_event, false);
if (locked) {
- qemu_mutex_unlock_iothread();
+ bql_unlock();
}
@@ -365,7 +365,7 @@ void drain_call_rcu(void)
qatomic_dec(&in_drain_call_rcu);
if (locked) {
- qemu_mutex_lock_iothread();
+ bql_lock();
}
}