signal.c (ddc3e74d9c5ac76562ce8abe9e5908c4ff7cb8f0) signal.c (02fb28e8effe5090ded4d36ea1c947a615099c26)
1/*
2 * Emulation of Linux signals
3 *
4 * Copyright (c) 2003 Fabrice Bellard
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or

--- 828 unchanged lines hidden (view full) ---

837 if (uoss) {
838 unlock_user_struct(uoss, uoss_addr, 0);
839 }
840 return ret;
841}
842
843/* do_sigaction() return target values and host errnos */
844int do_sigaction(int sig, const struct target_sigaction *act,
1/*
2 * Emulation of Linux signals
3 *
4 * Copyright (c) 2003 Fabrice Bellard
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or

--- 828 unchanged lines hidden (view full) ---

837 if (uoss) {
838 unlock_user_struct(uoss, uoss_addr, 0);
839 }
840 return ret;
841}
842
843/* do_sigaction() return target values and host errnos */
844int do_sigaction(int sig, const struct target_sigaction *act,
845 struct target_sigaction *oact)
845 struct target_sigaction *oact, abi_ulong ka_restorer)
846{
847 struct target_sigaction *k;
848 struct sigaction act1;
849 int host_sig;
850 int ret = 0;
851
852 trace_signal_do_sigaction_guest(sig, TARGET_NSIG);
853

--- 17 unchanged lines hidden (view full) ---

871 }
872 if (act) {
873 /* FIXME: This is not threadsafe. */
874 __get_user(k->_sa_handler, &act->_sa_handler);
875 __get_user(k->sa_flags, &act->sa_flags);
876#ifdef TARGET_ARCH_HAS_SA_RESTORER
877 __get_user(k->sa_restorer, &act->sa_restorer);
878#endif
846{
847 struct target_sigaction *k;
848 struct sigaction act1;
849 int host_sig;
850 int ret = 0;
851
852 trace_signal_do_sigaction_guest(sig, TARGET_NSIG);
853

--- 17 unchanged lines hidden (view full) ---

871 }
872 if (act) {
873 /* FIXME: This is not threadsafe. */
874 __get_user(k->_sa_handler, &act->_sa_handler);
875 __get_user(k->sa_flags, &act->sa_flags);
876#ifdef TARGET_ARCH_HAS_SA_RESTORER
877 __get_user(k->sa_restorer, &act->sa_restorer);
878#endif
879#ifdef TARGET_ARCH_HAS_KA_RESTORER
880 k->ka_restorer = ka_restorer;
881#endif
879 /* To be swapped in target_to_host_sigset. */
880 k->sa_mask = act->sa_mask;
881
882 /* we update the host linux signal state */
883 host_sig = target_to_host_signal(sig);
884 trace_signal_do_sigaction_host(host_sig, TARGET_NSIG);
885 if (host_sig > SIGRTMAX) {
886 /* we don't have enough host signals to map all target signals */

--- 185 unchanged lines hidden ---
882 /* To be swapped in target_to_host_sigset. */
883 k->sa_mask = act->sa_mask;
884
885 /* we update the host linux signal state */
886 host_sig = target_to_host_signal(sig);
887 trace_signal_do_sigaction_host(host_sig, TARGET_NSIG);
888 if (host_sig > SIGRTMAX) {
889 /* we don't have enough host signals to map all target signals */

--- 185 unchanged lines hidden ---