Message ID | 1308060336-608-1-git-send-email-cerbere@gmail.com |
---|---|
State | New |
Headers | show |
On 2011-06-14 16:05, Alexandre Raymond wrote: > Changes since v1: > - take pthread_sigmask() out of the ifdef as it is now common > to both parts. > > This fix effectively blocks, in the main thread, the signals handled > by signalfd or the compatibility signal thread. > > This way, such signals are received synchronously in the main thread > through sigfd_handler() instead of triggering the signal handler > directly, asynchronously. > > Signed-off-by: Alexandre Raymond <cerbere@gmail.com> > --- > cpus.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/cpus.c b/cpus.c > index 4ab76f0..18a1522 100644 > --- a/cpus.c > +++ b/cpus.c > @@ -399,7 +399,6 @@ static int qemu_signal_init(void) > sigaddset(&set, SIGALRM); > sigaddset(&set, SIG_IPI); > sigaddset(&set, SIGBUS); > - pthread_sigmask(SIG_BLOCK, &set, NULL); > #else > sigemptyset(&set); > sigaddset(&set, SIGBUS); > @@ -412,6 +411,7 @@ static int qemu_signal_init(void) > sigaddset(&set, SIGALRM); > } > #endif > + pthread_sigmask(SIG_BLOCK, &set, NULL); > > sigfd = qemu_signalfd(&set); > if (sigfd == -1) { Acked-by: Jan Kiszka <jan.kiszka@siemens.com> Thanks, Jan
ping? On Tue, Jun 14, 2011 at 12:47 PM, Jan Kiszka <jan.kiszka@siemens.com> wrote: > On 2011-06-14 16:05, Alexandre Raymond wrote: >> Changes since v1: >> - take pthread_sigmask() out of the ifdef as it is now common >> to both parts. >> >> This fix effectively blocks, in the main thread, the signals handled >> by signalfd or the compatibility signal thread. >> >> This way, such signals are received synchronously in the main thread >> through sigfd_handler() instead of triggering the signal handler >> directly, asynchronously. >> >> Signed-off-by: Alexandre Raymond <cerbere@gmail.com> >> --- >> cpus.c | 2 +- >> 1 files changed, 1 insertions(+), 1 deletions(-) >> >> diff --git a/cpus.c b/cpus.c >> index 4ab76f0..18a1522 100644 >> --- a/cpus.c >> +++ b/cpus.c >> @@ -399,7 +399,6 @@ static int qemu_signal_init(void) >> sigaddset(&set, SIGALRM); >> sigaddset(&set, SIG_IPI); >> sigaddset(&set, SIGBUS); >> - pthread_sigmask(SIG_BLOCK, &set, NULL); >> #else >> sigemptyset(&set); >> sigaddset(&set, SIGBUS); >> @@ -412,6 +411,7 @@ static int qemu_signal_init(void) >> sigaddset(&set, SIGALRM); >> } >> #endif >> + pthread_sigmask(SIG_BLOCK, &set, NULL); >> >> sigfd = qemu_signalfd(&set); >> if (sigfd == -1) { > > Acked-by: Jan Kiszka <jan.kiszka@siemens.com> > > Thanks, > Jan > > -- > Siemens AG, Corporate Technology, CT T DE IT 1 > Corporate Competence Center Embedded Linux >
Thanks, applied. On Sat, Jul 9, 2011 at 5:30 AM, Alexandre Raymond <cerbere@gmail.com> wrote: > ping? > > On Tue, Jun 14, 2011 at 12:47 PM, Jan Kiszka <jan.kiszka@siemens.com> wrote: >> On 2011-06-14 16:05, Alexandre Raymond wrote: >>> Changes since v1: >>> - take pthread_sigmask() out of the ifdef as it is now common >>> to both parts. >>> >>> This fix effectively blocks, in the main thread, the signals handled >>> by signalfd or the compatibility signal thread. >>> >>> This way, such signals are received synchronously in the main thread >>> through sigfd_handler() instead of triggering the signal handler >>> directly, asynchronously. >>> >>> Signed-off-by: Alexandre Raymond <cerbere@gmail.com> >>> --- >>> cpus.c | 2 +- >>> 1 files changed, 1 insertions(+), 1 deletions(-) >>> >>> diff --git a/cpus.c b/cpus.c >>> index 4ab76f0..18a1522 100644 >>> --- a/cpus.c >>> +++ b/cpus.c >>> @@ -399,7 +399,6 @@ static int qemu_signal_init(void) >>> sigaddset(&set, SIGALRM); >>> sigaddset(&set, SIG_IPI); >>> sigaddset(&set, SIGBUS); >>> - pthread_sigmask(SIG_BLOCK, &set, NULL); >>> #else >>> sigemptyset(&set); >>> sigaddset(&set, SIGBUS); >>> @@ -412,6 +411,7 @@ static int qemu_signal_init(void) >>> sigaddset(&set, SIGALRM); >>> } >>> #endif >>> + pthread_sigmask(SIG_BLOCK, &set, NULL); >>> >>> sigfd = qemu_signalfd(&set); >>> if (sigfd == -1) { >> >> Acked-by: Jan Kiszka <jan.kiszka@siemens.com> >> >> Thanks, >> Jan >> >> -- >> Siemens AG, Corporate Technology, CT T DE IT 1 >> Corporate Competence Center Embedded Linux >> > >
diff --git a/cpus.c b/cpus.c index 4ab76f0..18a1522 100644 --- a/cpus.c +++ b/cpus.c @@ -399,7 +399,6 @@ static int qemu_signal_init(void) sigaddset(&set, SIGALRM); sigaddset(&set, SIG_IPI); sigaddset(&set, SIGBUS); - pthread_sigmask(SIG_BLOCK, &set, NULL); #else sigemptyset(&set); sigaddset(&set, SIGBUS); @@ -412,6 +411,7 @@ static int qemu_signal_init(void) sigaddset(&set, SIGALRM); } #endif + pthread_sigmask(SIG_BLOCK, &set, NULL); sigfd = qemu_signalfd(&set); if (sigfd == -1) {
Changes since v1: - take pthread_sigmask() out of the ifdef as it is now common to both parts. This fix effectively blocks, in the main thread, the signals handled by signalfd or the compatibility signal thread. This way, such signals are received synchronously in the main thread through sigfd_handler() instead of triggering the signal handler directly, asynchronously. Signed-off-by: Alexandre Raymond <cerbere@gmail.com> --- cpus.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)