.file = __FILE__, .line = __LINE__, \
.type = MEM_STATS_TYPE_P_FREE, \
}; \
+ _.extra = __pool; \
HA_WEAK("__start_mem_stats"); \
HA_WEAK("__stop_mem_stats"); \
if (__ptr) { \
.file = __FILE__, .line = __LINE__, \
.type = MEM_STATS_TYPE_P_ALLOC, \
}; \
+ _.extra = __pool; \
HA_WEAK("__start_mem_stats"); \
HA_WEAK("__stop_mem_stats"); \
_HA_ATOMIC_INC(&_.calls); \
.file = __FILE__, .line = __LINE__, \
.type = MEM_STATS_TYPE_P_ALLOC, \
}; \
+ _.extra = __pool; \
HA_WEAK("__start_mem_stats"); \
HA_WEAK("__stop_mem_stats"); \
_HA_ATOMIC_INC(&_.calls); \
const char *type;
const char *name;
const char *p;
+ const char *info = NULL;
if (!ptr->size && !ptr->calls && !ctx->show_all)
continue;
case MEM_STATS_TYPE_MALLOC: type = "MALLOC"; break;
case MEM_STATS_TYPE_REALLOC: type = "REALLOC"; break;
case MEM_STATS_TYPE_STRDUP: type = "STRDUP"; break;
- case MEM_STATS_TYPE_P_ALLOC: type = "P_ALLOC"; break;
- case MEM_STATS_TYPE_P_FREE: type = "P_FREE"; break;
+ case MEM_STATS_TYPE_P_ALLOC: type = "P_ALLOC"; if (ptr->extra) info = ((const struct pool_head *)ptr->extra)->name; break;
+ case MEM_STATS_TYPE_P_FREE: type = "P_FREE"; if (ptr->extra) info = ((const struct pool_head *)ptr->extra)->name; break;
default: type = "UNSET"; break;
}
chunk_printf(&trash, "%s:%d", name, ptr->line);
while (trash.data < 25)
trash.area[trash.data++] = ' ';
- chunk_appendf(&trash, "%7s size: %12lu calls: %9lu size/call: %6lu\n",
+ chunk_appendf(&trash, "%7s size: %12lu calls: %9lu size/call: %6lu %s\n",
type,
(unsigned long)ptr->size, (unsigned long)ptr->calls,
- (unsigned long)(ptr->calls ? (ptr->size / ptr->calls) : 0));
+ (unsigned long)(ptr->calls ? (ptr->size / ptr->calls) : 0),
+ info ? info : "");
if (applet_putchk(appctx, &trash) == -1) {
ctx->start = ptr;