From: Petri Savolainen <petri.savolai...@linaro.org>

Use ODP_PRINT instead of ODP_DBG in the print function.
The idea of a print function is that it prints information
when application calls it. ODP_DBG does not print anything
by default.

Format printted output to be a readable table of shm blocks.

Signed-off-by: Petri Savolainen <petri.savolai...@linaro.org>
---
/** Email created from pull request 246 (psavol:next-shm-print)
 ** https://github.com/Linaro/odp/pull/246
 ** Patch: https://github.com/Linaro/odp/pull/246.patch
 ** Base sha: e3108af2f0b58c2ceca422b418439bba5de04b11
 ** Merge commit sha: d02ca128bb3e497ed54c1224b5bd9d9f707870b3
 **/
 platform/linux-generic/_ishm.c | 69 +++++++++++++++++++++++++-----------------
 1 file changed, 42 insertions(+), 27 deletions(-)

diff --git a/platform/linux-generic/_ishm.c b/platform/linux-generic/_ishm.c
index 6e5bc61fe..e7a6c2357 100644
--- a/platform/linux-generic/_ishm.c
+++ b/platform/linux-generic/_ishm.c
@@ -1708,11 +1708,28 @@ int _odp_ishm_status(const char *title)
        int nb_allocated_frgments = 0;  /* nb frag describing an allocated VA */
        int nb_blocks = 0;
        int single_va_blocks = 0;
+       int max_name_len = 0;
 
        odp_spinlock_lock(&ishm_tbl->lock);
        procsync();
 
-       ODP_DBG("ishm blocks allocated at: %s\n", title);
+       /* find longest block name */
+       for (i = 0; i < ISHM_MAX_NB_BLOCKS; i++) {
+               int str_len;
+
+               if (ishm_tbl->block[i].len <= 0)
+                       continue;
+
+               str_len = strlen(ishm_tbl->block[i].name);
+
+               if (max_name_len < str_len)
+                       max_name_len = str_len;
+       }
+
+       ODP_PRINT("ishm blocks allocated at: %s\n", title);
+
+       ODP_PRINT("    %-*s flag len        user_len seq ref start        fd"
+                 "  file\n", max_name_len, "name");
 
        /* display block table: 1 line per entry +1 extra line if mapped here */
        for (i = 0; i < ISHM_MAX_NB_BLOCKS; i++) {
@@ -1742,41 +1759,39 @@ int _odp_ishm_status(const char *title)
                        huge = '?';
                }
                proc_index = procfind_block(i);
-               ODP_DBG("%-3d:  name:%-.24s file:%-.24s"
-                       " flags:%s,%c len:0x%-08lx"
-                       " user_len:%-8ld seq:%-3ld refcnt:%-4d\n",
-                       i,
-                       ishm_tbl->block[i].name,
-                       ishm_tbl->block[i].filename,
-                       flags, huge,
-                       ishm_tbl->block[i].len,
-                       ishm_tbl->block[i].user_len,
-                       ishm_tbl->block[i].seq,
-                       ishm_tbl->block[i].refcnt);
+               ODP_PRINT("%2i  %-*s %s%c  0x%-08lx %-8lu %-3lu %-3lu",
+                         i, max_name_len, ishm_tbl->block[i].name,
+                         flags, huge,
+                         ishm_tbl->block[i].len,
+                         ishm_tbl->block[i].user_len,
+                         ishm_tbl->block[i].seq,
+                         ishm_tbl->block[i].refcnt);
 
                if (proc_index < 0)
                        continue;
 
-               ODP_DBG("    start:%-08lx fd:%-3d\n",
-                       ishm_proctable->entry[proc_index].start,
-                       ishm_proctable->entry[proc_index].fd);
+               ODP_PRINT("%-08lx %-3d",
+                         ishm_proctable->entry[proc_index].start,
+                         ishm_proctable->entry[proc_index].fd);
+
+               ODP_PRINT("%s\n", ishm_tbl->block[i].filename);
        }
 
        /* display the virtual space allocations... : */
-       ODP_DBG("ishm virtual space:\n");
+       ODP_PRINT("\nishm virtual space:\n");
        for (fragmnt = ishm_ftbl->used_fragmnts;
             fragmnt; fragmnt = fragmnt->next) {
                if (fragmnt->block_index >= 0) {
                        nb_allocated_frgments++;
-                       ODP_DBG("  %08p - %08p: ALLOCATED by block:%d\n",
-                               (uintptr_t)fragmnt->start,
-                               (uintptr_t)fragmnt->start + fragmnt->len - 1,
-                               fragmnt->block_index);
+                       ODP_PRINT("  %08p - %08p: ALLOCATED by block:%d\n",
+                                 (uintptr_t)fragmnt->start,
+                                 (uintptr_t)fragmnt->start + fragmnt->len - 1,
+                                 fragmnt->block_index);
                        consecutive_unallocated = 0;
                } else {
-                       ODP_DBG("  %08p - %08p: NOT ALLOCATED\n",
-                               (uintptr_t)fragmnt->start,
-                               (uintptr_t)fragmnt->start + fragmnt->len - 1);
+                       ODP_PRINT("  %08p - %08p: NOT ALLOCATED\n",
+                                 (uintptr_t)fragmnt->start,
+                                 (uintptr_t)fragmnt->start + fragmnt->len - 1);
                        if (consecutive_unallocated++)
                                ODP_ERR("defragmentation error\n");
                }
@@ -1807,9 +1822,9 @@ int _odp_ishm_status(const char *title)
             fragmnt; fragmnt = fragmnt->next)
                nb_unused_frgments++;
 
-       ODP_DBG("ishm: %d fragment used. %d fragments unused. (total=%d)\n",
-               nb_used_frgments, nb_unused_frgments,
-               nb_used_frgments + nb_unused_frgments);
+       ODP_PRINT("ishm: %d fragment used. %d fragments unused. (total=%d)\n",
+                 nb_used_frgments, nb_unused_frgments,
+                 nb_used_frgments + nb_unused_frgments);
 
        if ((nb_used_frgments + nb_unused_frgments) != ISHM_NB_FRAGMNTS)
                ODP_ERR("lost fragments!\n");
@@ -1817,7 +1832,7 @@ int _odp_ishm_status(const char *title)
        if (nb_blocks < ishm_proctable->nb_entries)
                ODP_ERR("process known block cannot exceed main total sum!\n");
 
-       ODP_DBG("\n");
+       ODP_PRINT("\n");
 
        odp_spinlock_unlock(&ishm_tbl->lock);
        return nb_blocks;

Reply via email to