~~NOTOC~~
===== tn_fmem_irelease() =====
Функция предназначена для освобождения выделенного блока памяти в прерывании. Указатель на освобождаемый блок передается в сервис в качестве параметра ''p_data''. Функция не проверяет принадлежность блока ''p_data'' к пулу ''fmp''.
Если в очереди ожидания блоков памяти есть задачи, то первая задача из очереди будет переведена в состояние готовности к выполнению.
**Вызов:**
TN_RETVAL tn_fmem_irelease(TN_FMP *fmp, void *p_data);
**Разрешен вызов:** \\
В прерывании
**Параметры функции:**
; ''fmp'' : указатель на пул, блок которого освобождается задачей
; ''p_data'' : указатель на блок, который будет освобождаться задачей
\\
**Возвращаемые значения:**
; ''TERR_WRONG_PARAM'' : некорректное значение параметра (__замечание:__ данный код возврата возможен только в случае использования сервисов с проверкой параметров)
; ''TERR_NOEXS'' : попытка освобождения блока несуществующего пула
; ''TERR_WCONTEXT'' : вызов сервиса в контексте задачи или из пользовательской критической секции
; ''TERR_NO_ERR'' : успешное выполнение
\\
**Пример вызова:**
extern TN_FMP my_pool;
tn_sys_interrupt (_T2Interrupt) /* прерывание от таймера */
{
TN_UWORD *block_pt;
IFS0bits.T2IF = 0; /* сброс флага прерывания */
if (tn_fmem_get_ipolling(&my_pool, &block) == TERR_NO_ERR)
{
/* ... */
tn_fmem_irelease(&my_pool, block_pt);
}
}
\\
----
[[tnkernel:ref:mpool:intro#Сервисы управления пулами блоков памяти|К списку сервисов]]