[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] Re: [PATCH v2 upstream 19/22] move blocking of signals to q
From: |
Jan Kiszka |
Subject: |
[Qemu-devel] Re: [PATCH v2 upstream 19/22] move blocking of signals to qemu_signalfd_init |
Date: |
Sun, 27 Feb 2011 10:41:44 +0100 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.8.1.12) Gecko/20080226 SUSE/2.0.0.12-1.1 Thunderbird/2.0.0.12 Mnenhy/0.7.5.666 |
On 2011-02-26 16:40, Paolo Bonzini wrote:
> Signed-off-by: Paolo Bonzini <address@hidden>
> ---
> cpus.c | 87 ++++++++++++++++++++++++++-------------------------------------
> 1 files changed, 36 insertions(+), 51 deletions(-)
>
> diff --git a/cpus.c b/cpus.c
> index 32e9352..8c440f1 100644
> --- a/cpus.c
> +++ b/cpus.c
> @@ -346,11 +346,37 @@ static void sigfd_handler(void *opaque)
> }
> }
>
> -static int qemu_signalfd_init(sigset_t mask)
> +static int qemu_signalfd_init(void)
> {
> int sigfd;
> + sigset_t set;
>
> - sigfd = qemu_signalfd(&mask);
> +#ifdef CONFIG_IOTHREAD
> + /* SIGUSR2 used by posix-aio-compat.c */
> + sigemptyset(&set);
> + sigaddset(&set, SIGUSR2);
> + pthread_sigmask(SIG_UNBLOCK, &set, NULL);
Didn't you want to rename the function for the sake of non-signalfd
blocks like above?
> +
> + sigemptyset(&set);
> + sigaddset(&set, SIGIO);
> + sigaddset(&set, SIGALRM);
> + sigaddset(&set, SIG_IPI);
> + sigaddset(&set, SIGBUS);
> + pthread_sigmask(SIG_BLOCK, &set, NULL);
> +#else
> + sigemptyset(&set);
This line is shared and can be moved out of the #ifdef.
> + sigaddset(&set, SIGBUS);
> + if (kvm_enabled()) {
> + /*
> + * We need to process timer signals synchronously to avoid a race
> + * between exit_request check and KVM vcpu entry.
> + */
> + sigaddset(&set, SIGIO);
> + sigaddset(&set, SIGALRM);
> + }
> +#endif
> +
> + sigfd = qemu_signalfd(&set);
> if (sigfd == -1) {
> fprintf(stderr, "failed to create signalfd\n");
> return -errno;
> @@ -438,6 +464,12 @@ static void qemu_event_increment(void)
> static void qemu_kvm_eat_signals(CPUState *env)
> {
> }
> +
> +static int qemu_signalfd_init(void)
> +{
> + return 0;
> +}
> +
> #endif /* _WIN32 */
>
> #ifndef CONFIG_IOTHREAD
> @@ -471,39 +503,14 @@ static void qemu_kvm_init_cpu_signals(CPUState *env)
> #endif
> }
>
> -#ifndef _WIN32
> -static sigset_t block_synchronous_signals(void)
> -{
> - sigset_t set;
> -
> - sigemptyset(&set);
> - sigaddset(&set, SIGBUS);
> - if (kvm_enabled()) {
> - /*
> - * We need to process timer signals synchronously to avoid a race
> - * between exit_request check and KVM vcpu entry.
> - */
> - sigaddset(&set, SIGIO);
> - sigaddset(&set, SIGALRM);
> - }
> -
> - return set;
> -}
> -#endif
> -
> int qemu_init_main_loop(void)
> {
> -#ifndef _WIN32
> - sigset_t blocked_signals;
> int ret;
>
> - blocked_signals = block_synchronous_signals();
> -
> - ret = qemu_signalfd_init(blocked_signals);
> + ret = qemu_signalfd_init();
> if (ret) {
> return ret;
> }
> -#endif
>
> qemu_init_sigbus();
>
> @@ -651,35 +658,13 @@ static void qemu_tcg_init_cpu_signals(void)
> pthread_sigmask(SIG_UNBLOCK, &set, NULL);
> }
>
> -static sigset_t block_io_signals(void)
> -{
> - sigset_t set;
> -
> - /* SIGUSR2 used by posix-aio-compat.c */
> - sigemptyset(&set);
> - sigaddset(&set, SIGUSR2);
> - pthread_sigmask(SIG_UNBLOCK, &set, NULL);
> -
> - sigemptyset(&set);
> - sigaddset(&set, SIGIO);
> - sigaddset(&set, SIGALRM);
> - sigaddset(&set, SIG_IPI);
> - sigaddset(&set, SIGBUS);
> - pthread_sigmask(SIG_BLOCK, &set, NULL);
> -
> - return set;
> -}
> -
> int qemu_init_main_loop(void)
> {
> int ret;
> - sigset_t blocked_signals;
>
> qemu_init_sigbus();
>
> - blocked_signals = block_io_signals();
> -
> - ret = qemu_signalfd_init(blocked_signals);
> + ret = qemu_signalfd_init();
> if (ret) {
> return ret;
> }
Beside the minor nits, this looks good.
Jan
signature.asc
Description: OpenPGP digital signature
- [Qemu-devel] [PATCH v2 upstream 09/22] target-sh4: move intr_at_halt out of cpu_halted(), (continued)
- [Qemu-devel] [PATCH v2 upstream 09/22] target-sh4: move intr_at_halt out of cpu_halted(), Paolo Bonzini, 2011/02/26
- [Qemu-devel] [PATCH v2 upstream 10/22] inline cpu_halted into sole caller, Paolo Bonzini, 2011/02/26
- [Qemu-devel] [PATCH v2 upstream 11/22] always qemu_cpu_kick after unhalting a cpu, Paolo Bonzini, 2011/02/26
- [Qemu-devel] [PATCH v2 upstream 12/22] exit round-robin vcpu loop if cpu->stopped is true, Paolo Bonzini, 2011/02/26
- [Qemu-devel] [PATCH v2 upstream 13/22] always signal pause_cond after stopping a VCPU, Paolo Bonzini, 2011/02/26
- [Qemu-devel] [PATCH v2 upstream 14/22] do not use timedwait on qemu_halt_cond, Paolo Bonzini, 2011/02/26
- [Qemu-devel] [PATCH v2 upstream 16/22] do not use timedwait on qemu_pause_cond, Paolo Bonzini, 2011/02/26
- [Qemu-devel] [PATCH v2 upstream 15/22] do not use timedwait on qemu_system_cond, Paolo Bonzini, 2011/02/26
- [Qemu-devel] [PATCH v2 upstream 17/22] do not use timedwait on qemu_cpu_cond, Paolo Bonzini, 2011/02/26
- [Qemu-devel] [PATCH v2 upstream 19/22] move blocking of signals to qemu_signalfd_init, Paolo Bonzini, 2011/02/26
- [Qemu-devel] Re: [PATCH v2 upstream 19/22] move blocking of signals to qemu_signalfd_init,
Jan Kiszka <=
- [Qemu-devel] [PATCH v2 upstream 18/22] iothread stops the vcpu thread via IPI, Paolo Bonzini, 2011/02/26
- [Qemu-devel] [PATCH v2 upstream 21/22] protect qemu_cpu_kick_self for Win32, Paolo Bonzini, 2011/02/26
- [Qemu-devel] [PATCH v2 upstream 20/22] provide dummy signal init functions for win32, Paolo Bonzini, 2011/02/26
- [Qemu-devel] [PATCH v2 upstream 22/22] add Win32 IPI service, Paolo Bonzini, 2011/02/26
- Re: [Qemu-devel] [PATCH v2 uq/master 00/22] Win32 iothread support, Blue Swirl, 2011/02/26
- [Qemu-devel] Re: [PATCH v2 uq/master 00/22] Win32 iothread support, Jan Kiszka, 2011/02/27