mirror of
https://github.com/apache/nuttx.git
synced 2026-06-04 14:53:47 +08:00
mm: dump node overheadp during memdump
Signed-off-by: xuxingliang <xuxingliang@xiaomi.com>
This commit is contained in:
@@ -187,6 +187,7 @@ static void mempool_memdump_callback(FAR struct mempool_s *pool,
|
||||
FAR const void *input, FAR void *output)
|
||||
{
|
||||
size_t blocksize = MEMPOOL_REALBLOCKSIZE(pool);
|
||||
size_t overhead = blocksize - pool->blocksize;
|
||||
FAR const struct mm_memdump_s *dump = input;
|
||||
|
||||
if (buf->magic == MEMPOOL_MAGIC_FREE)
|
||||
@@ -206,8 +207,8 @@ static void mempool_memdump_callback(FAR struct mempool_s *pool,
|
||||
FAR const char *tmp = "";
|
||||
# endif
|
||||
|
||||
syslog(LOG_INFO, "%6d%12zu%12lu%*p%s\n",
|
||||
buf->pid, blocksize, buf->seqno,
|
||||
syslog(LOG_INFO, "%6d%12zu%9zu%12lu%*p %s\n",
|
||||
buf->pid, blocksize, overhead, buf->seqno,
|
||||
BACKTRACE_PTR_FMT_WIDTH,
|
||||
((FAR char *)buf - pool->blocksize), tmp);
|
||||
}
|
||||
@@ -219,11 +220,12 @@ mempool_memdump_free_callback(FAR struct mempool_s *pool,
|
||||
FAR const void *input, FAR void *output)
|
||||
{
|
||||
size_t blocksize = MEMPOOL_REALBLOCKSIZE(pool);
|
||||
size_t overhead = blocksize - pool->blocksize;
|
||||
|
||||
if (buf->magic == MEMPOOL_MAGIC_FREE)
|
||||
{
|
||||
syslog(LOG_INFO, "%12zu%*p\n",
|
||||
blocksize, BACKTRACE_PTR_FMT_WIDTH,
|
||||
syslog(LOG_INFO, "%12zu%9zu%*p\n",
|
||||
blocksize, overhead, BACKTRACE_PTR_FMT_WIDTH,
|
||||
((FAR char *)buf - pool->blocksize));
|
||||
}
|
||||
}
|
||||
@@ -587,11 +589,12 @@ void mempool_memdump(FAR struct mempool_s *pool,
|
||||
}
|
||||
#else
|
||||
size_t blocksize = MEMPOOL_REALBLOCKSIZE(pool);
|
||||
size_t overhead = blocksize - pool->blocksize;
|
||||
|
||||
/* Avoid race condition */
|
||||
|
||||
syslog(LOG_INFO, "%12zu%*p skip block dump\n",
|
||||
blocksize, BACKTRACE_PTR_FMT_WIDTH, pool);
|
||||
syslog(LOG_INFO, "%12zu%9zu%*p skip block dump\n",
|
||||
blocksize, overhead, BACKTRACE_PTR_FMT_WIDTH, pool);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
+15
-11
@@ -60,13 +60,14 @@ struct mm_memdump_priv_s
|
||||
static void memdump_allocnode(FAR struct mm_allocnode_s *node)
|
||||
{
|
||||
size_t nodesize = MM_SIZEOF_NODE(node);
|
||||
size_t overhead = MM_SIZEOF_ALLOCNODE;
|
||||
#if CONFIG_MM_BACKTRACE < 0
|
||||
syslog(LOG_INFO, "%12zu%*p\n",
|
||||
nodesize, BACKTRACE_PTR_FMT_WIDTH,
|
||||
syslog(LOG_INFO, "%12zu%9zu%*p\n",
|
||||
nodesize, overhead, BACKTRACE_PTR_FMT_WIDTH,
|
||||
(FAR const char *)node + MM_SIZEOF_ALLOCNODE);
|
||||
#elif CONFIG_MM_BACKTRACE == 0
|
||||
syslog(LOG_INFO, "%6d%12zu%12lu%*p\n",
|
||||
node->pid, nodesize, node->seqno,
|
||||
syslog(LOG_INFO, "%6d%12zu%9zu%12lu%*p\n",
|
||||
node->pid, nodesize, overhead, node->seqno,
|
||||
BACKTRACE_PTR_FMT_WIDTH,
|
||||
(FAR const char *)node + MM_SIZEOF_ALLOCNODE);
|
||||
#else
|
||||
@@ -75,8 +76,8 @@ static void memdump_allocnode(FAR struct mm_allocnode_s *node)
|
||||
backtrace_format(buf, sizeof(buf), node->backtrace,
|
||||
CONFIG_MM_BACKTRACE);
|
||||
|
||||
syslog(LOG_INFO, "%6d%12zu%12lu%*p %s\n",
|
||||
node->pid, nodesize, node->seqno,
|
||||
syslog(LOG_INFO, "%6d%12zu%9zu%12lu%*p %s\n",
|
||||
node->pid, nodesize, overhead, node->seqno,
|
||||
BACKTRACE_PTR_FMT_WIDTH,
|
||||
(FAR const char *)node + MM_SIZEOF_ALLOCNODE, buf);
|
||||
#endif
|
||||
@@ -202,8 +203,8 @@ static void memdump_handler(FAR struct mm_allocnode_s *node, FAR void *arg)
|
||||
|
||||
priv->info.aordblks++;
|
||||
priv->info.uordblks += nodesize;
|
||||
syslog(LOG_INFO, "%12zu%*p\n",
|
||||
nodesize, BACKTRACE_PTR_FMT_WIDTH,
|
||||
syslog(LOG_INFO, "%12zu%9zu%*p\n",
|
||||
nodesize, MM_ALLOCNODE_OVERHEAD, BACKTRACE_PTR_FMT_WIDTH,
|
||||
((FAR char *)node + MM_SIZEOF_ALLOCNODE));
|
||||
}
|
||||
}
|
||||
@@ -288,10 +289,13 @@ void mm_memdump(FAR struct mm_heap_s *heap,
|
||||
}
|
||||
|
||||
#if CONFIG_MM_BACKTRACE < 0
|
||||
syslog(LOG_INFO, "%12s%*s\n", "Size", BACKTRACE_PTR_FMT_WIDTH, "Address");
|
||||
syslog(LOG_INFO, "%12s%9s%*s\n", "Size", "Overhead",
|
||||
BACKTRACE_PTR_FMT_WIDTH,
|
||||
"Address");
|
||||
#else
|
||||
syslog(LOG_INFO, "%6s%12s%12s%*s %s\n", "PID", "Size", "Sequence",
|
||||
BACKTRACE_PTR_FMT_WIDTH, "Address", "Backtrace");
|
||||
syslog(LOG_INFO, "%6s%12s%9s%12s%*s %s\n", "PID", "Size", "Overhead",
|
||||
"Sequence", BACKTRACE_PTR_FMT_WIDTH,
|
||||
"Address", "Backtrace");
|
||||
#endif
|
||||
|
||||
memdump_dump_pool(&priv, heap);
|
||||
|
||||
Reference in New Issue
Block a user