- /* Collect "siginfo" information for caller */
- collect64.si_signo = SIGCHLD;
- collect64.si_code = 0;
- collect64.si_errno = 0;
- collect64.si_pid = 0;
- collect64.si_uid = 0;
- collect64.si_addr = 0;
- collect64.si_status = WEXITSTATUS(p->p_xstat);
- collect64.si_band = 0;
-
- if (IS_64BIT_PROCESS(p)) {
- user64_siginfo_t sinfo64;
-
- siginfo_user_to_user64(&collect64, &sinfo64);
-
- error = copyout((caddr_t)&sinfo64,
- uap->infop,
- sizeof(sinfo64));
- } else {
- user32_siginfo_t sinfo32;
-
- siginfo_user_to_user32(&collect64, &sinfo32);
-
- error = copyout((caddr_t)&sinfo32,
- uap->infop,
- sizeof(sinfo32));
- }
- /* information unavailable? */
- if (error)
+ if ((error = copyoutsiginfo(&siginfo,
+ caller64, uap->infop)) != 0)