Lines Matching refs:impl
107 static void put_pool(MppMemPoolSrv *srv, MppMemPoolImpl *impl, const char *caller) in put_pool() argument
111 if (impl != impl->check) { in put_pool()
112 mpp_err_f("invalid mem impl %p check %p at %s\n", impl, impl->check, caller); in put_pool()
116 if (impl->finalized) in put_pool()
119 pthread_mutex_lock(&impl->lock); in put_pool()
121 if (!list_empty(&impl->unused)) { in put_pool()
122 list_for_each_entry_safe(node, m, &impl->unused, MppMemPoolNode, list) { in put_pool()
124 impl->unused_count--; in put_pool()
128 if (!list_empty(&impl->used)) { in put_pool()
130 impl->name, impl->used_count, impl->size, caller); in put_pool()
132 list_for_each_entry_safe(node, m, &impl->used, MppMemPoolNode, list) { in put_pool()
134 impl->used_count--; in put_pool()
138 if (impl->used_count || impl->unused_count) in put_pool()
140 impl->name, impl->size, impl->used_count, impl->unused_count, caller); in put_pool()
142 pthread_mutex_unlock(&impl->lock); in put_pool()
146 list_del_init(&impl->service_link); in put_pool()
150 impl->finalized = 1; in put_pool()
151 mpp_free(impl); in put_pool()
220 MppMemPoolImpl *impl = (MppMemPoolImpl *)pool; in mpp_mem_pool_deinit() local
223 impl->name, impl->size, caller); in mpp_mem_pool_deinit()
225 put_pool(srv, impl, caller); in mpp_mem_pool_deinit()
230 MppMemPoolImpl *impl = (MppMemPoolImpl *)pool; in mpp_mem_pool_get() local
234 pthread_mutex_lock(&impl->lock); in mpp_mem_pool_get()
237 impl->name, impl->size, impl->used_count, impl->unused_count, caller); in mpp_mem_pool_get()
239 if (!list_empty(&impl->unused)) { in mpp_mem_pool_get()
240 node = list_first_entry(&impl->unused, MppMemPoolNode, list); in mpp_mem_pool_get()
243 list_add_tail(&node->list, &impl->used); in mpp_mem_pool_get()
244 impl->unused_count--; in mpp_mem_pool_get()
245 impl->used_count++; in mpp_mem_pool_get()
252 node = mpp_malloc_size(MppMemPoolNode, sizeof(MppMemPoolNode) + impl->size); in mpp_mem_pool_get()
254 mpp_err_f("failed to create node from size %4d pool\n", impl->size); in mpp_mem_pool_get()
260 node->size = impl->size; in mpp_mem_pool_get()
262 list_add_tail(&node->list, &impl->used); in mpp_mem_pool_get()
263 impl->used_count++; in mpp_mem_pool_get()
267 pthread_mutex_unlock(&impl->lock); in mpp_mem_pool_get()
275 MppMemPoolImpl *impl = (MppMemPoolImpl *)pool; in mpp_mem_pool_put() local
278 if (impl != impl->check) { in mpp_mem_pool_put()
279 mpp_err_f("invalid mem pool %p check %p\n", impl, impl->check); in mpp_mem_pool_put()
289 pthread_mutex_lock(&impl->lock); in mpp_mem_pool_put()
292 impl->name, impl->size, impl->used_count, impl->unused_count, caller); in mpp_mem_pool_put()
295 list_add(&node->list, &impl->unused); in mpp_mem_pool_put()
296 impl->used_count--; in mpp_mem_pool_put()
297 impl->unused_count++; in mpp_mem_pool_put()
300 pthread_mutex_unlock(&impl->lock); in mpp_mem_pool_put()