[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 06/18] kvm: Refactor qemu_kvm_eat_signals
From: |
Jan Kiszka |
Subject: |
[Qemu-devel] [PATCH 06/18] kvm: Refactor qemu_kvm_eat_signals |
Date: |
Mon, 10 Jan 2011 09:31:59 +0100 |
From: Jan Kiszka <address@hidden>
We do not use the timeout, so drop its logic. As we always poll our
signals, we do not need to drop the global lock. Removing those calls
allows some further simplifications. Also fix the error processing of
sigpending at this chance.
Signed-off-by: Jan Kiszka <address@hidden>
---
cpus.c | 23 +++++++----------------
1 files changed, 7 insertions(+), 16 deletions(-)
diff --git a/cpus.c b/cpus.c
index bf0fb85..6da0f8f 100644
--- a/cpus.c
+++ b/cpus.c
@@ -617,31 +617,22 @@ static void sigbus_handler(int n, struct
qemu_signalfd_siginfo *siginfo,
}
}
-static void qemu_kvm_eat_signal(CPUState *env, int timeout)
+static void qemu_kvm_eat_signals(CPUState *env)
{
- struct timespec ts;
- int r, e;
+ struct timespec ts = { 0, 0 };
siginfo_t siginfo;
sigset_t waitset;
sigset_t chkset;
-
- ts.tv_sec = timeout / 1000;
- ts.tv_nsec = (timeout % 1000) * 1000000;
+ int r;
sigemptyset(&waitset);
sigaddset(&waitset, SIG_IPI);
sigaddset(&waitset, SIGBUS);
do {
- qemu_mutex_unlock(&qemu_global_mutex);
-
r = sigtimedwait(&waitset, &siginfo, &ts);
- e = errno;
-
- qemu_mutex_lock(&qemu_global_mutex);
-
- if (r == -1 && !(e == EAGAIN || e == EINTR)) {
- fprintf(stderr, "sigtimedwait: %s\n", strerror(e));
+ if (r == -1 && !(errno == EAGAIN || errno == EINTR)) {
+ perror("sigtimedwait");
exit(1);
}
@@ -657,7 +648,7 @@ static void qemu_kvm_eat_signal(CPUState *env, int timeout)
r = sigpending(&chkset);
if (r == -1) {
- fprintf(stderr, "sigpending: %s\n", strerror(e));
+ perror("sigpending");
exit(1);
}
} while (sigismember(&chkset, SIG_IPI) || sigismember(&chkset, SIGBUS));
@@ -668,7 +659,7 @@ static void qemu_kvm_wait_io_event(CPUState *env)
while (!cpu_has_work(env))
qemu_cond_timedwait(env->halt_cond, &qemu_global_mutex, 1000);
- qemu_kvm_eat_signal(env, 0);
+ qemu_kvm_eat_signals(env);
qemu_wait_io_event_common(env);
}
--
1.7.1
- [Qemu-devel] [PATCH 00/18] [uq/master] MCE & IO exit fixes, prepare for VCPU loop reuse, Jan Kiszka, 2011/01/10
- [Qemu-devel] [PATCH 03/18] kvm: Provide sigbus services arch-independently, Jan Kiszka, 2011/01/10
- [Qemu-devel] [PATCH 08/18] kvm: Handle kvm_init_vcpu errors, Jan Kiszka, 2011/01/10
- [Qemu-devel] [PATCH 04/18] Refactor signal setup functions in cpus.c, Jan Kiszka, 2011/01/10
- [Qemu-devel] [PATCH 06/18] kvm: Refactor qemu_kvm_eat_signals,
Jan Kiszka <=
- [Qemu-devel] [PATCH 09/18] Refactor kvm&tcg function names in cpus.c, Jan Kiszka, 2011/01/10
- [Qemu-devel] [PATCH 10/18] Fix a few coding style violations in cpus.c, Jan Kiszka, 2011/01/10
- [Qemu-devel] [PATCH 13/18] kvm: Unconditionally reenter kernel after IO exits, Jan Kiszka, 2011/01/10
- [Qemu-devel] [PATCH 15/18] kvm: Leave kvm_cpu_exec directly after KVM_EXIT_SHUTDOWN, Jan Kiszka, 2011/01/10
- [Qemu-devel] [PATCH 17/18] kvm: x86: Prepare VCPU loop for in-kernel irqchip, Jan Kiszka, 2011/01/10
- [Qemu-devel] [PATCH 02/18] kvm: Drop redundant kvm_enabled from kvm_cpu_thread_fn, Jan Kiszka, 2011/01/10
- [Qemu-devel] [PATCH 01/18] Revert "kvm: Drop return value of kvm_cpu_exec", Jan Kiszka, 2011/01/10
- [Qemu-devel] [PATCH 05/18] kvm: Set up signal mask also for !CONFIG_IOTHREAD, Jan Kiszka, 2011/01/10
- [Qemu-devel] [PATCH 11/18] Introduce VCPU self-signaling service, Jan Kiszka, 2011/01/10