int ultrix_sys_sigsuspend(struct lwp *l, const struct ultrix_sys_sigsuspend_args *uap, register_t *retval) { int mask = SCARG(uap, mask); sigset_t ss; ss.__bits[0] = mask; ss.__bits[1] = 0; ss.__bits[2] = 0; ss.__bits[3] = 0; return sigsuspend1(l, &ss); }
int compat_13_sys_sigsuspend(struct lwp *l, const struct compat_13_sys_sigsuspend_args *uap, register_t *retval) { /* { syscallarg(sigset13_t) mask; } */ sigset13_t ess; sigset_t bss; ess = SCARG(uap, mask); native_sigset13_to_sigset(&ess, &bss); return (sigsuspend1(l, &bss)); }
int linux_sys_sigsuspend(struct lwp *l, const struct linux_sys_sigsuspend_args *uap, register_t *retval) { /* { syscallarg(void *) restart; syscallarg(int) oldmask; syscallarg(int) mask; } */ linux_old_sigset_t lss; sigset_t bss; lss = SCARG(uap, mask); linux_old_to_native_sigset(&bss, &lss); return (sigsuspend1(l, &bss)); }
/* * Suspend process until signal, providing mask to be set in the meantime. * Note nonstandard calling convention: libc stub passes mask, not pointer, * to save a copyin. */ int sys___sigsuspend14(struct lwp *l, const struct sys___sigsuspend14_args *uap, register_t *retval) { /* { syscallarg(const sigset_t *) set; } */ sigset_t ss; int error; if (SCARG(uap, set)) { error = copyin(SCARG(uap, set), &ss, sizeof(ss)); if (error) return error; } return sigsuspend1(l, SCARG(uap, set) ? &ss : 0); }
int linux32_sys_rt_sigsuspend(struct lwp *l, const struct linux32_sys_rt_sigsuspend_args *uap, register_t *retval) { /* { syscallarg(linux32_sigsetp_t) unewset; syscallarg(netbsd32_size_t) sigsetsize; } */ linux32_sigset_t lss; sigset_t bss; int error; if (SCARG(uap, sigsetsize) != sizeof(linux32_sigset_t)) return EINVAL; if ((error = copyin(SCARG_P32(uap, unewset), &lss, sizeof(linux32_sigset_t))) != 0) return error; linux32_to_native_sigset(&bss, &lss); return sigsuspend1(l, &bss); }
int linux_sys_rt_sigsuspend(struct lwp *l, const struct linux_sys_rt_sigsuspend_args *uap, register_t *retval) { /* { syscallarg(linux_sigset_t *) unewset; syscallarg(size_t) sigsetsize; } */ linux_sigset_t lss; sigset_t bss; int error; if (SCARG(uap, sigsetsize) != sizeof(linux_sigset_t)) return (EINVAL); error = copyin(SCARG(uap, unewset), &lss, sizeof(linux_sigset_t)); if (error) return (error); linux_to_native_sigset(&bss, &lss); return (sigsuspend1(l, &bss)); }
/* * The deprecated pause(2), which is really just an instance * of sigsuspend(2). */ int linux_sys_pause(struct lwp *l, const void *v, register_t *retval) { return (sigsuspend1(l, 0)); }