No functionnal changes. Prepare the field for future fixes.
Remove memset(.., 0, ...) that is useless on a static array
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
---
linux-user/signal.c | 37 ++++++++++++++++++++++---------------
1 file changed, 22 insertions(+), 15 deletions(-)
diff --git a/linux-user/signal.c b/linux-user/signal.c
index 5ca6d62b15d3..f42a2e1a82a5 100644
--- a/linux-user/signal.c
+++ b/linux-user/signal.c
@@ -66,12 +66,6 @@ static uint8_t host_to_target_signal_table[_NSIG] = {
[SIGPWR] = TARGET_SIGPWR,
[SIGSYS] = TARGET_SIGSYS,
/* next signals stay the same */
- /* Nasty hack: Reverse SIGRTMIN and SIGRTMAX to avoid overlap with
- host libpthread signals. This assumes no one actually uses SIGRTMAX :-/
- To fix this properly we need to do manual signal delivery multiplexed
- over a single host signal. */
- [__SIGRTMIN] = __SIGRTMAX,
- [__SIGRTMAX] = __SIGRTMIN,
};
static uint8_t target_to_host_signal_table[_NSIG];
@@ -480,13 +474,18 @@ static int core_dump_signal(int sig)
}
}
-void signal_init(void)
+static void signal_table_init(void)
{
- TaskState *ts = (TaskState *)thread_cpu->opaque;
- struct sigaction act;
- struct sigaction oact;
int i, j;
- int host_sig;
+
+ /*
+ * Nasty hack: Reverse SIGRTMIN and SIGRTMAX to avoid overlap with
+ * host libpthread signals. This assumes no one actually uses SIGRTMAX :-/
+ * To fix this properly we need to do manual signal delivery multiplexed
+ * over a single host signal.
+ */
+ host_to_target_signal_table[__SIGRTMIN] = __SIGRTMAX;
+ host_to_target_signal_table[__SIGRTMAX] = __SIGRTMIN;
/* generate signal conversion tables */
for(i = 1; i < _NSIG; i++) {
@@ -497,14 +496,22 @@ void signal_init(void)
j = host_to_target_signal_table[i];
target_to_host_signal_table[j] = i;
}
+}
+
+void signal_init(void)
+{
+ TaskState *ts = (TaskState *)thread_cpu->opaque;
+ struct sigaction act;
+ struct sigaction oact;
+ int i;
+ int host_sig;
+
+ /* initialize signal conversion tables */
+ signal_table_init();
/* Set the signal mask from the host mask. */
sigprocmask(0, 0, &ts->signal_mask);
- /* set all host signal handlers. ALL signals are blocked during
- the handlers to serialize them. */
- memset(sigact_table, 0, sizeof(sigact_table));
-
sigfillset(&act.sa_mask);
act.sa_flags = SA_SIGINFO;
act.sa_sigaction = host_signal_handler;
--
2.24.1
> -----Original Message-----
> From: Laurent Vivier <laurent@vivier.eu>
> Sent: Saturday, February 1, 2020 6:28 AM
> To: qemu-devel@nongnu.org
> Cc: Josh Kunz <jkz@google.com>; milos.stojanovic@rt-rk.com; Matus Kysel
> <mkysel@tachyum.com>; Aleksandar Markovic <aleksandar.markovic@rt-
> rk.com>; Marlies Ruck <marlies.ruck@gmail.com>; Laurent Vivier
> <laurent@vivier.eu>; Peter Maydell <peter.maydell@linaro.org>; Taylor
> Simpson <tsimpson@quicinc.com>; Riku Voipio <riku.voipio@iki.fi>
> Subject: [PATCH 2/4] linux-user: cleanup signal.c
>
> -------------------------------------------------------------------------
> CAUTION: This email originated from outside of the organization.
> -------------------------------------------------------------------------
>
> No functionnal changes. Prepare the field for future fixes.
Spelling error
>
> Remove memset(.., 0, ...) that is useless on a static array
>
> Signed-off-by: Laurent Vivier <laurent@vivier.eu>
> ---
> linux-user/signal.c | 37 ++++++++++++++++++++++---------------
> 1 file changed, 22 insertions(+), 15 deletions(-)
>
> diff --git a/linux-user/signal.c b/linux-user/signal.c index
> 5ca6d62b15d3..f42a2e1a82a5 100644
> --- a/linux-user/signal.c
> +++ b/linux-user/signal.c
> @@ -66,12 +66,6 @@ static uint8_t host_to_target_signal_table[_NSIG] = {
> [SIGPWR] = TARGET_SIGPWR,
> [SIGSYS] = TARGET_SIGSYS,
> /* next signals stay the same */
> - /* Nasty hack: Reverse SIGRTMIN and SIGRTMAX to avoid overlap with
> - host libpthread signals. This assumes no one actually uses SIGRTMAX :-/
> - To fix this properly we need to do manual signal delivery multiplexed
> - over a single host signal. */
> - [__SIGRTMIN] = __SIGRTMAX,
> - [__SIGRTMAX] = __SIGRTMIN,
> };
> static uint8_t target_to_host_signal_table[_NSIG];
>
> @@ -480,13 +474,18 @@ static int core_dump_signal(int sig)
> }
> }
>
> -void signal_init(void)
> +static void signal_table_init(void)
> {
> - TaskState *ts = (TaskState *)thread_cpu->opaque;
> - struct sigaction act;
> - struct sigaction oact;
> int i, j;
> - int host_sig;
> +
> + /*
> + * Nasty hack: Reverse SIGRTMIN and SIGRTMAX to avoid overlap with
> + * host libpthread signals. This assumes no one actually uses SIGRTMAX :-
> /
> + * To fix this properly we need to do manual signal delivery multiplexed
> + * over a single host signal.
> + */
> + host_to_target_signal_table[__SIGRTMIN] = __SIGRTMAX;
> + host_to_target_signal_table[__SIGRTMAX] = __SIGRTMIN;
>
> /* generate signal conversion tables */
> for(i = 1; i < _NSIG; i++) {
> @@ -497,14 +496,22 @@ void signal_init(void)
> j = host_to_target_signal_table[i];
Since you are cleaning up this code, let's give this a more descriptive name - target_sig would be consistent with host_sig used elsewhere.
> target_to_host_signal_table[j] = i;
> }
> +}
> +
> +void signal_init(void)
> +{
> + TaskState *ts = (TaskState *)thread_cpu->opaque;
> + struct sigaction act;
> + struct sigaction oact;
> + int i;
> + int host_sig;
> +
> + /* initialize signal conversion tables */
> + signal_table_init();
>
> /* Set the signal mask from the host mask. */
> sigprocmask(0, 0, &ts->signal_mask);
>
> - /* set all host signal handlers. ALL signals are blocked during
> - the handlers to serialize them. */
> - memset(sigact_table, 0, sizeof(sigact_table));
> -
> sigfillset(&act.sa_mask);
> act.sa_flags = SA_SIGINFO;
> act.sa_sigaction = host_signal_handler;
> --
> 2.24.1
>
Le 03/02/2020 à 23:58, Taylor Simpson a écrit :
>
>
>> -----Original Message-----
>> From: Laurent Vivier <laurent@vivier.eu>
>> Sent: Saturday, February 1, 2020 6:28 AM
>> To: qemu-devel@nongnu.org
>> Cc: Josh Kunz <jkz@google.com>; milos.stojanovic@rt-rk.com; Matus Kysel
>> <mkysel@tachyum.com>; Aleksandar Markovic <aleksandar.markovic@rt-
>> rk.com>; Marlies Ruck <marlies.ruck@gmail.com>; Laurent Vivier
>> <laurent@vivier.eu>; Peter Maydell <peter.maydell@linaro.org>; Taylor
>> Simpson <tsimpson@quicinc.com>; Riku Voipio <riku.voipio@iki.fi>
>> Subject: [PATCH 2/4] linux-user: cleanup signal.c
>>
>> -------------------------------------------------------------------------
>> CAUTION: This email originated from outside of the organization.
>> -------------------------------------------------------------------------
>>
>> No functionnal changes. Prepare the field for future fixes.
>
>
> Spelling error
Sorry, french word. Will be changed by "functional"
>
>>
>> Remove memset(.., 0, ...) that is useless on a static array
>>
>> Signed-off-by: Laurent Vivier <laurent@vivier.eu>
>> ---
>> linux-user/signal.c | 37 ++++++++++++++++++++++---------------
>> 1 file changed, 22 insertions(+), 15 deletions(-)
>>
>> diff --git a/linux-user/signal.c b/linux-user/signal.c index
>> 5ca6d62b15d3..f42a2e1a82a5 100644
>> --- a/linux-user/signal.c
>> +++ b/linux-user/signal.c
>> @@ -66,12 +66,6 @@ static uint8_t host_to_target_signal_table[_NSIG] = {
>> [SIGPWR] = TARGET_SIGPWR,
>> [SIGSYS] = TARGET_SIGSYS,
>> /* next signals stay the same */
>> - /* Nasty hack: Reverse SIGRTMIN and SIGRTMAX to avoid overlap with
>> - host libpthread signals. This assumes no one actually uses SIGRTMAX :-/
>> - To fix this properly we need to do manual signal delivery multiplexed
>> - over a single host signal. */
>> - [__SIGRTMIN] = __SIGRTMAX,
>> - [__SIGRTMAX] = __SIGRTMIN,
>> };
>> static uint8_t target_to_host_signal_table[_NSIG];
>>
>> @@ -480,13 +474,18 @@ static int core_dump_signal(int sig)
>> }
>> }
>>
>> -void signal_init(void)
>> +static void signal_table_init(void)
>> {
>> - TaskState *ts = (TaskState *)thread_cpu->opaque;
>> - struct sigaction act;
>> - struct sigaction oact;
>> int i, j;
>> - int host_sig;
>> +
>> + /*
>> + * Nasty hack: Reverse SIGRTMIN and SIGRTMAX to avoid overlap with
>> + * host libpthread signals. This assumes no one actually uses SIGRTMAX :-
>> /
>> + * To fix this properly we need to do manual signal delivery multiplexed
>> + * over a single host signal.
>> + */
>> + host_to_target_signal_table[__SIGRTMIN] = __SIGRTMAX;
>> + host_to_target_signal_table[__SIGRTMAX] = __SIGRTMIN;
>>
>> /* generate signal conversion tables */
>> for(i = 1; i < _NSIG; i++) {
>> @@ -497,14 +496,22 @@ void signal_init(void)
>> j = host_to_target_signal_table[i];
>
> Since you are cleaning up this code, let's give this a more descriptive name - target_sig would be consistent with host_sig used elsewhere.
I agree.
Thanks,
Laurent
© 2016 - 2025 Red Hat, Inc.