If requested to Sleep for less than our hz granularity (e.g., 10 ms),
use DELAY instead of tsleep. Submitted by: peter
This commit is contained in:
parent
ccbdb269fd
commit
a787da5c6b
@ -243,7 +243,7 @@ AcpiOsExecuteQueue(void *arg, int pending)
|
||||
* make do with that.
|
||||
*/
|
||||
void
|
||||
AcpiOsSleep (UINT32 Seconds, UINT32 Milliseconds)
|
||||
AcpiOsSleep(UINT32 Seconds, UINT32 Milliseconds)
|
||||
{
|
||||
int timo;
|
||||
static int dummy;
|
||||
@ -251,14 +251,21 @@ AcpiOsSleep (UINT32 Seconds, UINT32 Milliseconds)
|
||||
ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__);
|
||||
|
||||
timo = (Seconds * hz) + Milliseconds * hz / 1000;
|
||||
if (timo == 0)
|
||||
timo = 1;
|
||||
tsleep(&dummy, 0, "acpislp", timo);
|
||||
|
||||
/*
|
||||
* If requested sleep time is less than our hz resolution, use
|
||||
* DELAY instead for better granularity.
|
||||
*/
|
||||
if (timo > 0)
|
||||
tsleep(&dummy, 0, "acpislp", timo);
|
||||
else
|
||||
DELAY(Milliseconds * 1000);
|
||||
|
||||
return_VOID;
|
||||
}
|
||||
|
||||
void
|
||||
AcpiOsStall (UINT32 Microseconds)
|
||||
AcpiOsStall(UINT32 Microseconds)
|
||||
{
|
||||
ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__);
|
||||
|
||||
@ -267,7 +274,7 @@ AcpiOsStall (UINT32 Microseconds)
|
||||
}
|
||||
|
||||
UINT32
|
||||
AcpiOsGetThreadId (void)
|
||||
AcpiOsGetThreadId(void)
|
||||
{
|
||||
struct proc *p;
|
||||
/* XXX do not add FUNCTION_TRACE here, results in recursive call */
|
||||
|
Loading…
Reference in New Issue
Block a user