diff options
author | Jung-uk Kim <jkim@FreeBSD.org> | 2007-09-24 17:12:36 +0000 |
---|---|---|
committer | Jung-uk Kim <jkim@FreeBSD.org> | 2007-09-24 17:12:36 +0000 |
commit | 66244a7bdd1ab681405a637139a6eff7ef5d403b (patch) | |
tree | a28daa1f294c591d2754125dda203b82bc7a6444 | |
parent | 1859f337c47d9b8f944f93e80b08d698c4b66e11 (diff) | |
download | src-test2-66244a7bdd1ab681405a637139a6eff7ef5d403b.tar.gz src-test2-66244a7bdd1ab681405a637139a6eff7ef5d403b.zip |
Notes
-rw-r--r-- | sys/contrib/dev/acpica/evmisc.c | 14 | ||||
-rw-r--r-- | sys/contrib/dev/acpica/evxface.c | 11 |
2 files changed, 15 insertions, 10 deletions
diff --git a/sys/contrib/dev/acpica/evmisc.c b/sys/contrib/dev/acpica/evmisc.c index 881519f0e6bc..7000543f114b 100644 --- a/sys/contrib/dev/acpica/evmisc.c +++ b/sys/contrib/dev/acpica/evmisc.c @@ -568,6 +568,20 @@ AcpiEvAcquireGlobalLock ( } /* + * Update the global lock handle and check for wraparound. The handle is + * only used for the external global lock interfaces, but it is updated + * here to properly handle the case where a single thread may acquire the + * lock via both the AML and the AcpiAcquireGlobalLock interfaces. The + * handle is therefore updated on the first acquire from a given thread + * regardless of where the acquisition request originated. + */ + AcpiGbl_GlobalLockHandle++; + if (AcpiGbl_GlobalLockHandle == 0) + { + AcpiGbl_GlobalLockHandle = 1; + } + + /* * Make sure that a global lock actually exists. If not, just treat * the lock as a standard mutex. */ diff --git a/sys/contrib/dev/acpica/evxface.c b/sys/contrib/dev/acpica/evxface.c index 021ebf7f88e6..15fbc9c65047 100644 --- a/sys/contrib/dev/acpica/evxface.c +++ b/sys/contrib/dev/acpica/evxface.c @@ -921,16 +921,7 @@ AcpiAcquireGlobalLock ( if (ACPI_SUCCESS (Status)) { - /* - * If this was the first acquisition of the Global Lock by this thread, - * create a new handle. Otherwise, return the existing handle. - */ - if (AcpiGbl_GlobalLockMutex->Mutex.AcquisitionDepth == 1) - { - AcpiGbl_GlobalLockHandle++; - } - - /* Return the global lock handle */ + /* Return the global lock handle (updated in AcpiEvAcquireGlobalLock) */ *Handle = AcpiGbl_GlobalLockHandle; } |