- s = spl7(); timevaladd(&atv, &time); splx(s);
- }
-retry:
- ncoll = nselcoll;
- u.u_procp->p_flag |= SSEL;
- u.u_r.r_val1 = selscan(ibits, obits);
- if (u.u_error)
- return;
- if (u.u_r.r_val1)
- goto done;
- s = spl6();
- if (uap->tv && timercmp(&time, &atv, >=)) {
- splx(s);
- goto done;
- }
- if ((u.u_procp->p_flag & SSEL) == 0 || nselcoll != ncoll) {
- u.u_procp->p_flag &= ~SSEL;
- splx(s);
- goto retry;
- }
- u.u_procp->p_flag &= ~SSEL;
- if (uap->tv) {
- lqsave = u.u_qsave;
- if (setjmp(&u.u_qsave)) {
- untimeout(unselect, u.u_procp);
- u.u_error = EINTR;
- splx(s);