This commit is contained in:
jeka committed 2026-03-06 01:36:57 +03:00
1 parent b2640e7201
commit 15c7968c8c
34 files changed
+332 -284

No files matched your search

+13 -12
View File
@@ -6,6 +6,7 @@
#include "ll_queue.h"
#include "u_async.h"
#include "debug_config.h"
#include "mem.h"
// Предварительные объявления внутренних функций
static void queue_resume_timeout_cb(void* arg);
@@ -18,7 +19,7 @@ static void remove_from_hash(struct ll_queue* q, struct ll_entry* entry);
struct ll_queue* queue_new(struct UASYNC* ua, size_t hash_size) {
if (!ua) return NULL;
struct ll_queue* q = calloc(1, sizeof(struct ll_queue));
struct ll_queue* q = u_calloc(1, sizeof(struct ll_queue));
if (!q) return NULL;
q->ua = ua;
@@ -27,9 +28,9 @@ struct ll_queue* queue_new(struct UASYNC* ua, size_t hash_size) {
// Создать хеш-таблицу если нужно
if (hash_size > 0) {
q->hash_table = calloc(hash_size, sizeof(struct ll_entry*));
q->hash_table = u_calloc(hash_size, sizeof(struct ll_entry*));
if (!q->hash_table) {
free(q);
u_free(q);
return NULL;
}
}
@@ -45,7 +46,7 @@ struct ll_entry* ll_alloc_lldgram(uint16_t len) {
entry->len=0;
entry->memlen=len;
entry->dgram = malloc(len);
entry->dgram = u_malloc(len);
// entry->dgram_pool = NULL; - уже null (memset)
// entry->dgram_free_fn = NULL;
if (!entry->dgram) {
@@ -63,11 +64,11 @@ void queue_free(struct ll_queue* q) {
q, q->head, q->tail, q->count);
// ВАЖНО: Не освобождаем элементы в очереди - они должны быть извлечены отдельно
// Это упрощает архитектуру и предотвращает double-free
// Это упрощает архитектуру и предотвращает double-u_free
// Освободить хеш-таблицу
if (q->hash_table) {
free(q->hash_table);
u_free(q->hash_table);
}
// Отменить отложенное возобновление
@@ -76,7 +77,7 @@ void queue_free(struct ll_queue* q) {
q->resume_timeout_id = NULL;
}
free(q);
u_free(q);
}
// ==================== Конфигурация очереди ====================
@@ -118,13 +119,13 @@ void queue_set_size_limit(struct ll_queue* q, int lim) {
// ==================== Управление элементами ====================
struct ll_entry* queue_entry_new(size_t data_size) {
struct ll_entry* entry = malloc(sizeof(struct ll_entry) + data_size);
struct ll_entry* entry = u_malloc(sizeof(struct ll_entry) + data_size);
if (!entry) return NULL;
memset(entry, 0, sizeof(struct ll_entry) + data_size);
entry->size = data_size;
entry->len = 0;
entry->pool = NULL; // Выделено через malloc
entry->pool = NULL; // Выделено через u_malloc
// DEBUG_DEBUG(DEBUG_CATEGORY_LL_QUEUE, "queue_entry_new: created entry %p, size=%zu", entry, data_size);
@@ -147,7 +148,7 @@ struct ll_entry* queue_entry_new_from_pool(struct memory_pool* pool) {
return entry;
}
//void ll_free_dgram(struct ll_entry* entry) {
//void ll_u_free_dgram(struct ll_entry* entry) {
void queue_dgram_free(struct ll_entry* entry) {
if (!entry) return;
@@ -157,7 +158,7 @@ void queue_dgram_free(struct ll_entry* entry) {
} else if (entry->dgram_pool) {
memory_pool_free(entry->dgram_pool, entry->dgram);
} else {
free(entry->dgram);
u_free(entry->dgram);
}
entry->dgram = NULL;
entry->len = 0; // Опционально сброс len
@@ -170,7 +171,7 @@ void queue_entry_free(struct ll_entry* entry) {
if (entry->pool) {
memory_pool_free(entry->pool, entry);
} else {
free(entry);
u_free(entry);
}
}