Lines Matching full:cache

3  * Module Name: utcache - local cache allocation routines
56 * PARAMETERS: CacheName - Ascii name for the cache
58 * MaxDepth - Maximum depth of the cache (in objects)
59 * ReturnCache - Where the new cache object is returned
63 * DESCRIPTION: Create a cache object
74 ACPI_MEMORY_LIST *Cache; in AcpiOsCreateCache() local
85 /* Create the cache object */ in AcpiOsCreateCache()
87 Cache = AcpiOsAllocate (sizeof (ACPI_MEMORY_LIST)); in AcpiOsCreateCache()
88 if (!Cache) in AcpiOsCreateCache()
93 /* Populate the cache object and return it */ in AcpiOsCreateCache()
95 memset (Cache, 0, sizeof (ACPI_MEMORY_LIST)); in AcpiOsCreateCache()
96 Cache->ListName = __UNCONST(CacheName); in AcpiOsCreateCache()
97 Cache->ObjectSize = ObjectSize; in AcpiOsCreateCache()
98 Cache->MaxDepth = MaxDepth; in AcpiOsCreateCache()
100 *ReturnCache = Cache; in AcpiOsCreateCache()
109 * PARAMETERS: Cache - Handle to cache object
113 * DESCRIPTION: Free all objects within the requested cache.
119 ACPI_MEMORY_LIST *Cache) in AcpiOsPurgeCache() argument
128 if (!Cache) in AcpiOsPurgeCache()
139 /* Walk the list of objects in this cache */ in AcpiOsPurgeCache()
141 while (Cache->ListHead) in AcpiOsPurgeCache()
145 Next = ACPI_GET_DESCRIPTOR_PTR (Cache->ListHead); in AcpiOsPurgeCache()
146 ACPI_FREE (Cache->ListHead); in AcpiOsPurgeCache()
148 Cache->ListHead = Next; in AcpiOsPurgeCache()
149 Cache->CurrentDepth--; in AcpiOsPurgeCache()
161 * PARAMETERS: Cache - Handle to cache object
165 * DESCRIPTION: Free all objects within the requested cache and delete the
166 * cache object.
172 ACPI_MEMORY_LIST *Cache) in AcpiOsDeleteCache() argument
180 /* Purge all objects in the cache */ in AcpiOsDeleteCache()
182 Status = AcpiOsPurgeCache (Cache); in AcpiOsDeleteCache()
188 /* Now we can delete the cache object */ in AcpiOsDeleteCache()
190 AcpiOsFree (Cache); in AcpiOsDeleteCache()
199 * PARAMETERS: Cache - Handle to cache object
204 * DESCRIPTION: Release an object to the specified cache. If cache is full,
211 ACPI_MEMORY_LIST *Cache, in AcpiOsReleaseObject() argument
220 if (!Cache || !Object) in AcpiOsReleaseObject()
225 /* If cache is full, just free this object */ in AcpiOsReleaseObject()
227 if (Cache->CurrentDepth >= Cache->MaxDepth) in AcpiOsReleaseObject()
230 ACPI_MEM_TRACKING (Cache->TotalFreed++); in AcpiOsReleaseObject()
233 /* Otherwise put this object back into the cache */ in AcpiOsReleaseObject()
245 memset (Object, 0xCA, Cache->ObjectSize); in AcpiOsReleaseObject()
248 /* Put the object at the head of the cache list */ in AcpiOsReleaseObject()
250 ACPI_SET_DESCRIPTOR_PTR (Object, Cache->ListHead); in AcpiOsReleaseObject()
251 Cache->ListHead = Object; in AcpiOsReleaseObject()
252 Cache->CurrentDepth++; in AcpiOsReleaseObject()
265 * PARAMETERS: Cache - Handle to cache object
269 * DESCRIPTION: Get an object from the specified cache. If cache is empty,
276 ACPI_MEMORY_LIST *Cache) in AcpiOsAcquireObject() argument
285 if (!Cache) in AcpiOsAcquireObject()
296 ACPI_MEM_TRACKING (Cache->Requests++); in AcpiOsAcquireObject()
298 /* Check the cache first */ in AcpiOsAcquireObject()
300 if (Cache->ListHead) in AcpiOsAcquireObject()
304 Object = Cache->ListHead; in AcpiOsAcquireObject()
305 Cache->ListHead = ACPI_GET_DESCRIPTOR_PTR (Object); in AcpiOsAcquireObject()
307 Cache->CurrentDepth--; in AcpiOsAcquireObject()
309 ACPI_MEM_TRACKING (Cache->Hits++); in AcpiOsAcquireObject()
311 "%s: Object %p from %s cache\n", in AcpiOsAcquireObject()
312 ACPI_GET_FUNCTION_NAME, Object, Cache->ListName)); in AcpiOsAcquireObject()
322 memset (Object, 0, Cache->ObjectSize); in AcpiOsAcquireObject()
326 /* The cache is empty, create a new object */ in AcpiOsAcquireObject()
328 ACPI_MEM_TRACKING (Cache->TotalAllocated++); in AcpiOsAcquireObject()
331 if ((Cache->TotalAllocated - Cache->TotalFreed) > Cache->MaxOccupied) in AcpiOsAcquireObject()
333 Cache->MaxOccupied = Cache->TotalAllocated - Cache->TotalFreed; in AcpiOsAcquireObject()
345 Object = ACPI_ALLOCATE_ZEROED (Cache->ObjectSize); in AcpiOsAcquireObject()