int sys_kill(struct lwp *l, const struct sys_kill_args *uap, register_t *retval) { /* { syscallarg(pid_t) pid; syscallarg(int) signum; } */ ksiginfo_t ksi; KSI_INIT(&ksi); ksi.ksi_signo = SCARG(uap, signum); ksi.ksi_code = SI_USER; ksi.ksi_pid = l->l_proc->p_pid; ksi.ksi_uid = kauth_cred_geteuid(l->l_cred); return kill1(l, SCARG(uap, pid), &ksi, retval); }
int sys_sigqueueinfo(struct lwp *l, const struct sys_sigqueueinfo_args *uap, register_t *retval) { /* { syscallarg(pid_t int) pid; syscallarg(const siginfo_t *) info; } */ ksiginfo_t ksi; int error; KSI_INIT(&ksi); if ((error = copyin(&SCARG(uap, info)->_info, &ksi.ksi_info, sizeof(ksi.ksi_info))) != 0) return error; return kill1(l, SCARG(uap, pid), &ksi, retval); }
int netbsd32_sigqueueinfo(struct lwp *l, const struct netbsd32_sigqueueinfo_args *uap, register_t *retval) { /* { syscallarg(pid_t) pid; syscallarg(const netbsd32_siginfop_t) info; } */ struct __ksiginfo32 ksi32; ksiginfo_t ksi; int error; if ((error = copyin(SCARG_P32(uap, info), &ksi32, sizeof(ksi32))) != 0) return error; KSI_INIT(&ksi); netbsd32_ksi32_to_ksi(&ksi.ksi_info, &ksi32); return kill1(l, SCARG(uap, pid), &ksi, retval); }