Lines Matching refs:impl
74 void put_pool(MppMemPoolImpl *impl);
127 void MppMemPoolService::put_pool(MppMemPoolImpl *impl) in put_pool() argument
131 if (impl != impl->check) { in put_pool()
132 mpp_err_f("invalid mem impl %p check %p\n", impl, impl->check); in put_pool()
136 if (impl->finalized) in put_pool()
139 pthread_mutex_lock(&impl->lock); in put_pool()
141 if (!list_empty(&impl->unused)) { in put_pool()
142 list_for_each_entry_safe(node, m, &impl->unused, MppMemPoolNode, list) { in put_pool()
144 impl->unused_count--; in put_pool()
148 if (!list_empty(&impl->used)) { in put_pool()
150 impl->used_count, impl->size); in put_pool()
152 list_for_each_entry_safe(node, m, &impl->used, MppMemPoolNode, list) { in put_pool()
154 impl->used_count--; in put_pool()
158 if (impl->used_count || impl->unused_count) in put_pool()
160 impl->size, impl->used_count, impl->unused_count); in put_pool()
162 pthread_mutex_unlock(&impl->lock); in put_pool()
166 list_del_init(&impl->service_link); in put_pool()
169 impl->finalized = 1; in put_pool()
170 mpp_free(impl); in put_pool()
182 MppMemPoolImpl *impl = (MppMemPoolImpl *)pool; in mpp_mem_pool_deinit_f() local
184 mem_pool_dbg_flow("pool %d deinit from %s", impl->size, caller); in mpp_mem_pool_deinit_f()
186 MppMemPoolService::getInstance()->put_pool(impl); in mpp_mem_pool_deinit_f()
191 MppMemPoolImpl *impl = (MppMemPoolImpl *)pool; in mpp_mem_pool_get_f() local
195 pthread_mutex_lock(&impl->lock); in mpp_mem_pool_get_f()
197 mem_pool_dbg_flow("pool %d get used:unused [%d:%d] from %s", impl->size, in mpp_mem_pool_get_f()
198 impl->used_count, impl->unused_count, caller); in mpp_mem_pool_get_f()
200 if (!list_empty(&impl->unused)) { in mpp_mem_pool_get_f()
201 node = list_first_entry(&impl->unused, MppMemPoolNode, list); in mpp_mem_pool_get_f()
204 list_add_tail(&node->list, &impl->used); in mpp_mem_pool_get_f()
205 impl->unused_count--; in mpp_mem_pool_get_f()
206 impl->used_count++; in mpp_mem_pool_get_f()
213 node = mpp_malloc_size(MppMemPoolNode, sizeof(MppMemPoolNode) + impl->size); in mpp_mem_pool_get_f()
215 mpp_err_f("failed to create node from size %d pool\n", impl->size); in mpp_mem_pool_get_f()
221 node->size = impl->size; in mpp_mem_pool_get_f()
223 list_add_tail(&node->list, &impl->used); in mpp_mem_pool_get_f()
224 impl->used_count++; in mpp_mem_pool_get_f()
228 pthread_mutex_unlock(&impl->lock); in mpp_mem_pool_get_f()
236 MppMemPoolImpl *impl = (MppMemPoolImpl *)pool; in mpp_mem_pool_put_f() local
239 if (impl != impl->check) { in mpp_mem_pool_put_f()
240 mpp_err_f("invalid mem pool %p check %p\n", impl, impl->check); in mpp_mem_pool_put_f()
250 pthread_mutex_lock(&impl->lock); in mpp_mem_pool_put_f()
252 mem_pool_dbg_flow("pool %d put used:unused [%d:%d] from %s", impl->size, in mpp_mem_pool_put_f()
253 impl->used_count, impl->unused_count, caller); in mpp_mem_pool_put_f()
256 list_add(&node->list, &impl->unused); in mpp_mem_pool_put_f()
257 impl->used_count--; in mpp_mem_pool_put_f()
258 impl->unused_count++; in mpp_mem_pool_put_f()
261 pthread_mutex_unlock(&impl->lock); in mpp_mem_pool_put_f()