~~NOTOC~~ ===== tn_fmem_create() ===== Функция предназначена для создания пула блоков памяти фиксированного размера. Поле ''id_fmp'' структуры ''fmp'' должно быть равно нулю до момента создания пула. Таким образом уже созданные пулы защищаются от повторного создания. Память для самого пула так же должна быть выделена до вызова сервиса. Память может быть выделена статически или динамически, указатель на память передается в качестве параметра ''start_addr''. Для лучшего использования памяти, желательно чтобы размер блока (''block_size'') был кратным машинному слову: для PIC24/dsPIC это 2, 4, 6 .... байт. Для удобного выделения памяти (автоматического выравнивания) можно использовать макрос ''MAKE_ALIG'': TN_FMP my_pool; TN_UWORD my_pool_mem[NUM_BLOCKS * (MAKE_ALIG(BLOCK_SIZE) / sizeof(TN_UWORD))]; tn_fmem_create (&my_pool, my_pool_mem, BLOCK_SIZE, NUM_BLOCKS); **Вызов:** TN_RETVAL tn_fmem_create (TN_FMP *fmp, void *start_addr, TN_UWORD block_size, TN_UWORD num_blocks ); **Разрешен вызов:** \\ В контексте задачи, в обработчике прерывания, в пользовательской критической секции **Параметры функции:** ; ''fmp'' : указатель на структуру пула типа ''TN_FMP''. Структура должна быть создана до момента вызова функции, статически или динамически ; ''start_addr'' : указатель на память, выделенную для пула. Размер выделенной памяти должен быть не меньше ''block_size * num_blocks'' байт ; ''block_size'' : размер блока памяти в байтах ; ''num_blocks'' : количество блоков памяти в пуле \\ **Возвращаемые значения:** ; ''TERR_WRONG_PARAM'' : некорректное значение параметра ((данный код возврата возможен только в случае использования сервисов с проверкой параметров)) ; ''TERR_EXS'' : попытка создания пула, который уже создан ; ''TERR_NO_ERR'' : успешное выполнение \\ **Пример вызова:** TN_FMP my_pool; TN_UWORD my_pool_mem[NUM_BLOCKS * (MAKE_ALIG(BLOCK_SIZE) / sizeof(TN_UWORD))]; tn_fmem_create (&my_pool, my_pool_mem, BLOCK_SIZE, NUM_BLOCKS); \\ ---- [[tnkernel:ref:mpool:intro#Сервисы управления пулами блоков памяти|К списку сервисов]]