Changeset View
Changeset View
Standalone View
Standalone View
sys/compat/linux/linux_signal.c
Show First 20 Lines • Show All 178 Lines • ▼ Show 20 Lines | 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) | |||||
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 && 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; | ||||
nsa.lsa_handler = args->handler; | nsa.lsa_handler = args->handler; | ||||
▲ Show 20 Lines • Show All 599 Lines • Show Last 20 Lines |
please, error != 0