- if (t->detached) a_crash();
- while ((tmp = t->tid) && r != ETIMEDOUT && r != EINVAL)
- r = __timedwait_cp(&t->tid, tmp, CLOCK_REALTIME, at, 0);
+ while ((state = t->detach_state) && r != ETIMEDOUT && r != EINVAL) {
+ if (state >= DT_DETACHED) a_crash();
+ r = __timedwait_cp(&t->detach_state, state, CLOCK_REALTIME, at, 1);
+ }