fix[mpp_mem_pool]: Record pool buffer allocator caller

Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: I21650f2af92e73f965a73f1748082556ae0ba516
This commit is contained in:
Herman Chen
2024-12-12 14:36:21 +08:00
parent fea856cd27
commit c7cf58b5c7

View File

@@ -44,6 +44,7 @@ typedef struct MppMemPoolNode_t {
typedef struct MppMemPoolImpl_t { typedef struct MppMemPoolImpl_t {
void *check; void *check;
const char *caller;
size_t size; size_t size;
pthread_mutex_t lock; pthread_mutex_t lock;
struct list_head service_link; struct list_head service_link;
@@ -70,7 +71,7 @@ public:
return &lock; return &lock;
} }
MppMemPoolImpl *get_pool(size_t size); MppMemPoolImpl *get_pool(const char *caller, size_t size);
void put_pool(MppMemPoolImpl *impl); void put_pool(MppMemPoolImpl *impl);
private: private:
@@ -97,7 +98,7 @@ MppMemPoolService::~MppMemPoolService()
} }
} }
MppMemPoolImpl *MppMemPoolService::get_pool(size_t size) MppMemPoolImpl *MppMemPoolService::get_pool(const char *caller, size_t size)
{ {
MppMemPoolImpl *pool = mpp_malloc(MppMemPoolImpl, 1); MppMemPoolImpl *pool = mpp_malloc(MppMemPoolImpl, 1);
if (NULL == pool) if (NULL == pool)
@@ -110,6 +111,7 @@ MppMemPoolImpl *MppMemPoolService::get_pool(size_t size)
pthread_mutexattr_destroy(&attr); pthread_mutexattr_destroy(&attr);
pool->check = pool; pool->check = pool;
pool->caller = caller;
pool->size = size; pool->size = size;
pool->used_count = 0; pool->used_count = 0;
pool->unused_count = 0; pool->unused_count = 0;
@@ -146,8 +148,8 @@ void MppMemPoolService::put_pool(MppMemPoolImpl *impl)
} }
if (!list_empty(&impl->used)) { if (!list_empty(&impl->used)) {
mpp_err_f("found %d used buffer size %d\n", mpp_err_f("pool %s found %d used buffer size %d\n",
impl->used_count, impl->size); impl->caller, impl->used_count, impl->size);
list_for_each_entry_safe(node, m, &impl->used, MppMemPoolNode, list) { list_for_each_entry_safe(node, m, &impl->used, MppMemPoolNode, list) {
MPP_FREE(node); MPP_FREE(node);
@@ -156,8 +158,8 @@ void MppMemPoolService::put_pool(MppMemPoolImpl *impl)
} }
if (impl->used_count || impl->unused_count) if (impl->used_count || impl->unused_count)
mpp_err_f("pool size %d found leaked buffer used:unused [%d:%d]\n", mpp_err_f("pool %s size %d found leaked buffer used:unused [%d:%d]\n",
impl->size, impl->used_count, impl->unused_count); impl->caller, impl->size, impl->used_count, impl->unused_count);
pthread_mutex_unlock(&impl->lock); pthread_mutex_unlock(&impl->lock);
@@ -174,7 +176,7 @@ MppMemPool mpp_mem_pool_init_f(const char *caller, size_t size)
{ {
mem_pool_dbg_flow("pool %d init from %s", size, caller); mem_pool_dbg_flow("pool %d init from %s", size, caller);
return (MppMemPool)MppMemPoolService::getInstance()->get_pool(size); return (MppMemPool)MppMemPoolService::getInstance()->get_pool(caller, size);
} }
void mpp_mem_pool_deinit_f(const char *caller, MppMemPool pool) void mpp_mem_pool_deinit_f(const char *caller, MppMemPool pool)