Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/acpica/Osd/OsdSynch.c
Show First 20 Lines • Show All 182 Lines • ▼ Show 20 Lines | while (!ACPISEM_AVAIL(as, Units)) { | ||||
as->as_waiters--; | as->as_waiters--; | ||||
if (error == EINTR || as->as_reset) { | if (error == EINTR || as->as_reset) { | ||||
status = AE_ERROR; | status = AE_ERROR; | ||||
break; | break; | ||||
} | } | ||||
} | } | ||||
break; | break; | ||||
default: | default: | ||||
if (cold) { | |||||
/* | |||||
* Just spin polling the semaphore once a | |||||
* millisecond. | |||||
*/ | |||||
while (!ACPISEM_AVAIL(as, Units)) { | |||||
if (Timeout == 0) { | |||||
status = AE_TIME; | |||||
break; | |||||
} | |||||
Timeout--; | |||||
mtx_unlock(&as->as_lock); | |||||
DELAY(1000); | |||||
mtx_lock(&as->as_lock); | |||||
} | |||||
break; | |||||
} | |||||
tmo = timeout2hz(Timeout); | tmo = timeout2hz(Timeout); | ||||
while (!ACPISEM_AVAIL(as, Units)) { | while (!ACPISEM_AVAIL(as, Units)) { | ||||
prevtick = ticks; | prevtick = ticks; | ||||
as->as_waiters++; | as->as_waiters++; | ||||
error = cv_timedwait_sig(&as->as_cv, &as->as_lock, tmo); | error = cv_timedwait_sig(&as->as_cv, &as->as_lock, tmo); | ||||
as->as_waiters--; | as->as_waiters--; | ||||
if (error == EINTR || as->as_reset) { | if (error == EINTR || as->as_reset) { | ||||
status = AE_ERROR; | status = AE_ERROR; | ||||
▲ Show 20 Lines • Show All 177 Lines • ▼ Show 20 Lines | while (!ACPIMTX_AVAIL(am)) { | ||||
am->am_waiters--; | am->am_waiters--; | ||||
if (error == EINTR || am->am_reset) { | if (error == EINTR || am->am_reset) { | ||||
status = AE_ERROR; | status = AE_ERROR; | ||||
break; | break; | ||||
} | } | ||||
} | } | ||||
break; | break; | ||||
default: | default: | ||||
if (cold) { | |||||
/* | |||||
* Just spin polling the mutex once a | |||||
* millisecond. | |||||
*/ | |||||
while (!ACPIMTX_AVAIL(am)) { | |||||
if (Timeout == 0) { | |||||
status = AE_TIME; | |||||
break; | |||||
} | |||||
Timeout--; | |||||
mtx_unlock(&am->am_lock); | |||||
DELAY(1000); | |||||
mtx_lock(&am->am_lock); | |||||
} | |||||
break; | |||||
} | |||||
tmo = timeout2hz(Timeout); | tmo = timeout2hz(Timeout); | ||||
while (!ACPIMTX_AVAIL(am)) { | while (!ACPIMTX_AVAIL(am)) { | ||||
prevtick = ticks; | prevtick = ticks; | ||||
am->am_waiters++; | am->am_waiters++; | ||||
error = mtx_sleep(am, &am->am_lock, PCATCH, | error = mtx_sleep(am, &am->am_lock, PCATCH, | ||||
"acmtx", tmo); | "acmtx", tmo); | ||||
am->am_waiters--; | am->am_waiters--; | ||||
if (error == EINTR || am->am_reset) { | if (error == EINTR || am->am_reset) { | ||||
▲ Show 20 Lines • Show All 215 Lines • Show Last 20 Lines |