From a787da5c6b11d1eeb7f85c8f766715eb5651543b Mon Sep 17 00:00:00 2001 From: njl Date: Thu, 2 Oct 2003 05:09:37 +0000 Subject: If requested to Sleep for less than our hz granularity (e.g., 10 ms), use DELAY instead of tsleep. Submitted by: peter --- sys/dev/acpica/Osd/OsdSchedule.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'sys/dev/acpica') diff --git a/sys/dev/acpica/Osd/OsdSchedule.c b/sys/dev/acpica/Osd/OsdSchedule.c index ac29c1e..4ba1dee 100644 --- a/sys/dev/acpica/Osd/OsdSchedule.c +++ b/sys/dev/acpica/Osd/OsdSchedule.c @@ -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 */ -- cgit v1.1