diff options
| author | Bob Moore <robert.moore@intel.com> | 2008-12-30 14:03:29 -0500 |
|---|---|---|
| committer | Len Brown <len.brown@intel.com> | 2008-12-31 01:16:39 -0500 |
| commit | 1685bd404dc2ecce2fdae6410e85ded2f2c0136d (patch) | |
| tree | 5ccce028c1b60c50082fb6641b4afc7afdd6e636 /include/acpi | |
| parent | 7488c8d51134a152f022bc11547157f80a725ff1 (diff) | |
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>
Diffstat (limited to 'include/acpi')
| -rw-r--r-- | include/acpi/acpiosxf.h | 13 | ||||
| -rw-r--r-- | include/acpi/actypes.h | 54 | ||||
| -rw-r--r-- | include/acpi/platform/acenv.h | 35 | ||||
| -rw-r--r-- | include/acpi/platform/aclinux.h | 1 |
4 files changed, 75 insertions, 28 deletions
diff --git a/include/acpi/acpiosxf.h b/include/acpi/acpiosxf.h index b91440ac0d16..a62720a7edc0 100644 --- a/include/acpi/acpiosxf.h +++ b/include/acpi/acpiosxf.h | |||
| @@ -121,8 +121,11 @@ acpi_os_wait_semaphore(acpi_semaphore handle, u32 units, u16 timeout); | |||
| 121 | acpi_status acpi_os_signal_semaphore(acpi_semaphore handle, u32 units); | 121 | acpi_status acpi_os_signal_semaphore(acpi_semaphore handle, u32 units); |
| 122 | 122 | ||
| 123 | /* | 123 | /* |
| 124 | * Mutex primitives | 124 | * Mutex primitives. May be configured to use semaphores instead via |
| 125 | * ACPI_MUTEX_TYPE (see platform/acenv.h) | ||
| 125 | */ | 126 | */ |
| 127 | #if (ACPI_MUTEX_TYPE != ACPI_BINARY_SEMAPHORE) | ||
| 128 | |||
| 126 | acpi_status acpi_os_create_mutex(acpi_mutex * out_handle); | 129 | acpi_status acpi_os_create_mutex(acpi_mutex * out_handle); |
| 127 | 130 | ||
| 128 | void acpi_os_delete_mutex(acpi_mutex handle); | 131 | void acpi_os_delete_mutex(acpi_mutex handle); |
| @@ -130,13 +133,7 @@ void acpi_os_delete_mutex(acpi_mutex handle); | |||
| 130 | acpi_status acpi_os_acquire_mutex(acpi_mutex handle, u16 timeout); | 133 | acpi_status acpi_os_acquire_mutex(acpi_mutex handle, u16 timeout); |
| 131 | 134 | ||
| 132 | void acpi_os_release_mutex(acpi_mutex handle); | 135 | void acpi_os_release_mutex(acpi_mutex handle); |
| 133 | 136 | #endif | |
| 134 | /* Temporary macros for Mutex* interfaces, map to existing semaphore xfaces */ | ||
| 135 | |||
| 136 | #define acpi_os_create_mutex(out_handle) acpi_os_create_semaphore (1, 1, out_handle) | ||
| 137 | #define acpi_os_delete_mutex(handle) (void) acpi_os_delete_semaphore (handle) | ||
| 138 | #define acpi_os_acquire_mutex(handle,time) acpi_os_wait_semaphore (handle, 1, time) | ||
| 139 | #define acpi_os_release_mutex(handle) (void) acpi_os_signal_semaphore (handle, 1) | ||
| 140 | 137 | ||
| 141 | /* | 138 | /* |
| 142 | * Memory allocation and mapping | 139 | * Memory allocation and mapping |
diff --git a/include/acpi/actypes.h b/include/acpi/actypes.h index 20f6f9c5f21c..24b2cef5a13f 100644 --- a/include/acpi/actypes.h +++ b/include/acpi/actypes.h | |||
| @@ -204,11 +204,10 @@ typedef u32 acpi_physical_address; | |||
| 204 | 204 | ||
| 205 | /******************************************************************************* | 205 | /******************************************************************************* |
| 206 | * | 206 | * |
| 207 | * OS-dependent and compiler-dependent types | 207 | * OS-dependent types |
| 208 | * | 208 | * |
| 209 | * If the defaults below are not appropriate for the host system, they can | 209 | * If the defaults below are not appropriate for the host system, they can |
| 210 | * be defined in the compiler-specific or OS-specific header, and this will | 210 | * be defined in the OS-specific header, and this will take precedence. |
| 211 | * take precedence. | ||
| 212 | * | 211 | * |
| 213 | ******************************************************************************/ | 212 | ******************************************************************************/ |
| 214 | 213 | ||
| @@ -218,12 +217,6 @@ typedef u32 acpi_physical_address; | |||
| 218 | #define acpi_thread_id acpi_size | 217 | #define acpi_thread_id acpi_size |
| 219 | #endif | 218 | #endif |
| 220 | 219 | ||
| 221 | /* Object returned from acpi_os_create_lock */ | ||
| 222 | |||
| 223 | #ifndef acpi_spinlock | ||
| 224 | #define acpi_spinlock void * | ||
| 225 | #endif | ||
| 226 | |||
| 227 | /* Flags for acpi_os_acquire_lock/acpi_os_release_lock */ | 220 | /* Flags for acpi_os_acquire_lock/acpi_os_release_lock */ |
| 228 | 221 | ||
| 229 | #ifndef acpi_cpu_flags | 222 | #ifndef acpi_cpu_flags |
| @@ -240,6 +233,44 @@ typedef u32 acpi_physical_address; | |||
| 240 | #endif | 233 | #endif |
| 241 | #endif | 234 | #endif |
| 242 | 235 | ||
| 236 | /* | ||
| 237 | * Synchronization objects - Mutexes, Semaphores, and spin_locks | ||
| 238 | */ | ||
| 239 | #if (ACPI_MUTEX_TYPE == ACPI_BINARY_SEMAPHORE) | ||
| 240 | /* | ||
| 241 | * These macros are used if the host OS does not support a mutex object. | ||
| 242 | * Map the OSL Mutex interfaces to binary semaphores. | ||
| 243 | */ | ||
| 244 | #define acpi_mutex acpi_semaphore | ||
| 245 | #define acpi_os_create_mutex(out_handle) acpi_os_create_semaphore (1, 1, out_handle) | ||
| 246 | #define acpi_os_delete_mutex(handle) (void) acpi_os_delete_semaphore (handle) | ||
| 247 | #define acpi_os_acquire_mutex(handle,time) acpi_os_wait_semaphore (handle, 1, time) | ||
| 248 | #define acpi_os_release_mutex(handle) (void) acpi_os_signal_semaphore (handle, 1) | ||
| 249 | #endif | ||
| 250 | |||
| 251 | /* Configurable types for synchronization objects */ | ||
| 252 | |||
| 253 | #ifndef acpi_spinlock | ||
| 254 | #define acpi_spinlock void * | ||
| 255 | #endif | ||
| 256 | |||
| 257 | #ifndef acpi_semaphore | ||
| 258 | #define acpi_semaphore void * | ||
| 259 | #endif | ||
| 260 | |||
| 261 | #ifndef acpi_mutex | ||
| 262 | #define acpi_mutex void * | ||
| 263 | #endif | ||
| 264 | |||
| 265 | /******************************************************************************* | ||
| 266 | * | ||
| 267 | * Compiler-dependent types | ||
| 268 | * | ||
| 269 | * If the defaults below are not appropriate for the host compiler, they can | ||
| 270 | * be defined in the compiler-specific header, and this will take precedence. | ||
| 271 | * | ||
| 272 | ******************************************************************************/ | ||
| 273 | |||
| 243 | /* Use C99 uintptr_t for pointer casting if available, "void *" otherwise */ | 274 | /* Use C99 uintptr_t for pointer casting if available, "void *" otherwise */ |
| 244 | 275 | ||
| 245 | #ifndef acpi_uintptr_t | 276 | #ifndef acpi_uintptr_t |
| @@ -353,11 +384,6 @@ struct uint32_struct { | |||
| 353 | u32 hi; | 384 | u32 hi; |
| 354 | }; | 385 | }; |
| 355 | 386 | ||
| 356 | /* Synchronization objects */ | ||
| 357 | |||
| 358 | #define acpi_mutex void * | ||
| 359 | #define acpi_semaphore void * | ||
| 360 | |||
| 361 | /* | 387 | /* |
| 362 | * Acpi integer width. In ACPI version 1, integers are 32 bits. In ACPI | 388 | * Acpi integer width. In ACPI version 1, integers are 32 bits. In ACPI |
| 363 | * version 2, integers are 64 bits. Note that this pertains to the ACPI integer | 389 | * version 2, integers are 64 bits. Note that this pertains to the ACPI integer |
diff --git a/include/acpi/platform/acenv.h b/include/acpi/platform/acenv.h index cbae39c728a5..e62f10d9a7d8 100644 --- a/include/acpi/platform/acenv.h +++ b/include/acpi/platform/acenv.h | |||
| @@ -44,13 +44,26 @@ | |||
| 44 | #ifndef __ACENV_H__ | 44 | #ifndef __ACENV_H__ |
| 45 | #define __ACENV_H__ | 45 | #define __ACENV_H__ |
| 46 | 46 | ||
| 47 | /* | 47 | /* Types for ACPI_MUTEX_TYPE */ |
| 48 | |||
| 49 | #define ACPI_BINARY_SEMAPHORE 0 | ||
| 50 | #define ACPI_OSL_MUTEX 1 | ||
| 51 | |||
| 52 | /* Types for DEBUGGER_THREADING */ | ||
| 53 | |||
| 54 | #define DEBUGGER_SINGLE_THREADED 0 | ||
| 55 | #define DEBUGGER_MULTI_THREADED 1 | ||
| 56 | |||
| 57 | /****************************************************************************** | ||
| 58 | * | ||
| 48 | * Configuration for ACPI tools and utilities | 59 | * Configuration for ACPI tools and utilities |
| 49 | */ | 60 | * |
| 61 | *****************************************************************************/ | ||
| 62 | |||
| 50 | #ifdef ACPI_LIBRARY | 63 | #ifdef ACPI_LIBRARY |
| 51 | /* | 64 | /* |
| 52 | * Note: The non-debug version of the acpi_library does not contain any | 65 | * Note: The non-debug version of the acpi_library does not contain any |
| 53 | * debug support, for minimimal size. The debug version uses ACPI_FULL_DEBUG | 66 | * debug support, for minimal size. The debug version uses ACPI_FULL_DEBUG |
| 54 | */ | 67 | */ |
| 55 | #define ACPI_USE_LOCAL_CACHE | 68 | #define ACPI_USE_LOCAL_CACHE |
| 56 | #endif | 69 | #endif |
| @@ -167,6 +180,19 @@ | |||
| 167 | 180 | ||
| 168 | /*! [End] no source code translation !*/ | 181 | /*! [End] no source code translation !*/ |
| 169 | 182 | ||
| 183 | /****************************************************************************** | ||
| 184 | * | ||
| 185 | * Miscellaneous configuration | ||
| 186 | * | ||
| 187 | *****************************************************************************/ | ||
| 188 | |||
| 189 | /* | ||
| 190 | * Are mutexes supported by the host? default is no, use binary semaphores. | ||
| 191 | */ | ||
| 192 | #ifndef ACPI_MUTEX_TYPE | ||
| 193 | #define ACPI_MUTEX_TYPE ACPI_BINARY_SEMAPHORE | ||
| 194 | #endif | ||
| 195 | |||
| 170 | /* | 196 | /* |
| 171 | * Debugger threading model | 197 | * Debugger threading model |
| 172 | * Use single threaded if the entire subsystem is contained in an application | 198 | * Use single threaded if the entire subsystem is contained in an application |
| @@ -175,9 +201,6 @@ | |||
| 175 | * By default the model is single threaded if ACPI_APPLICATION is set, | 201 | * By default the model is single threaded if ACPI_APPLICATION is set, |
| 176 | * multi-threaded if ACPI_APPLICATION is not set. | 202 | * multi-threaded if ACPI_APPLICATION is not set. |
| 177 | */ | 203 | */ |
| 178 | #define DEBUGGER_SINGLE_THREADED 0 | ||
| 179 | #define DEBUGGER_MULTI_THREADED 1 | ||
| 180 | |||
| 181 | #ifndef DEBUGGER_THREADING | 204 | #ifndef DEBUGGER_THREADING |
| 182 | #ifdef ACPI_APPLICATION | 205 | #ifdef ACPI_APPLICATION |
| 183 | #define DEBUGGER_THREADING DEBUGGER_SINGLE_THREADED | 206 | #define DEBUGGER_THREADING DEBUGGER_SINGLE_THREADED |
diff --git a/include/acpi/platform/aclinux.h b/include/acpi/platform/aclinux.h index 0515e754449d..3cabf888c8af 100644 --- a/include/acpi/platform/aclinux.h +++ b/include/acpi/platform/aclinux.h | |||
| @@ -46,6 +46,7 @@ | |||
| 46 | 46 | ||
| 47 | #define ACPI_USE_SYSTEM_CLIBRARY | 47 | #define ACPI_USE_SYSTEM_CLIBRARY |
| 48 | #define ACPI_USE_DO_WHILE_0 | 48 | #define ACPI_USE_DO_WHILE_0 |
| 49 | #define ACPI_MUTEX_TYPE ACPI_BINARY_SEMAPHORE | ||
| 49 | 50 | ||
| 50 | #ifdef __KERNEL__ | 51 | #ifdef __KERNEL__ |
| 51 | 52 | ||
