commit 12a6b3610b82e5370bf32f3c3ea5ac1fae46bb63 Author: Andriy Gapon Date: Sun Dec 23 19:52:26 2012 +0200 [test] acpi: use uma instead of acpica internal object cache implementation diff --git a/sys/contrib/dev/acpica/include/platform/acfreebsd.h b/sys/contrib/dev/acpica/include/platform/acfreebsd.h index d7aa7ed..2f2abd6 100644 --- a/sys/contrib/dev/acpica/include/platform/acfreebsd.h +++ b/sys/contrib/dev/acpica/include/platform/acfreebsd.h @@ -54,7 +54,6 @@ #define ACPI_UINTPTR_T uintptr_t #define ACPI_USE_DO_WHILE_0 -#define ACPI_USE_LOCAL_CACHE #define ACPI_USE_SYSTEM_CLIBRARY #ifdef _KERNEL @@ -64,9 +63,11 @@ #include #include #include +#include #include "opt_acpi.h" +#define ACPI_CACHE_T struct uma_zone #define ACPI_MUTEX_TYPE ACPI_OSL_MUTEX #ifdef ACPI_DEBUG diff --git a/sys/dev/acpica/Osd/OsdMemory.c b/sys/dev/acpica/Osd/OsdMemory.c index b806642..5108f04 100644 --- a/sys/dev/acpica/Osd/OsdMemory.c +++ b/sys/dev/acpica/Osd/OsdMemory.c @@ -39,6 +39,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include static MALLOC_DEFINE(M_ACPICA, "acpica", "ACPI CA memory pool"); @@ -143,3 +144,39 @@ AcpiOsWriteMemory(ACPI_PHYSICAL_ADDRESS Address, UINT64 Value, UINT32 Width) return (AE_OK); } + +ACPI_STATUS +AcpiOsCreateCache(char *CacheName, UINT16 ObjectSize, UINT16 MaxDepth, + ACPI_CACHE_T **ReturnCache) +{ + *ReturnCache = uma_zcreate(CacheName, ObjectSize, NULL, NULL, NULL, NULL, + UMA_ALIGN_PTR, 0); + return (AE_OK); +} + +ACPI_STATUS +AcpiOsDeleteCache(ACPI_CACHE_T *Cache) +{ + uma_zdestroy(Cache); + return (AE_OK); +} + +ACPI_STATUS +AcpiOsPurgeCache(ACPI_CACHE_T *Cache) +{ + zone_drain(Cache); + return (AE_OK); +} + +void * +AcpiOsAcquireObject(ACPI_CACHE_T *Cache) +{ + return uma_zalloc(Cache, M_ZERO | M_WAITOK); +} + +ACPI_STATUS +AcpiOsReleaseObject(ACPI_CACHE_T *Cache, void *Object) +{ + uma_zfree(Cache, Object); + return (AE_OK); +}