96 #if (defined(__GNUC__) && (__GNUC__ >= 5)) || defined(__clang__)
97 #include <stdatomic.h>
100 typedef pthread_mutex_t fxsync_t;
101 typedef pthread_t thread_id_t;
102 #elif defined(_MSC_VER) && _MSC_VER >= 1930
103 #include <stdatomic.h>
105 #define TLS __declspec(thread)
106 typedef HANDLE fxsync_t;
107 typedef HANDLE thread_id_t;
109 #error "Unsupported compiler. Only Clang, GCC >=5.0 and MSVC VS 2022+ support _Atomic in C11"
232#ifndef _I_UNDERSTAND_THAT_I_SHOULD_NEVER_CHANGE_THESE_POINTERS_
241 extern TLS void (*
const fxalloc)(
size_t NBytes);
250 extern TLS void (*
fxalloc)(
size_t NBytes);
253#ifndef _I_UNDERSTAND_THAT_I_SHOULD_NEVER_CHANGE_THESE_POINTERS_
260 extern TLS void (*
const fxfree)(
void* Ptr);
268 extern TLS void (*
fxfree)(
void* Ptr);
eXFAllocSearchType
Варианты настройки алгоритма поиска подходящего грейда для данного потока В случае если первой в пото...
Definition FXAlloc.h:164
@ FXSEARCH_AUTO
Definition FXAlloc.h:165
@ FXSEARCH_LINEAR
Выберется Бинарный/линейный в зависимости от длины массива градаций(>= 7)
Definition FXAlloc.h:166
@ FXSEARCH_BINARY
Линейный поиск
Definition FXAlloc.h:167
@ FXSEARCH_SHIFTED
Бинарный поиск
Definition FXAlloc.h:168
TLS void(*const fxfree)(void *Ptr)
Указатель на функцию высвобождения памяти выделенной исключительно fxalloc при использовании на любом...
Definition FXAlloc.c:16
eFXAllocDefaultConfig
Это перечисление устанавливает настройки аллокатора по умолчанию
Definition FXAlloc.h:133
@ FXALLOC_GRADE_STEP_SHIFT
Definition FXAlloc.h:138
@ FXALLOC_MAX_GRADE_SIZE
Definition FXAlloc.h:148
@ FXALLOC_LIFO_HEAD_ALIGN
Definition FXAlloc.h:143
int fxalloc_profile(eFXAllocProfile Profile, void(*Callback)(FXAllocStatistics **MemoryState))
Переключает режимы работы алокатора для всего роцесса
eFXAllocProfile
Перечисление режимов работы аллокатора.
Definition FXAlloc.h:175
@ FXALLOC_SUMMARY
Поверхностная статистика
Definition FXAlloc.h:177
@ FXALLOC_FULL
Глубокий анализ расхода памяти
Definition FXAlloc.h:178
@ FXALLOC_SPEED
Максимальная производительность без статистики
Definition FXAlloc.h:176
@ FXALLOC_GETPROFILE
Используется для получения текущего профиля
Definition FXAlloc.h:179
int fxalloc_profile_thread(int ThreadID, eFXAllocProfile Profile, void(*Callback)(FXAllocStatistics **MemoryState))
Переключает режим работы алокатора для потока указанного в ThreadID.
void fxalloc_cleanup()
Высвобождает ресурсы занятые потоком. Вызывать непосредственно перед выходом из потока/процесса,...
int fxalloc_init(FXAllocSetupThread *Options)
Инициализирует локальный пул памяти исходя из заданных параметров блоков
void fxalloc_finalize()
Функция очистки всей занятой памяти.
TLS void(*const fxalloc)(size_t NBytes)
Указатель на функцию выделения памяти
Definition FXAlloc.c:15
Структурная единица отчёта по каждому грейду
Definition FXAlloc.h:293
uint32_t blocks_used
Блоков выделенных дополнительно
Definition FXAlloc.h:300
uint32_t blocks_prealloced
Всего блоков
Definition FXAlloc.h:297
uint32_t data_min
Блоков используется
Definition FXAlloc.h:301
uint32_t blocks_total
Размер блока(грейд)
Definition FXAlloc.h:296
uint32_t blocks_malloced
Преаллоцировано блоков
Definition FXAlloc.h:298
uint32_t data_avg
Максимальный размер данных
Definition FXAlloc.h:303
uint32_t data_max
Минимальный размер данных
Definition FXAlloc.h:302
uint32_t block_size
Definition FXAlloc.h:295
Структура настройки потока
Definition FXAlloc.h:213
const char * name
Definition FXAlloc.h:214
eFXAllocProfile profile
Указатель на массив с настройками градаций
Definition FXAlloc.h:216
eXFAllocSearchType search_type
Профиль
Definition FXAlloc.h:217
const FXGrade * grades
Название потока
Definition FXAlloc.h:215
Структурная елиница отчёта по потокам
Definition FXAlloc.h:313
size_t thread_id
Данные профилирования по каждому грейду
Definition FXAlloc.h:316
const char * thread_name
Definition FXAlloc.h:314
size_t ngrades
Внутренний идентификатор потока
Definition FXAlloc.h:317
FXAllocGradeStat * profile
Название потока
Definition FXAlloc.h:315
Структура преднастройки аллокатора задающая градации и количество блоков памяти. Массив должен быть о...
Definition FXAlloc.h:190
const size_t est_size
Предполагаемый размер блока
Definition FXAlloc.h:191
const size_t est_count
Предполагаемое количество блоков
Definition FXAlloc.h:192