aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--linux-user/signal.c44
1 files changed, 21 insertions, 23 deletions
diff --git a/linux-user/signal.c b/linux-user/signal.c
index a9ac491af4..5f98c71e85 100644
--- a/linux-user/signal.c
+++ b/linux-user/signal.c
@@ -5765,29 +5765,6 @@ long do_rt_sigreturn(CPUArchState *env)
#endif
-static void handle_pending_signal(CPUArchState *cpu_env, int sig);
-
-void process_pending_signals(CPUArchState *cpu_env)
-{
- CPUState *cpu = ENV_GET_CPU(cpu_env);
- int sig;
- TaskState *ts = cpu->opaque;
-
- if (!ts->signal_pending)
- return;
-
- /* FIXME: This is not threadsafe. */
- for(sig = 1; sig <= TARGET_NSIG; sig++) {
- if (ts->sigtab[sig - 1].pending) {
- handle_pending_signal(cpu_env, sig);
- return;
- }
- }
- /* if no signal is pending, just return */
- ts->signal_pending = 0;
- return;
-}
-
static void handle_pending_signal(CPUArchState *cpu_env, int sig)
{
CPUState *cpu = ENV_GET_CPU(cpu_env);
@@ -5876,3 +5853,24 @@ static void handle_pending_signal(CPUArchState *cpu_env, int sig)
if (q != &k->info)
free_sigqueue(cpu_env, q);
}
+
+void process_pending_signals(CPUArchState *cpu_env)
+{
+ CPUState *cpu = ENV_GET_CPU(cpu_env);
+ int sig;
+ TaskState *ts = cpu->opaque;
+
+ if (!ts->signal_pending)
+ return;
+
+ /* FIXME: This is not threadsafe. */
+ for(sig = 1; sig <= TARGET_NSIG; sig++) {
+ if (ts->sigtab[sig - 1].pending) {
+ handle_pending_signal(cpu_env, sig);
+ return;
+ }
+ }
+ /* if no signal is pending, just return */
+ ts->signal_pending = 0;
+ return;
+}