- u.u_procp->p_flag &= ~SSEL;
- if (uap->tv) {
- lqsave = u.u_qsave;
- if (setjmp(&u.u_qsave)) {
- untimeout(unselect, (caddr_t)u.u_procp);
- u.u_error = EINTR;
- splx(s);
- goto done;
- }
- timeout(unselect, (caddr_t)u.u_procp, hzto(&atv));
- }
- sleep((caddr_t)&selwait, PZERO+1);
- if (uap->tv) {
- u.u_qsave = lqsave;
- untimeout(unselect, (caddr_t)u.u_procp);
- }
+ p->p_flag &= ~SSEL;
+ error = tsleep((caddr_t)&selwait, PSOCK | PCATCH, "select", timo);