summaryrefslogtreecommitdiffstats
path: root/sys/dev/acpica/Osd
diff options
context:
space:
mode:
authorjkim <jkim@FreeBSD.org>2007-03-26 21:23:23 +0000
committerjkim <jkim@FreeBSD.org>2007-03-26 21:23:23 +0000
commit7765bdc45e986a303ab59985d488289eb67fa839 (patch)
tree16ad4be17b9b2c8395f70351c3d151d357c3edce /sys/dev/acpica/Osd
parent0236cc99b768a2d3425bf954c746f7eace24a26b (diff)
downloadFreeBSD-src-7765bdc45e986a303ab59985d488289eb67fa839.zip
FreeBSD-src-7765bdc45e986a303ab59985d488289eb67fa839.tar.gz
Correct ACPI spinlock function parameters and use known ACPI spinlock names.
Diffstat (limited to 'sys/dev/acpica/Osd')
-rw-r--r--sys/dev/acpica/Osd/OsdSynch.c45
1 files changed, 25 insertions, 20 deletions
diff --git a/sys/dev/acpica/Osd/OsdSynch.c b/sys/dev/acpica/Osd/OsdSynch.c
index 14a79f1..349c68b 100644
--- a/sys/dev/acpica/Osd/OsdSynch.c
+++ b/sys/dev/acpica/Osd/OsdSynch.c
@@ -323,38 +323,43 @@ AcpiOsSignalSemaphore(ACPI_HANDLE Handle, UINT32 Units)
}
/* Combined mutex + mutex name storage since the latter must persist. */
-struct acpi_mtx_msg {
- struct mtx mtx;
- char msg[32];
+struct acpi_spinlock {
+ struct mtx lock;
+ char name[32];
};
ACPI_STATUS
-AcpiOsCreateLock (ACPI_HANDLE *OutHandle)
+AcpiOsCreateLock (ACPI_SPINLOCK *OutHandle)
{
- struct acpi_mtx_msg *m;
+ struct acpi_spinlock *h;
if (OutHandle == NULL)
return (AE_BAD_PARAMETER);
- m = malloc(sizeof(*m), M_ACPISEM, M_NOWAIT | M_ZERO);
- if (m == NULL)
+ h = malloc(sizeof(struct acpi_spinlock), M_ACPISEM, M_NOWAIT | M_ZERO);
+ if (h == NULL)
return (AE_NO_MEMORY);
/* Build a unique name based on the address of the handle. */
- snprintf(m->msg, sizeof(m->msg), "acpi subsys %p", OutHandle);
- mtx_init(&m->mtx, m->msg, NULL, MTX_DEF);
- *OutHandle = (ACPI_HANDLE)m;
+ if (OutHandle == &AcpiGbl_GpeLock)
+ snprintf(h->name, sizeof(h->name), "acpi subsystem GPE lock");
+ if (OutHandle == &AcpiGbl_HardwareLock)
+ snprintf(h->name, sizeof(h->name), "acpi subsystem HW lock");
+ else
+ snprintf(h->name, sizeof(h->name), "acpi subsys %p", OutHandle);
+ mtx_init(&h->lock, h->name, NULL, MTX_DEF);
+ *OutHandle = (ACPI_SPINLOCK)h;
return (AE_OK);
}
void
-AcpiOsDeleteLock (ACPI_HANDLE Handle)
+AcpiOsDeleteLock (ACPI_SPINLOCK Handle)
{
- struct mtx *m = (struct mtx *)Handle;
+ struct acpi_spinlock *h = (struct acpi_spinlock *)Handle;
if (Handle == NULL)
return;
- mtx_destroy(m);
- free(m, M_ACPISEM);
+ mtx_destroy(&h->lock);
+ free(&h->lock, M_ACPISEM);
}
/*
@@ -363,24 +368,24 @@ AcpiOsDeleteLock (ACPI_HANDLE Handle)
* about potentially blocking.
*/
ACPI_NATIVE_UINT
-AcpiOsAcquireLock (ACPI_HANDLE Handle)
+AcpiOsAcquireLock (ACPI_SPINLOCK Handle)
{
- struct mtx *m = (struct mtx *)Handle;
+ struct acpi_spinlock *h = (struct acpi_spinlock *)Handle;
if (Handle == NULL)
return (0);
- mtx_lock(m);
+ mtx_lock(&h->lock);
return (0);
}
void
-AcpiOsReleaseLock (ACPI_HANDLE Handle, ACPI_NATIVE_UINT Flags)
+AcpiOsReleaseLock (ACPI_SPINLOCK Handle, ACPI_CPU_FLAGS Flags)
{
- struct mtx *m = (struct mtx *)Handle;
+ struct acpi_spinlock *h = (struct acpi_spinlock *)Handle;
if (Handle == NULL)
return;
- mtx_unlock(m);
+ mtx_unlock(&h->lock);
}
/* Section 5.2.9.1: global lock acquire/release functions */
OpenPOWER on IntegriCloud