[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 10/35] enable tail call optimization of qemu_co_mutex_lock
From: |
Paolo Bonzini |
Subject: |
[PATCH 10/35] enable tail call optimization of qemu_co_mutex_lock |
Date: |
Thu, 10 Mar 2022 13:43:48 +0100 |
Make qemu_co_mutex_lock_slowpath a tail call, so that qemu_co_mutex_lock
does not need to build a stack frame of its own.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
util/qemu-coroutine-lock.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/util/qemu-coroutine-lock.c b/util/qemu-coroutine-lock.c
index d6c0565ba5..048cfcea71 100644
--- a/util/qemu-coroutine-lock.c
+++ b/util/qemu-coroutine-lock.c
@@ -231,6 +231,8 @@ static void coroutine_fn
qemu_co_mutex_lock_slowpath(AioContext *ctx,
qemu_coroutine_yield();
trace_qemu_co_mutex_lock_return(mutex, self);
+ mutex->holder = self;
+ self->locks_held++;
}
void coroutine_fn qemu_co_mutex_lock(CoMutex *mutex)
@@ -266,11 +268,11 @@ retry_fast_path:
/* Uncontended. */
trace_qemu_co_mutex_lock_uncontended(mutex, self);
mutex->ctx = ctx;
+ mutex->holder = self;
+ self->locks_held++;
} else {
qemu_co_mutex_lock_slowpath(ctx, mutex);
}
- mutex->holder = self;
- self->locks_held++;
}
void coroutine_fn qemu_co_mutex_unlock(CoMutex *mutex)
--
2.35.1
- [PATCH 03/35] coroutine: introduce QemuCoLockable, (continued)
- [PATCH 03/35] coroutine: introduce QemuCoLockable, Paolo Bonzini, 2022/03/10
- [PATCH 07/35] coroutine: introduce the "stackless coroutine" backend, Paolo Bonzini, 2022/03/10
- [PATCH 16/35] /basic/entered, Paolo Bonzini, 2022/03/10
- [PATCH 17/35] /basic/in_coroutine, Paolo Bonzini, 2022/03/10
- [PATCH 04/35] coroutine: introduce coroutine_only_fn, Paolo Bonzini, 2022/03/10
- [PATCH 06/35] disable some code, Paolo Bonzini, 2022/03/10
- [PATCH 21/35] /perf/yield, Paolo Bonzini, 2022/03/10
- [PATCH 26/35] convert qemu_co_mutex_lock_slowpath to magic macros, Paolo Bonzini, 2022/03/10
- [PATCH 11/35] convert CoMutex to stackless coroutines, Paolo Bonzini, 2022/03/10
- [PATCH 13/35] /basic/yield, Paolo Bonzini, 2022/03/10
- [PATCH 10/35] enable tail call optimization of qemu_co_mutex_lock,
Paolo Bonzini <=
- [PATCH 20/35] /perf/nesting, Paolo Bonzini, 2022/03/10
- [PATCH 18/35] /basic/order, Paolo Bonzini, 2022/03/10
- [PATCH 27/35] /locking/co-mutex/lockable, Paolo Bonzini, 2022/03/10
- [PATCH 23/35] /perf/cost, Paolo Bonzini, 2022/03/10
- [PATCH 12/35] define magic macros for stackless coroutines, Paolo Bonzini, 2022/03/10
- [PATCH 15/35] /basic/self, Paolo Bonzini, 2022/03/10
- [PATCH 19/35] /perf/lifecycle, Paolo Bonzini, 2022/03/10
- [PATCH 22/35] /perf/function-call, Paolo Bonzini, 2022/03/10
- [PATCH 24/35] /basic/no-dangling-access, Paolo Bonzini, 2022/03/10
- [PATCH 25/35] /locking/co-mutex, Paolo Bonzini, 2022/03/10