mirror of https://gitlab.com/qemu-project/qemu
bsd-user/signal.c: Fill in queue_signal
Fill in queue signal implementation, as well as routines allocate and delete elements of the signal queue. Signed-off-by: Stacey Son <sson@FreeBSD.org> Signed-off-by: Kyle Evans <kevans@freebsd.org> Signed-off-by: Warner Losh <imp@bsdimp.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
3771454783
commit
38be620c95
|
@ -85,6 +85,11 @@ typedef struct TaskState {
|
||||||
struct bsd_binprm *bprm;
|
struct bsd_binprm *bprm;
|
||||||
struct image_info *info;
|
struct image_info *info;
|
||||||
|
|
||||||
|
struct emulated_sigtable sync_signal;
|
||||||
|
/*
|
||||||
|
* TODO: Since we block all signals while returning to the main CPU
|
||||||
|
* loop, this needn't be an array
|
||||||
|
*/
|
||||||
struct emulated_sigtable sigtab[TARGET_NSIG];
|
struct emulated_sigtable sigtab[TARGET_NSIG];
|
||||||
/*
|
/*
|
||||||
* Nonzero if process_pending_signals() needs to do something (either
|
* Nonzero if process_pending_signals() needs to do something (either
|
||||||
|
|
|
@ -255,7 +255,18 @@ static void QEMU_NORETURN dump_core_and_abort(int target_sig)
|
||||||
void queue_signal(CPUArchState *env, int sig, int si_type,
|
void queue_signal(CPUArchState *env, int sig, int si_type,
|
||||||
target_siginfo_t *info)
|
target_siginfo_t *info)
|
||||||
{
|
{
|
||||||
qemu_log_mask(LOG_UNIMP, "No signal queueing, dropping signal %d\n", sig);
|
CPUState *cpu = env_cpu(env);
|
||||||
|
TaskState *ts = cpu->opaque;
|
||||||
|
|
||||||
|
trace_user_queue_signal(env, sig);
|
||||||
|
|
||||||
|
info->si_code = deposit32(info->si_code, 24, 8, si_type);
|
||||||
|
|
||||||
|
ts->sync_signal.info = *info;
|
||||||
|
ts->sync_signal.pending = sig;
|
||||||
|
/* Signal that a new signal is pending. */
|
||||||
|
qatomic_set(&ts->signal_pending, 1);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int fatal_signal(int sig)
|
static int fatal_signal(int sig)
|
||||||
|
|
Loading…
Reference in New Issue