diff options
author | jkim <jkim@FreeBSD.org> | 2007-03-22 17:24:05 +0000 |
---|---|---|
committer | jkim <jkim@FreeBSD.org> | 2007-03-22 17:24:05 +0000 |
commit | e031ab5da47b5f6c28c3cc5d576128b2d8d202e6 (patch) | |
tree | 69d0fa3b3760b0abcc0335ff748e39701a8bf064 /sys/contrib/dev/acpica/utmutex.c | |
parent | dbc8115981195155aec9304dd8f0ee570bd3d32c (diff) | |
download | FreeBSD-src-e031ab5da47b5f6c28c3cc5d576128b2d8d202e6.zip FreeBSD-src-e031ab5da47b5f6c28c3cc5d576128b2d8d202e6.tar.gz |
Vendor import of Intel ACPI-CA 20070320
Diffstat (limited to 'sys/contrib/dev/acpica/utmutex.c')
-rw-r--r-- | sys/contrib/dev/acpica/utmutex.c | 102 |
1 files changed, 46 insertions, 56 deletions
diff --git a/sys/contrib/dev/acpica/utmutex.c b/sys/contrib/dev/acpica/utmutex.c index e685511..701d269 100644 --- a/sys/contrib/dev/acpica/utmutex.c +++ b/sys/contrib/dev/acpica/utmutex.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: utmutex - local mutex support - * $Revision: 1.3 $ + * $Revision: 1.12 $ * ******************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2005, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2007, Intel Corp. * All rights reserved. * * 2. License @@ -153,13 +153,13 @@ AcpiUtMutexInitialize ( ACPI_STATUS Status; - ACPI_FUNCTION_TRACE ("UtMutexInitialize"); + ACPI_FUNCTION_TRACE (UtMutexInitialize); /* * Create each of the predefined mutex objects */ - for (i = 0; i < NUM_MUTEX; i++) + for (i = 0; i < ACPI_NUM_MUTEX; i++) { Status = AcpiUtCreateMutex (i); if (ACPI_FAILURE (Status)) @@ -168,7 +168,15 @@ AcpiUtMutexInitialize ( } } + /* Create the spinlocks for use at interrupt level */ + Status = AcpiOsCreateLock (&AcpiGbl_GpeLock); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + + Status = AcpiOsCreateLock (&AcpiGbl_HardwareLock); return_ACPI_STATUS (Status); } @@ -192,18 +200,21 @@ AcpiUtMutexTerminate ( UINT32 i; - ACPI_FUNCTION_TRACE ("UtMutexTerminate"); + ACPI_FUNCTION_TRACE (UtMutexTerminate); /* * Delete each predefined mutex object */ - for (i = 0; i < NUM_MUTEX; i++) + for (i = 0; i < ACPI_NUM_MUTEX; i++) { (void) AcpiUtDeleteMutex (i); } + /* Delete the spinlocks */ + AcpiOsDeleteLock (AcpiGbl_GpeLock); + AcpiOsDeleteLock (AcpiGbl_HardwareLock); return_VOID; } @@ -227,18 +238,17 @@ AcpiUtCreateMutex ( ACPI_STATUS Status = AE_OK; - ACPI_FUNCTION_TRACE_U32 ("UtCreateMutex", MutexId); + ACPI_FUNCTION_TRACE_U32 (UtCreateMutex, MutexId); - if (MutexId > MAX_MUTEX) + if (MutexId > ACPI_MAX_MUTEX) { return_ACPI_STATUS (AE_BAD_PARAMETER); } if (!AcpiGbl_MutexInfo[MutexId].Mutex) { - Status = AcpiOsCreateSemaphore (1, 1, - &AcpiGbl_MutexInfo[MutexId].Mutex); + Status = AcpiOsCreateMutex (&AcpiGbl_MutexInfo[MutexId].Mutex); AcpiGbl_MutexInfo[MutexId].ThreadId = ACPI_MUTEX_NOT_ACQUIRED; AcpiGbl_MutexInfo[MutexId].UseCount = 0; } @@ -263,23 +273,21 @@ static ACPI_STATUS AcpiUtDeleteMutex ( ACPI_MUTEX_HANDLE MutexId) { - ACPI_STATUS Status; - - ACPI_FUNCTION_TRACE_U32 ("UtDeleteMutex", MutexId); + ACPI_FUNCTION_TRACE_U32 (UtDeleteMutex, MutexId); - if (MutexId > MAX_MUTEX) + if (MutexId > ACPI_MAX_MUTEX) { return_ACPI_STATUS (AE_BAD_PARAMETER); } - Status = AcpiOsDeleteSemaphore (AcpiGbl_MutexInfo[MutexId].Mutex); + AcpiOsDeleteMutex (AcpiGbl_MutexInfo[MutexId].Mutex); AcpiGbl_MutexInfo[MutexId].Mutex = NULL; AcpiGbl_MutexInfo[MutexId].ThreadId = ACPI_MUTEX_NOT_ACQUIRED; - return_ACPI_STATUS (Status); + return_ACPI_STATUS (AE_OK); } @@ -300,13 +308,13 @@ AcpiUtAcquireMutex ( ACPI_MUTEX_HANDLE MutexId) { ACPI_STATUS Status; - UINT32 ThisThreadId; + ACPI_THREAD_ID ThisThreadId; - ACPI_FUNCTION_NAME ("UtAcquireMutex"); + ACPI_FUNCTION_NAME (UtAcquireMutex); - if (MutexId > MAX_MUTEX) + if (MutexId > ACPI_MAX_MUTEX) { return (AE_BAD_PARAMETER); } @@ -324,21 +332,21 @@ AcpiUtAcquireMutex ( * the mutex ordering rule. This indicates a coding error somewhere in * the ACPI subsystem code. */ - for (i = MutexId; i < MAX_MUTEX; i++) + for (i = MutexId; i < ACPI_MAX_MUTEX; i++) { if (AcpiGbl_MutexInfo[i].ThreadId == ThisThreadId) { if (i == MutexId) { - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, - "Mutex [%s] already acquired by this thread [%X]\n", + ACPI_ERROR ((AE_INFO, + "Mutex [%s] already acquired by this thread [%X]", AcpiUtGetMutexName (MutexId), ThisThreadId)); return (AE_ALREADY_ACQUIRED); } - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, - "Invalid acquire order: Thread %X owns [%s], wants [%s]\n", + ACPI_ERROR ((AE_INFO, + "Invalid acquire order: Thread %X owns [%s], wants [%s]", ThisThreadId, AcpiUtGetMutexName (i), AcpiUtGetMutexName (MutexId))); @@ -352,8 +360,8 @@ AcpiUtAcquireMutex ( "Thread %X attempting to acquire Mutex [%s]\n", ThisThreadId, AcpiUtGetMutexName (MutexId))); - Status = AcpiOsWaitSemaphore (AcpiGbl_MutexInfo[MutexId].Mutex, - 1, ACPI_WAIT_FOREVER); + Status = AcpiOsAcquireMutex (AcpiGbl_MutexInfo[MutexId].Mutex, + ACPI_WAIT_FOREVER); if (ACPI_SUCCESS (Status)) { ACPI_DEBUG_PRINT ((ACPI_DB_MUTEX, "Thread %X acquired Mutex [%s]\n", @@ -364,10 +372,8 @@ AcpiUtAcquireMutex ( } else { - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, - "Thread %X could not acquire Mutex [%s] %s\n", - ThisThreadId, AcpiUtGetMutexName (MutexId), - AcpiFormatException (Status))); + ACPI_EXCEPTION ((AE_INFO, Status, + "Thread %X could not acquire Mutex [%X]", ThisThreadId, MutexId)); } return (Status); @@ -390,11 +396,10 @@ ACPI_STATUS AcpiUtReleaseMutex ( ACPI_MUTEX_HANDLE MutexId) { - ACPI_STATUS Status; - UINT32 ThisThreadId; + ACPI_THREAD_ID ThisThreadId; - ACPI_FUNCTION_NAME ("UtReleaseMutex"); + ACPI_FUNCTION_NAME (UtReleaseMutex); ThisThreadId = AcpiOsGetThreadId (); @@ -402,7 +407,7 @@ AcpiUtReleaseMutex ( "Thread %X releasing Mutex [%s]\n", ThisThreadId, AcpiUtGetMutexName (MutexId))); - if (MutexId > MAX_MUTEX) + if (MutexId > ACPI_MAX_MUTEX) { return (AE_BAD_PARAMETER); } @@ -412,9 +417,8 @@ AcpiUtReleaseMutex ( */ if (AcpiGbl_MutexInfo[MutexId].ThreadId == ACPI_MUTEX_NOT_ACQUIRED) { - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, - "Mutex [%s] is not acquired, cannot release\n", - AcpiUtGetMutexName (MutexId))); + ACPI_ERROR ((AE_INFO, + "Mutex [%X] is not acquired, cannot release", MutexId)); return (AE_NOT_ACQUIRED); } @@ -430,7 +434,7 @@ AcpiUtReleaseMutex ( * ordering rule. This indicates a coding error somewhere in * the ACPI subsystem code. */ - for (i = MutexId; i < MAX_MUTEX; i++) + for (i = MutexId; i < ACPI_MAX_MUTEX; i++) { if (AcpiGbl_MutexInfo[i].ThreadId == ThisThreadId) { @@ -439,8 +443,8 @@ AcpiUtReleaseMutex ( continue; } - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, - "Invalid release order: owns [%s], releasing [%s]\n", + ACPI_ERROR ((AE_INFO, + "Invalid release order: owns [%s], releasing [%s]", AcpiUtGetMutexName (i), AcpiUtGetMutexName (MutexId))); return (AE_RELEASE_DEADLOCK); @@ -453,22 +457,8 @@ AcpiUtReleaseMutex ( AcpiGbl_MutexInfo[MutexId].ThreadId = ACPI_MUTEX_NOT_ACQUIRED; - Status = AcpiOsSignalSemaphore (AcpiGbl_MutexInfo[MutexId].Mutex, 1); - - if (ACPI_FAILURE (Status)) - { - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, - "Thread %X could not release Mutex [%s] %s\n", - ThisThreadId, AcpiUtGetMutexName (MutexId), - AcpiFormatException (Status))); - } - else - { - ACPI_DEBUG_PRINT ((ACPI_DB_MUTEX, "Thread %X released Mutex [%s]\n", - ThisThreadId, AcpiUtGetMutexName (MutexId))); - } - - return (Status); + AcpiOsReleaseMutex (AcpiGbl_MutexInfo[MutexId].Mutex); + return (AE_OK); } |