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);
    }
}



К списку сервисов