[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 14/24] kvm: Refactor qemu_kvm_eat_signals
From: |
Jan Kiszka |
Subject: |
[Qemu-devel] [PATCH v2 14/24] kvm: Refactor qemu_kvm_eat_signals |
Date: |
Tue, 1 Feb 2011 22:15:54 +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>
Reviewed-by: Paolo Bonzini <address@hidden>
---
cpus.c | 23 +++++++----------------
1 files changed, 7 insertions(+), 16 deletions(-)
diff --git a/cpus.c b/cpus.c
index a33e470..04138ba 100644
--- a/cpus.c
+++ b/cpus.c
@@ -648,31 +648,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);
}
@@ -688,7 +679,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));
@@ -699,7 +690,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 v2 07/24] Flatten the main loop, (continued)
- [Qemu-devel] [PATCH v2 07/24] Flatten the main loop, Jan Kiszka, 2011/02/01
- [Qemu-devel] [PATCH v2 13/24] kvm: Set up signal mask also for !CONFIG_IOTHREAD, Jan Kiszka, 2011/02/01
- [Qemu-devel] Re: [PATCH v2 13/24] kvm: Set up signal mask also for !CONFIG_IOTHREAD, Avi Kivity, 2011/02/28
- [Qemu-devel] Re: [PATCH v2 13/24] kvm: Set up signal mask also for !CONFIG_IOTHREAD, Jan Kiszka, 2011/02/28
- [Qemu-devel] Re: [PATCH v2 13/24] kvm: Set up signal mask also for !CONFIG_IOTHREAD, Avi Kivity, 2011/02/28
- [Qemu-devel] Re: [PATCH v2 13/24] kvm: Set up signal mask also for !CONFIG_IOTHREAD, Avi Kivity, 2011/02/28
- [Qemu-devel] Re: [PATCH v2 13/24] kvm: Set up signal mask also for !CONFIG_IOTHREAD, Jan Kiszka, 2011/02/28
- [Qemu-devel] Re: [PATCH v2 13/24] kvm: Set up signal mask also for !CONFIG_IOTHREAD, Avi Kivity, 2011/02/28
[Qemu-devel] [PATCH v2 14/24] kvm: Refactor qemu_kvm_eat_signals,
Jan Kiszka <=
[Qemu-devel] [PATCH v2 16/24] Set up signalfd under !CONFIG_IOTHREAD, Jan Kiszka, 2011/02/01
[Qemu-devel] [PATCH v2 20/24] kvm: Unconditionally reenter kernel after IO exits, Jan Kiszka, 2011/02/01
[Qemu-devel] [PATCH v2 08/24] kvm: Report proper error on GET_VCPU_MMAP_SIZE failures, Jan Kiszka, 2011/02/01
[Qemu-devel] [PATCH v2 19/24] Introduce VCPU self-signaling service, Jan Kiszka, 2011/02/01
[Qemu-devel] [PATCH v2 05/24] Trigger exit from cpu_exec_all on pending IO events, Jan Kiszka, 2011/02/01
[Qemu-devel] [PATCH v2 02/24] Prevent abortion on multiple VCPU kicks, Jan Kiszka, 2011/02/01
[Qemu-devel] [PATCH v2 06/24] Leave inner main_loop faster on pending requests, Jan Kiszka, 2011/02/01
[Qemu-devel] [PATCH v2 10/24] kvm: Handle kvm_init_vcpu errors, Jan Kiszka, 2011/02/01
[Qemu-devel] [PATCH v2 09/24] kvm: Drop redundant kvm_enabled from kvm_cpu_thread_fn, Jan Kiszka, 2011/02/01
[Qemu-devel] [PATCH v2 24/24] Fix a few coding style violations in cpus.c, Jan Kiszka, 2011/02/01