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 --- |