From 315423e7575e9fc45933b9326b4d1168c508725e Mon Sep 17 00:00:00 2001 From: Roman Marchenko Date: Fri, 28 Apr 2017 12:48:01 +0300 Subject: [PATCH] add tbm_bufmgr_debug_tbm_info_get Change-Id: I57d3c6682705b620c3879cdbb95b42e17ffc5f48 Signed-off-by: Roman Marchenko --- src/tbm_bufmgr.c | 39 ++++++++++++++++++++++++--------------- src/tbm_bufmgr.h | 9 +++++++++ src/tbm_bufmgr_int.h | 14 ++++++++++++++ 3 files changed, 47 insertions(+), 15 deletions(-) diff --git a/src/tbm_bufmgr.c b/src/tbm_bufmgr.c index 3e39ea0..9398608 100644 --- a/src/tbm_bufmgr.c +++ b/src/tbm_bufmgr.c @@ -1450,7 +1450,7 @@ tbm_get_last_error(void) } void -tbm_bufmgr_debug_show(tbm_bufmgr bufmgr) +tbm_bufmgr_debug_tbm_info_get(tbm_bufmgr bufmgr, char *str, int *len) { char app_name[255] = {0,}, title[512] = {0,}; tbm_surface_debug_data *debug_old_data = NULL; @@ -1463,10 +1463,10 @@ tbm_bufmgr_debug_show(tbm_bufmgr bufmgr) return; } - TBM_DEBUG("\n"); + TBM_SNPRINTF(str, len, "\n"); _tbm_util_get_appname_from_pid(getpid(), app_name); _tbm_util_get_appname_brief(app_name); - TBM_DEBUG("============TBM DEBUG: %s(%d)===========================\n", + TBM_SNPRINTF(str, len, "============TBM DEBUG: %s(%d)===========================\n", app_name, getpid()); snprintf(title, 255, "%s", "no surface refcnt width height bpp size n_b n_p flags format app_name "); @@ -1478,8 +1478,8 @@ tbm_bufmgr_debug_show(tbm_bufmgr bufmgr) } } - TBM_DEBUG("[tbm_surface information]\n"); - TBM_DEBUG("%s\n", title); + TBM_SNPRINTF(str, len, "[tbm_surface information]\n"); + TBM_SNPRINTF(str, len, "%s\n", title); /* show the tbm_surface information in surf_list */ if (!LIST_IS_EMPTY(&bufmgr->surf_list)) { @@ -1528,21 +1528,21 @@ tbm_bufmgr_debug_show(tbm_bufmgr bufmgr) strncat(data, "none", 5); } } - TBM_DEBUG("%s\n", data); + TBM_SNPRINTF(str, len, "%s\n", data); for (i = 0; i < surf->num_bos; i++) { - TBM_DEBUG(" bo:%-12p %-26d%-10d\n", + TBM_SNPRINTF(str, len, " bo:%-12p %-26d%-10d\n", surf->bos[i], surf->bos[i]->ref_cnt, bufmgr->backend->bo_size(surf->bos[i]) / 1024); } } } else - TBM_DEBUG("no tbm_surfaces.\n"); - TBM_DEBUG("\n"); + TBM_SNPRINTF(str, len, " no tbm_surfaces.\n"); + TBM_SNPRINTF(str, len, "\n"); - TBM_DEBUG("[tbm_bo information]\n"); - TBM_DEBUG("no bo refcnt size lock_cnt map_cnt flags surface\n"); + TBM_SNPRINTF(str, len, "[tbm_bo information]\n"); + TBM_SNPRINTF(str, len, "no bo refcnt size lock_cnt map_cnt flags surface\n"); /* show the tbm_bo information in bo_list */ if (!LIST_IS_EMPTY(&bufmgr->bo_list)) { @@ -1550,7 +1550,7 @@ tbm_bufmgr_debug_show(tbm_bufmgr bufmgr) tbm_bo bo = NULL; LIST_FOR_EACH_ENTRY(bo, &bufmgr->bo_list, item_link) { - TBM_DEBUG("%-4d%-11p %-4d %-6d %-5d %-4u %-3d %-11p\n", + TBM_SNPRINTF(str, len, "%-4d%-11p %-4d %-6d %-5d %-4u %-3d %-11p\n", ++bo_cnt, bo, bo->ref_cnt, @@ -1561,15 +1561,24 @@ tbm_bufmgr_debug_show(tbm_bufmgr bufmgr) bo->surface); } } else - TBM_DEBUG("no tbm_bos.\n"); - TBM_DEBUG("\n"); + TBM_SNPRINTF(str, len, "no tbm_bos.\n"); + TBM_SNPRINTF(str, len, "\n"); - TBM_DEBUG("===============================================================\n"); + TBM_SNPRINTF(str, len, "===============================================================\n"); pthread_mutex_unlock(&gLock); } void +tbm_bufmgr_debug_show(tbm_bufmgr bufmgr) +{ + char str[1024*4]; + int len = sizeof(str); + tbm_bufmgr_debug_tbm_info_get(bufmgr, str, &len); + TBM_DEBUG(" %s", str); +} + +void tbm_bufmgr_debug_trace(tbm_bufmgr bufmgr, int onoff) { _tbm_bufmgr_mutex_lock(); diff --git a/src/tbm_bufmgr.h b/src/tbm_bufmgr.h index 366341d..6ba3edb 100644 --- a/src/tbm_bufmgr.h +++ b/src/tbm_bufmgr.h @@ -1029,6 +1029,15 @@ int tbm_bo_get_flags(tbm_bo bo); void tbm_bufmgr_debug_show(tbm_bufmgr bufmgr); /** + * @brief Print out to str the information of tbm_bos. + * @since_tizen 3.0 + * @param[in] bufmgr : the buffer manager + * @param[out] str : + * @param[out] len : + */ +void tbm_bufmgr_debug_tbm_info_get(tbm_bufmgr bufmgr, char * str, int * len); + +/** * @brief Print out the trace of tbm_bos. * @since_tizen 3.0 * @param[in] bufmgr : the buffer manager diff --git a/src/tbm_bufmgr_int.h b/src/tbm_bufmgr_int.h index 364ffd1..b6fcf7d 100644 --- a/src/tbm_bufmgr_int.h +++ b/src/tbm_bufmgr_int.h @@ -196,6 +196,20 @@ extern int bDlog; surf->item_link.next && \ surf->item_link.next->prev == &surf->item_link) + +#define TBM_SNPRINTF(p, len, fmt, ARG...) \ + do { \ + if (p && len && *len > 0) { \ + int s = snprintf(p, *len, fmt, ##ARG); \ + p += s; \ + *len -= s; \ + } \ + else { \ + TBM_DEBUG(fmt, ##ARG);\ + } \ + } while (0) + + struct list_head { struct list_head *prev; struct list_head *next; -- 2.7.4