Changeset View
Changeset View
Standalone View
Standalone View
sys/compat/linux/linux_signal.c
Show All 25 Lines | |||||
* SUCH DAMAGE. | * SUCH DAMAGE. | ||||
*/ | */ | ||||
#include <sys/cdefs.h> | #include <sys/cdefs.h> | ||||
__FBSDID("$FreeBSD$"); | __FBSDID("$FreeBSD$"); | ||||
#include <sys/param.h> | #include <sys/param.h> | ||||
#include <sys/systm.h> | #include <sys/systm.h> | ||||
#include <sys/ktr.h> | |||||
#include <sys/lock.h> | #include <sys/lock.h> | ||||
#include <sys/mutex.h> | #include <sys/mutex.h> | ||||
#include <sys/sx.h> | #include <sys/sx.h> | ||||
#include <sys/proc.h> | #include <sys/proc.h> | ||||
#include <sys/signalvar.h> | #include <sys/signalvar.h> | ||||
#include <sys/syscallsubr.h> | #include <sys/syscallsubr.h> | ||||
#include <sys/sysproto.h> | #include <sys/sysproto.h> | ||||
▲ Show 20 Lines • Show All 135 Lines • ▼ Show 20 Lines | linux_do_sigaction(struct thread *td, int linux_sig, l_sigaction_t *linux_nsa, | ||||
error = kern_sigaction(td, sig, nsa, osa, 0); | error = kern_sigaction(td, sig, nsa, osa, 0); | ||||
if (error) | if (error) | ||||
return (error); | return (error); | ||||
if (linux_osa != NULL) | if (linux_osa != NULL) | ||||
bsd_to_linux_sigaction(osa, linux_osa); | bsd_to_linux_sigaction(osa, linux_osa); | ||||
return (0); | return (0); | ||||
} | |||||
int | |||||
linux_sigaltstack(struct thread *td, struct linux_sigaltstack_args *uap) | |||||
{ | |||||
stack_t ss, oss; | |||||
l_stack_t lss; | |||||
int error; | |||||
memset(&lss, 0, sizeof(lss)); | |||||
LINUX_CTR2(sigaltstack, "%p, %p", uap->uss, uap->uoss); | |||||
if (uap->uss != NULL) { | |||||
error = copyin(uap->uss, &lss, sizeof(l_stack_t)); | |||||
if (error != 0) | |||||
dchagin: please, error != 0 | |||||
return (error); | |||||
ss.ss_sp = PTRIN(lss.ss_sp); | |||||
ss.ss_size = lss.ss_size; | |||||
ss.ss_flags = linux_to_bsd_sigaltstack(lss.ss_flags); | |||||
} | |||||
error = kern_sigaltstack(td, (uap->uss != NULL) ? &ss : NULL, | |||||
(uap->uoss != NULL) ? &oss : NULL); | |||||
if (error == 0 && uap->uoss != NULL) { | |||||
Not Done Inline Actionsalso, error == 0 dchagin: also, error == 0 | |||||
lss.ss_sp = PTROUT(oss.ss_sp); | |||||
lss.ss_size = oss.ss_size; | |||||
lss.ss_flags = bsd_to_linux_sigaltstack(oss.ss_flags); | |||||
error = copyout(&lss, uap->uoss, sizeof(l_stack_t)); | |||||
} | |||||
return (error); | |||||
} | } | ||||
#if defined(__i386__) || (defined(__amd64__) && defined(COMPAT_LINUX32)) | #if defined(__i386__) || (defined(__amd64__) && defined(COMPAT_LINUX32)) | ||||
int | int | ||||
linux_signal(struct thread *td, struct linux_signal_args *args) | linux_signal(struct thread *td, struct linux_signal_args *args) | ||||
{ | { | ||||
l_sigaction_t nsa, osa; | l_sigaction_t nsa, osa; | ||||
int error; | int error; | ||||
▲ Show 20 Lines • Show All 619 Lines • Show Last 20 Lines |
please, error != 0