Changeset View
Changeset View
Standalone View
Standalone View
sys/kern/sys_generic.c
Show First 20 Lines • Show All 1,865 Lines • ▼ Show 20 Lines | seltdwait(struct thread *td, sbintime_t sbt, sbintime_t precision) | ||||
if (stp->st_flags & SELTD_PENDING) { | if (stp->st_flags & SELTD_PENDING) { | ||||
mtx_unlock(&stp->st_mtx); | mtx_unlock(&stp->st_mtx); | ||||
return (0); | return (0); | ||||
} | } | ||||
if (sbt == 0) | if (sbt == 0) | ||||
error = EWOULDBLOCK; | error = EWOULDBLOCK; | ||||
else if (sbt != -1) | else if (sbt != -1) | ||||
error = cv_timedwait_sig_sbt(&stp->st_wait, &stp->st_mtx, | error = cv_timedwait_sig_sbt(&stp->st_wait, &stp->st_mtx, | ||||
sbt, precision, C_ABSOLUTE); | sbt, precision, C_ABSOLUTE | C_USERWAIT); | ||||
else | else | ||||
error = cv_wait_sig(&stp->st_wait, &stp->st_mtx); | error = cv_wait_sig_flags(&stp->st_wait, &stp->st_mtx, C_USERWAIT); | ||||
mtx_unlock(&stp->st_mtx); | mtx_unlock(&stp->st_mtx); | ||||
return (error); | return (error); | ||||
} | } | ||||
void | void | ||||
seltdfini(struct thread *td) | seltdfini(struct thread *td) | ||||
{ | { | ||||
▲ Show 20 Lines • Show All 56 Lines • Show Last 20 Lines |