ACPICA: Add ACPI_MUTEX_TYPE configuration option
Used to specify whether the OSL mutex interfaces should be used, or binary semaphores instead. Signed-off-by: Bob Moore <robert.moore@intel.com> Signed-off-by: Lin Ming <ming.m.lin@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
@@ -121,8 +121,11 @@ acpi_os_wait_semaphore(acpi_semaphore handle, u32 units, u16 timeout);
|
|||||||
acpi_status acpi_os_signal_semaphore(acpi_semaphore handle, u32 units);
|
acpi_status acpi_os_signal_semaphore(acpi_semaphore handle, u32 units);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mutex primitives
|
* Mutex primitives. May be configured to use semaphores instead via
|
||||||
|
* ACPI_MUTEX_TYPE (see platform/acenv.h)
|
||||||
*/
|
*/
|
||||||
|
#if (ACPI_MUTEX_TYPE != ACPI_BINARY_SEMAPHORE)
|
||||||
|
|
||||||
acpi_status acpi_os_create_mutex(acpi_mutex * out_handle);
|
acpi_status acpi_os_create_mutex(acpi_mutex * out_handle);
|
||||||
|
|
||||||
void acpi_os_delete_mutex(acpi_mutex handle);
|
void acpi_os_delete_mutex(acpi_mutex handle);
|
||||||
@@ -130,13 +133,7 @@ void acpi_os_delete_mutex(acpi_mutex handle);
|
|||||||
acpi_status acpi_os_acquire_mutex(acpi_mutex handle, u16 timeout);
|
acpi_status acpi_os_acquire_mutex(acpi_mutex handle, u16 timeout);
|
||||||
|
|
||||||
void acpi_os_release_mutex(acpi_mutex handle);
|
void acpi_os_release_mutex(acpi_mutex handle);
|
||||||
|
#endif
|
||||||
/* Temporary macros for Mutex* interfaces, map to existing semaphore xfaces */
|
|
||||||
|
|
||||||
#define acpi_os_create_mutex(out_handle) acpi_os_create_semaphore (1, 1, out_handle)
|
|
||||||
#define acpi_os_delete_mutex(handle) (void) acpi_os_delete_semaphore (handle)
|
|
||||||
#define acpi_os_acquire_mutex(handle,time) acpi_os_wait_semaphore (handle, 1, time)
|
|
||||||
#define acpi_os_release_mutex(handle) (void) acpi_os_signal_semaphore (handle, 1)
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Memory allocation and mapping
|
* Memory allocation and mapping
|
||||||
|
@@ -204,11 +204,10 @@ typedef u32 acpi_physical_address;
|
|||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
*
|
*
|
||||||
* OS-dependent and compiler-dependent types
|
* OS-dependent types
|
||||||
*
|
*
|
||||||
* If the defaults below are not appropriate for the host system, they can
|
* If the defaults below are not appropriate for the host system, they can
|
||||||
* be defined in the compiler-specific or OS-specific header, and this will
|
* be defined in the OS-specific header, and this will take precedence.
|
||||||
* take precedence.
|
|
||||||
*
|
*
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
@@ -218,12 +217,6 @@ typedef u32 acpi_physical_address;
|
|||||||
#define acpi_thread_id acpi_size
|
#define acpi_thread_id acpi_size
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Object returned from acpi_os_create_lock */
|
|
||||||
|
|
||||||
#ifndef acpi_spinlock
|
|
||||||
#define acpi_spinlock void *
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Flags for acpi_os_acquire_lock/acpi_os_release_lock */
|
/* Flags for acpi_os_acquire_lock/acpi_os_release_lock */
|
||||||
|
|
||||||
#ifndef acpi_cpu_flags
|
#ifndef acpi_cpu_flags
|
||||||
@@ -240,6 +233,44 @@ typedef u32 acpi_physical_address;
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Synchronization objects - Mutexes, Semaphores, and spin_locks
|
||||||
|
*/
|
||||||
|
#if (ACPI_MUTEX_TYPE == ACPI_BINARY_SEMAPHORE)
|
||||||
|
/*
|
||||||
|
* These macros are used if the host OS does not support a mutex object.
|
||||||
|
* Map the OSL Mutex interfaces to binary semaphores.
|
||||||
|
*/
|
||||||
|
#define acpi_mutex acpi_semaphore
|
||||||
|
#define acpi_os_create_mutex(out_handle) acpi_os_create_semaphore (1, 1, out_handle)
|
||||||
|
#define acpi_os_delete_mutex(handle) (void) acpi_os_delete_semaphore (handle)
|
||||||
|
#define acpi_os_acquire_mutex(handle,time) acpi_os_wait_semaphore (handle, 1, time)
|
||||||
|
#define acpi_os_release_mutex(handle) (void) acpi_os_signal_semaphore (handle, 1)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Configurable types for synchronization objects */
|
||||||
|
|
||||||
|
#ifndef acpi_spinlock
|
||||||
|
#define acpi_spinlock void *
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef acpi_semaphore
|
||||||
|
#define acpi_semaphore void *
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef acpi_mutex
|
||||||
|
#define acpi_mutex void *
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
*
|
||||||
|
* Compiler-dependent types
|
||||||
|
*
|
||||||
|
* If the defaults below are not appropriate for the host compiler, they can
|
||||||
|
* be defined in the compiler-specific header, and this will take precedence.
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
/* Use C99 uintptr_t for pointer casting if available, "void *" otherwise */
|
/* Use C99 uintptr_t for pointer casting if available, "void *" otherwise */
|
||||||
|
|
||||||
#ifndef acpi_uintptr_t
|
#ifndef acpi_uintptr_t
|
||||||
@@ -353,11 +384,6 @@ struct uint32_struct {
|
|||||||
u32 hi;
|
u32 hi;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Synchronization objects */
|
|
||||||
|
|
||||||
#define acpi_mutex void *
|
|
||||||
#define acpi_semaphore void *
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Acpi integer width. In ACPI version 1, integers are 32 bits. In ACPI
|
* Acpi integer width. In ACPI version 1, integers are 32 bits. In ACPI
|
||||||
* version 2, integers are 64 bits. Note that this pertains to the ACPI integer
|
* version 2, integers are 64 bits. Note that this pertains to the ACPI integer
|
||||||
|
@@ -44,13 +44,26 @@
|
|||||||
#ifndef __ACENV_H__
|
#ifndef __ACENV_H__
|
||||||
#define __ACENV_H__
|
#define __ACENV_H__
|
||||||
|
|
||||||
/*
|
/* Types for ACPI_MUTEX_TYPE */
|
||||||
|
|
||||||
|
#define ACPI_BINARY_SEMAPHORE 0
|
||||||
|
#define ACPI_OSL_MUTEX 1
|
||||||
|
|
||||||
|
/* Types for DEBUGGER_THREADING */
|
||||||
|
|
||||||
|
#define DEBUGGER_SINGLE_THREADED 0
|
||||||
|
#define DEBUGGER_MULTI_THREADED 1
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
*
|
||||||
* Configuration for ACPI tools and utilities
|
* Configuration for ACPI tools and utilities
|
||||||
*/
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
#ifdef ACPI_LIBRARY
|
#ifdef ACPI_LIBRARY
|
||||||
/*
|
/*
|
||||||
* Note: The non-debug version of the acpi_library does not contain any
|
* Note: The non-debug version of the acpi_library does not contain any
|
||||||
* debug support, for minimimal size. The debug version uses ACPI_FULL_DEBUG
|
* debug support, for minimal size. The debug version uses ACPI_FULL_DEBUG
|
||||||
*/
|
*/
|
||||||
#define ACPI_USE_LOCAL_CACHE
|
#define ACPI_USE_LOCAL_CACHE
|
||||||
#endif
|
#endif
|
||||||
@@ -167,6 +180,19 @@
|
|||||||
|
|
||||||
/*! [End] no source code translation !*/
|
/*! [End] no source code translation !*/
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
*
|
||||||
|
* Miscellaneous configuration
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Are mutexes supported by the host? default is no, use binary semaphores.
|
||||||
|
*/
|
||||||
|
#ifndef ACPI_MUTEX_TYPE
|
||||||
|
#define ACPI_MUTEX_TYPE ACPI_BINARY_SEMAPHORE
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Debugger threading model
|
* Debugger threading model
|
||||||
* Use single threaded if the entire subsystem is contained in an application
|
* Use single threaded if the entire subsystem is contained in an application
|
||||||
@@ -175,9 +201,6 @@
|
|||||||
* By default the model is single threaded if ACPI_APPLICATION is set,
|
* By default the model is single threaded if ACPI_APPLICATION is set,
|
||||||
* multi-threaded if ACPI_APPLICATION is not set.
|
* multi-threaded if ACPI_APPLICATION is not set.
|
||||||
*/
|
*/
|
||||||
#define DEBUGGER_SINGLE_THREADED 0
|
|
||||||
#define DEBUGGER_MULTI_THREADED 1
|
|
||||||
|
|
||||||
#ifndef DEBUGGER_THREADING
|
#ifndef DEBUGGER_THREADING
|
||||||
#ifdef ACPI_APPLICATION
|
#ifdef ACPI_APPLICATION
|
||||||
#define DEBUGGER_THREADING DEBUGGER_SINGLE_THREADED
|
#define DEBUGGER_THREADING DEBUGGER_SINGLE_THREADED
|
||||||
|
@@ -46,6 +46,7 @@
|
|||||||
|
|
||||||
#define ACPI_USE_SYSTEM_CLIBRARY
|
#define ACPI_USE_SYSTEM_CLIBRARY
|
||||||
#define ACPI_USE_DO_WHILE_0
|
#define ACPI_USE_DO_WHILE_0
|
||||||
|
#define ACPI_MUTEX_TYPE ACPI_BINARY_SEMAPHORE
|
||||||
|
|
||||||
#ifdef __KERNEL__
|
#ifdef __KERNEL__
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user