From a3a192c1cb6b4ae2403ffe7f50b48c663549d061 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Sun, 17 May 2020 15:32:15 -0400 Subject: [PATCH] acpi: Use mutex_trylock() for ACPI_DO_NOT_WAIT. We do not need to go through all the overhead of mutex_lock_with_timeout() if there is in fact no timeout. Change-Id: I7891ae9138a7d45be934ac53412b82546d52b901 Reviewed-on: https://review.haiku-os.org/c/haiku/+/2730 Reviewed-by: waddlesplash --- src/add-ons/kernel/bus_managers/acpi/ACPICAHaiku.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/add-ons/kernel/bus_managers/acpi/ACPICAHaiku.cpp b/src/add-ons/kernel/bus_managers/acpi/ACPICAHaiku.cpp index 3aad4e020e..dda946e3bf 100644 --- a/src/add-ons/kernel/bus_managers/acpi/ACPICAHaiku.cpp +++ b/src/add-ons/kernel/bus_managers/acpi/ACPICAHaiku.cpp @@ -1298,9 +1298,11 @@ AcpiOsAcquireMutex(ACPI_MUTEX handle, UINT16 timeout) ACPI_STATUS result = AE_OK; DEBUG_FUNCTION_VF("mutex: %p; timeout: %u", handle, timeout); - if (timeout == ACPI_WAIT_FOREVER) - result = mutex_lock(handle) == B_OK ? AE_OK : AE_BAD_PARAMETER; - else { + if (timeout == ACPI_WAIT_FOREVER) { + result = (mutex_lock(handle) == B_OK) ? AE_OK : AE_BAD_PARAMETER; + } else if (timeout == ACPI_DO_NOT_WAIT) { + result = (mutex_trylock(handle) == B_OK) ? AE_OK : AE_TIME; + } else { switch (mutex_lock_with_timeout(handle, B_RELATIVE_TIMEOUT, (bigtime_t)timeout * 1000)) { case B_OK: