Просмотр исходного кода

add: 为tlsf3添加tlsf_stat函数,方便获取内存使用情况

Wendal Chen 3 лет назад
Родитель
Сommit
75a390aff2
2 измененных файлов с 30 добавлено и 0 удалено
  1. 27 0
      components/mempool/tlsf3/tlsf.c
  2. 3 0
      components/mempool/tlsf3/tlsf.h

+ 27 - 0
components/mempool/tlsf3/tlsf.c

@@ -1269,3 +1269,30 @@ void* tlsf_realloc(tlsf_t tlsf, void* ptr, size_t size)
 
 	return p;
 }
+
+
+//=------------------------------------------------
+// more function for usage data
+typedef struct walker_ctx
+{
+    size_t total;
+    size_t used;
+}walker_ctx_t;
+
+static void stat_walker(void* ptr, size_t size, int used, void* user) {
+    walker_ctx_t *ctx = (walker_ctx_t*)user;
+    ctx->total = ctx->total + size;
+    if (used != 0)
+        ctx->used = ctx->used + size;
+}
+
+int tlsf_stat(pool_t pool, size_t *total, size_t *used, size_t *maxused) {
+	walker_ctx_t ctx = {
+		.total = *total,
+		.used = *used
+	};
+	tlsf_walk_pool(pool, stat_walker, &ctx);
+    *total = ctx.total;
+    *used = ctx.used;
+	*maxused = ctx.used;
+}

+ 3 - 0
components/mempool/tlsf3/tlsf.h

@@ -83,6 +83,9 @@ void tlsf_walk_pool(pool_t pool, tlsf_walker walker, void* user);
 int tlsf_check(tlsf_t tlsf);
 int tlsf_check_pool(pool_t pool);
 
+// add by wendal
+int tlsf_stat(pool_t pool, size_t *total, size_t *used, size_t *maxused);
+
 #if defined(__cplusplus)
 };
 #endif