~~NOTOC~~ ===== tn_fmem_release() ===== Функция предназначена для освобождения выделенного блока памяти. Указатель на освобождаемый блок передается в сервис в качестве параметра ''p_data''. Функция не проверяет принадлежность блока ''p_data'' к пулу ''fmp''. Если в очереди ожидания блоков памяти есть задачи, то первая задача из очереди будет переведена в состояние готовности к выполнению. **Вызов:** TN_RETVAL tn_fmem_release(TN_FMP *fmp, void *p_data); **Разрешен вызов:** \\ В контексте задачи **Параметры функции:** ; ''fmp'' : указатель на пул, блок которого освобождается задачей ; ''p_data'' : указатель на блок, который будет освобождаться задачей \\ **Возвращаемые значения:** ; ''TERR_WRONG_PARAM'' : некорректное значение параметра (__замечание:__ данный код возврата возможен только в случае использования сервисов с проверкой параметров) ; ''TERR_NOEXS'' : попытка освобождения блока несуществующего пула ; ''TERR_WCONTEXT'' : вызов сервиса из обработчика прерывания или пользовательской критической секции ; ''TERR_NO_ERR'' : успешное выполнение \\ **Пример вызова:** #define BLOCK_SIZE 4 TN_FMP my_pool; TN_UWORD my_pool_mem[NUM_BLOCKS * (MAKE_ALIG(BLOCK_SIZE) / sizeof(TN_UWORD))]; TN_UWORD *block_pt; tn_fmem_create (&my_pool, my_pool_mem, BLOCK_SIZE, NUM_BLOCKS); tn_fmem_get (&my_pool, &block_pt, TN_WAIT_INFINITE); /* ... */ tn_fmem_release(&my_pool, block_pt); \\ ---- [[tnkernel:ref:mpool:intro#Сервисы управления пулами блоков памяти|К списку сервисов]]