From 8525ffefc2fd6ea3f9974333597cbcd936b7d8d2 Mon Sep 17 00:00:00 2001 From: Nate Lawson Date: Thu, 2 Oct 2003 05:09:37 +0000 Subject: [PATCH] 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(-) diff --git a/sys/dev/acpica/Osd/OsdSchedule.c b/sys/dev/acpica/Osd/OsdSchedule.c index ac29c1ecfd4..4ba1dee2be0 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 */