Функция предназначена для освобождения выделенного блока памяти в прерывании. Указатель на освобождаемый блок передается в сервис в качестве параметра 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); } }