GUI: add active timeouts and busy memory blocks counters

- Add timeout_heap_get_size() to get active timer count
- Add global counters in memory_pool: g_total_free and g_total_allocated
- Simplify busy memory calculation to single formula:
  busy = memory_pool_get_total_allocated() - memory_pool_get_total_free_blocks()
- Add new IDC_EDIT_ACTIVE_TIMEOUTS and IDC_EDIT_BUSY_MEMORY to GUI
This commit is contained in:
Evgeny committed 2026-04-21 17:22:58 +03:00
1 parent e596564abd
commit cee9a04348
8 files changed
+70 -4

No files matched your search

+16
View File
@@ -5,6 +5,17 @@
#include "memory_pool.h"
#include "mem.h"
static size_t g_total_free = 0;
static size_t g_total_allocated = 0;
size_t memory_pool_get_total_free_blocks(void) {
return g_total_free;
}
size_t memory_pool_get_total_allocated(void) {
return g_total_allocated;
}
// Инициализировать пул памяти
struct memory_pool* memory_pool_init(size_t object_size) {
struct memory_pool* pool = u_calloc(1, sizeof(struct memory_pool));
@@ -29,6 +40,7 @@ void* memory_pool_alloc_impl(struct memory_pool* pool, const char* location) {
void* obj = pool->free_head;
pool->free_head = *(void**)obj; // Извлекаем next из начала блока
pool->free_count--;
g_total_free--;
pool->reuse_count++;
memset(obj, 0, pool->object_size); // Опционально: очищаем память для безопасности
DEBUG_INFO(DEBUG_CATEGORY_MEMORY, "pool_alloc reused: %s, remaining=%zu", location, pool->free_count);
@@ -36,6 +48,7 @@ void* memory_pool_alloc_impl(struct memory_pool* pool, const char* location) {
}
pool->allocations++;
g_total_allocated++;
DEBUG_INFO(DEBUG_CATEGORY_MEMORY, "pool_alloc: %s, total_allocs=%zu", location, pool->allocations);
return u_calloc_impl(1, pool->object_size, location); // Используем calloc для инициализации нулями
}
@@ -51,6 +64,7 @@ void memory_pool_free_impl(struct memory_pool* pool, void* obj, const char* loca
*(void**)obj = pool->free_head; // Сохраняем next в начало блока
pool->free_head = obj;
pool->free_count++;
g_total_free++;
DEBUG_INFO(DEBUG_CATEGORY_MEMORY, "pool_free returned: %s, free_count=%zu", location, pool->free_count);
return;
}
@@ -84,6 +98,8 @@ void memory_pool_destroy(struct memory_pool* pool) {
void* obj = pool->free_head;
while (obj) {
void* next = *(void**)obj;
g_total_free--;
g_total_allocated--;
u_free(obj);
cnt++;
obj = next;