}
}
+ INSIST(mpctx->items != NULL);
item = mpctx->items;
- INSIST(item != NULL);
mpctx->items = item->next;
return (isc_refcount_current(&ctx->references));
}
-typedef struct summarystat {
- uint64_t inuse;
-} summarystat_t;
-
#ifdef HAVE_LIBXML2
#define TRY0(a) \
do { \
goto error; \
} while (0)
static int
-xml_renderctx(isc_mem_t *ctx, summarystat_t *summary, xmlTextWriterPtr writer) {
+xml_renderctx(isc_mem_t *ctx, size_t *inuse, xmlTextWriterPtr writer) {
REQUIRE(VALID_CONTEXT(ctx));
int xmlrc;
isc_refcount_current(&ctx->references)));
TRY0(xmlTextWriterEndElement(writer)); /* references */
- summary->inuse += isc_mem_inuse(ctx);
+ *inuse += isc_mem_inuse(ctx);
TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "inuse"));
TRY0(xmlTextWriterWriteFormatString(writer, "%" PRIu64 "",
(uint64_t)isc_mem_inuse(ctx)));
TRY0(xmlTextWriterEndElement(writer)); /* inuse */
+ TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "malloced"));
+ TRY0(xmlTextWriterWriteFormatString(writer, "%" PRIu64 "",
+ (uint64_t)isc_mem_inuse(ctx)));
+ TRY0(xmlTextWriterEndElement(writer)); /* malloced */
+
TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "pools"));
TRY0(xmlTextWriterWriteFormatString(writer, "%u", ctx->poolcnt));
TRY0(xmlTextWriterEndElement(writer)); /* pools */
int
isc_mem_renderxml(void *writer0) {
isc_mem_t *ctx;
- summarystat_t summary = { 0 };
+ size_t inuse = 0;
int xmlrc;
xmlTextWriterPtr writer = (xmlTextWriterPtr)writer0;
for (ctx = ISC_LIST_HEAD(contexts); ctx != NULL;
ctx = ISC_LIST_NEXT(ctx, link))
{
- xmlrc = xml_renderctx(ctx, &summary, writer);
+ xmlrc = xml_renderctx(ctx, &inuse, writer);
if (xmlrc < 0) {
UNLOCK(&contextslock);
goto error;
TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "summary"));
+ TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "Malloced"));
+ TRY0(xmlTextWriterWriteFormatString(writer, "%" PRIu64 "",
+ (uint64_t)inuse));
+ TRY0(xmlTextWriterEndElement(writer)); /* malloced */
+
TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "InUse"));
TRY0(xmlTextWriterWriteFormatString(writer, "%" PRIu64 "",
- summary.inuse));
+ (uint64_t)inuse));
TRY0(xmlTextWriterEndElement(writer)); /* InUse */
TRY0(xmlTextWriterEndElement(writer)); /* summary */
#define CHECKMEM(m) RUNTIME_CHECK(m != NULL)
static isc_result_t
-json_renderctx(isc_mem_t *ctx, summarystat_t *summary, json_object *array) {
+json_renderctx(isc_mem_t *ctx, size_t *inuse, json_object *array) {
REQUIRE(VALID_CONTEXT(ctx));
- REQUIRE(summary != NULL);
REQUIRE(array != NULL);
json_object *ctxobj, *obj;
MCTXLOCK(ctx);
- summary->inuse += isc_mem_inuse(ctx);
+ *inuse += isc_mem_inuse(ctx);
ctxobj = json_object_new_object();
CHECKMEM(ctxobj);
CHECKMEM(obj);
json_object_object_add(ctxobj, "references", obj);
+ obj = json_object_new_int64(isc_mem_inuse(ctx));
+ CHECKMEM(obj);
+ json_object_object_add(ctxobj, "malloced", obj);
+
obj = json_object_new_int64(isc_mem_inuse(ctx));
CHECKMEM(obj);
json_object_object_add(ctxobj, "inuse", obj);
isc_mem_renderjson(void *memobj0) {
isc_result_t result = ISC_R_SUCCESS;
isc_mem_t *ctx;
- summarystat_t summary = { 0 };
+ size_t inuse = 0;
json_object *ctxarray, *obj;
json_object *memobj = (json_object *)memobj0;
for (ctx = ISC_LIST_HEAD(contexts); ctx != NULL;
ctx = ISC_LIST_NEXT(ctx, link))
{
- result = json_renderctx(ctx, &summary, ctxarray);
+ result = json_renderctx(ctx, &inuse, ctxarray);
if (result != ISC_R_SUCCESS) {
UNLOCK(&contextslock);
goto error;
}
UNLOCK(&contextslock);
- obj = json_object_new_int64(summary.inuse);
+ obj = json_object_new_int64(inuse);
CHECKMEM(obj);
json_object_object_add(memobj, "InUse", obj);
+ obj = json_object_new_int64(inuse);
+ CHECKMEM(obj);
+ json_object_object_add(memobj, "Malloced", obj);
+
json_object_object_add(memobj, "contexts", ctxarray);
return (ISC_R_SUCCESS);