22#if defined(_I_UNDERSTAND_THAT_I_SHOULD_NEVER_CHANGE_THESE_POINTERS_) && defined(__FXALLOC_TURBO)
28 #pragma pack(push, 16)
39 #pragma pack(push, 16)
94 void* (**curr_alloc)(
size_t NBytes);
121#ifndef _I_UNDERSTAND_THAT_I_SHOULD_NEVER_CHANGE_THESE_POINTERS_
123 extern TLS
void* (*thread_alloc)(
size_t NBytes);
186#ifndef __FXALLOC_TURBO
188 void* fxalloc_shifted_full(size_t NBytes);
197#ifndef __FXALLOC_TURBO
199 void* fxalloc_binary_full(size_t NBytes);
209#ifndef __FXALLOC_TURBO
211 void* fxalloc_linear_full(size_t NBytes);
Публичный интерфейс модуля аллокатора-профилировщика для серверных очередей/пакетов
eXFAllocSearchType
Варианты настройки алгоритма поиска подходящего грейда для данного потока В случае если первой в пото...
Definition FXAlloc.h:164
eFXAllocProfile
Перечисление режимов работы аллокатора.
Definition FXAlloc.h:175
TLS void(* thread_free)(void *Ptr)
Указатель на активную функцию аллокации
void * fxalloc_proxy_alloc(size_t NBytes)
Прокси-функция аллокации
void * fxalloc_linear_summary(size_t NBytes)
Выделение блока. Режим: поверхностное профилирование. Алгоритм поиска: линейный поиск.
void * fxfree_summary(void *Ptr)
Возврат блока в пул. Режим: поверхностное профилирование
void * fxalloc_linear_speed(size_t NBytes)
Выделение блока. Режим: скорость. Алгоритм поиска: линейный поиск.
void * fxalloc_ungraded_alloc_init(size_t NBytes)
Функция для инициализации грейдов по-умолчанию
void * fxalloc_shifted_summary(size_t NBytes)
Выделение блока. Режим: поверхностное профилирование. Алгоритм поиска: сдвиг битов размера.
void * fxfree_speed(void *Ptr)
Возврат блока в пул. Режим: скорость
TLS FXThreadPool * thread_pool
Указатель на пул данного потока Изначально равен NULL, инициализируется при первом вызове fxalloc или...
TLS eXFAllocSearchType search_type
Переменная хранящая тип поиска для функций выеления памяти в данном потоке При первом вызове fxalloc ...
void * fxalloc_binary_speed(size_t NBytes)
Выделение блока. Режим: скорость. Алгоритм поиска: бинарный поиск.
void fxalloc_proxy_free(void *Ptr)
Прокси-функция высвобождения
void * fxalloc_shifted_speed(size_t NBytes)
Выделение блока. Режим: скорость. Алгоритм поиска: сдвиг битов размера.
void * fxalloc_binary_summary(size_t NBytes)
Выделение блока. Режим: поверхностное профилирование. Алгоритм поиска: бинарный поиск.
TLS eFXAllocProfile thread_profile
Текущий профиль потока FXALLOC_SPEED | FXALLOC_SUMMARY | FXALLOC_FULL.
void * fxfree_full(void *Ptr)
Возврат блока в пул. Режим: глубокое профилирование
Глобальный пул памяти
Definition _FXAlloc.h:107
fxsync_t mutex
Мьютекс для синхронизации при инициализации для локального пула
Definition _FXAlloc.h:109
FXThreadPool ** pools
Массив указателей на пулы потоков, заканчивается NULL.
Definition _FXAlloc.h:108
Элемент пула потока выделяемый для градации
Definition _FXAlloc.h:74
uint32_t nalloc
Блоков алоцировано через malloc
Definition _FXAlloc.h:81
FXMemoryBlock * list
Список аллоцированных блоков
Definition _FXAlloc.h:76
_Atomic uint32_t ntotal
Блоков всего
Definition _FXAlloc.h:78
_Atomic int32_t nbusy
Блоков занято
Definition _FXAlloc.h:79
FXMemoryBlock * prealloced
Преаллоцированные блоки
Definition _FXAlloc.h:77
_Atomic FXMemoryBlock * lifo
Стэк свободных блоков
Definition _FXAlloc.h:75
uint32_t vref
Definition _FXAlloc.h:82
uint32_t nprealloc
Блоков преаллоцировано
Definition _FXAlloc.h:80
Метаданные отдельного блока памяти
Definition _FXAlloc.h:59
FXGradePool * pool
Указатель на конкретный грейд хозяина
Definition _FXAlloc.h:61
uint32_t padding
Это ненужные байты, во всяком случае - пока
Definition _FXAlloc.h:64
uint32_t used
Использовано байт
Definition _FXAlloc.h:63
FXMemoryBlock * list
Следующий в списке алоцированных
Definition _FXAlloc.h:62
FXMemoryBlock * next
Следующий в стэке свободных
Definition _FXAlloc.h:60
uint8_t data[]
Пользовательские данные
Definition _FXAlloc.h:65
Пул памяти потока
Definition _FXAlloc.h:93
uint32_t ngrades
Количество градаций
Definition _FXAlloc.h:98
FXGradePool * grades[]
Массив указателей на грейды, заканчивается NULL.
Definition _FXAlloc.h:99
void(** curr_free)(void *Ptr)
Указатель на указатель на функцию освобождения действующую в данном потоке(для профилирования)
Definition _FXAlloc.h:95
eXFAllocSearchType * search_type
Указатель на переменную хранящую информацию о типе функций аллокации для данного потока(нужна при пер...
Definition _FXAlloc.h:96
uint32_t isActive
Показатель активности потока(для профилировщика, он же - сборщик мусора)
Definition _FXAlloc.h:97