Changeset View
Changeset View
Standalone View
Standalone View
sys/kern/kern_time.c
Show First 20 Lines • Show All 557 Lines • ▼ Show 20 Lines | do { | ||||
if (TIMESEL(&sbt, tmp)) | if (TIMESEL(&sbt, tmp)) | ||||
sbt += tc_tick_sbt; | sbt += tc_tick_sbt; | ||||
sbt += tmp; | sbt += tmp; | ||||
error = tsleep_sbt(&nanowait[curcpu], PWAIT | PCATCH, "nanslp", | error = tsleep_sbt(&nanowait[curcpu], PWAIT | PCATCH, "nanslp", | ||||
sbt, prec, C_ABSOLUTE); | sbt, prec, C_ABSOLUTE); | ||||
} while (error == 0 && is_abs_real && td->td_rtcgen == 0); | } while (error == 0 && is_abs_real && td->td_rtcgen == 0); | ||||
td->td_rtcgen = 0; | td->td_rtcgen = 0; | ||||
if (error != EWOULDBLOCK) { | if (error != EWOULDBLOCK) { | ||||
TIMESEL(&sbtt, tmp); | if (TIMESEL(&sbtt, tmp)) | ||||
sbtt += tc_tick_sbt; | |||||
if (sbtt >= sbt) | if (sbtt >= sbt) | ||||
return (0); | return (0); | ||||
if (error == ERESTART) | if (error == ERESTART) | ||||
error = EINTR; | error = EINTR; | ||||
if ((flags & TIMER_ABSTIME) == 0 && rmt != NULL) { | if ((flags & TIMER_ABSTIME) == 0 && rmt != NULL) { | ||||
ts = sbttots(sbt - sbtt); | ts = sbttots(sbt - sbtt); | ||||
ts.tv_sec += over; | ts.tv_sec += over; | ||||
if (ts.tv_sec < 0) | if (ts.tv_sec < 0) | ||||
▲ Show 20 Lines • Show All 1,186 Lines • Show Last 20 Lines |