ACPICA: haiku: Fix invalid value used for semaphores

ACPICA commit 49fe4f25483feec2f685b204ef19e28d92979e95

In Haiku, semaphores are represented by integers, not pointers.
So, we can't use NULL as the invalid/destroyed value, the correct value
is -1. Introduce a platform overridable define to allow this.

Fixes #162 (which was closed after coming to the conclusion that this
should be done, but the change was never done).

Link: https://github.com/acpica/acpica/commit/49fe4f25
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
Adrien Destugues 2023-12-12 12:28:17 +01:00 committed by Rafael J. Wysocki
parent 36b5c1dc4b
commit 7afea7bc49
3 changed files with 9 additions and 3 deletions

View File

@ -140,7 +140,7 @@ static void acpi_ut_delete_internal_obj(union acpi_operand_object *object)
(void) (void)
acpi_os_delete_semaphore acpi_os_delete_semaphore
(acpi_gbl_global_lock_semaphore); (acpi_gbl_global_lock_semaphore);
acpi_gbl_global_lock_semaphore = NULL; acpi_gbl_global_lock_semaphore = ACPI_SEMAPHORE_NULL;
acpi_os_delete_mutex(object->mutex.os_mutex); acpi_os_delete_mutex(object->mutex.os_mutex);
acpi_gbl_global_lock_mutex = NULL; acpi_gbl_global_lock_mutex = NULL;
@ -157,7 +157,7 @@ static void acpi_ut_delete_internal_obj(union acpi_operand_object *object)
object, object->event.os_semaphore)); object, object->event.os_semaphore));
(void)acpi_os_delete_semaphore(object->event.os_semaphore); (void)acpi_os_delete_semaphore(object->event.os_semaphore);
object->event.os_semaphore = NULL; object->event.os_semaphore = ACPI_SEMAPHORE_NULL;
break; break;
case ACPI_TYPE_METHOD: case ACPI_TYPE_METHOD:

View File

@ -154,7 +154,7 @@ acpi_status acpi_ut_init_globals(void)
/* Global Lock support */ /* Global Lock support */
acpi_gbl_global_lock_semaphore = NULL; acpi_gbl_global_lock_semaphore = ACPI_SEMAPHORE_NULL;
acpi_gbl_global_lock_mutex = NULL; acpi_gbl_global_lock_mutex = NULL;
acpi_gbl_global_lock_acquired = FALSE; acpi_gbl_global_lock_acquired = FALSE;
acpi_gbl_global_lock_handle = 0; acpi_gbl_global_lock_handle = 0;

View File

@ -252,6 +252,12 @@
#define ACPI_RELEASE_GLOBAL_LOCK(Glptr, pending) pending = 0 #define ACPI_RELEASE_GLOBAL_LOCK(Glptr, pending) pending = 0
#endif #endif
/* NULL/invalid value to use for destroyed or not-yet-created semaphores. */
#ifndef ACPI_SEMAPHORE_NULL
#define ACPI_SEMAPHORE_NULL NULL
#endif
/* Flush CPU cache - used when going to sleep. Wbinvd or similar. */ /* Flush CPU cache - used when going to sleep. Wbinvd or similar. */
#ifndef ACPI_FLUSH_CPU_CACHE #ifndef ACPI_FLUSH_CPU_CACHE