Available Languages?:

tn_fmem_get_ipolling()

Функция предназначена для получения блока памяти из пула в прерывании. Указатель на получаемый блок передается в сервис в качестве параметра p_data. Содержимое блока памяти после получения его задачей не определено.

Если в пуле есть свободные блоки, то один из них выделяется для задачи, и сервис возвращает код TERR_NO_ERR. Если свободные блоки в пуле отсутствуют, сервис возвращает код ошибки TERR_TIMEOUT.

Вызов:

TN_RETVAL tn_fmem_get_ipolling (TN_FMP *fmp, void **p_data);

Разрешен вызов:

В прерывании

Параметры функции:

fmp
указатель на пул из которого будет выделяться блок памяти
p_data
указатель на указатель, который после успешного выполнения сервиса будет содержать адрес выделенного блока


Возвращаемые значения:

TERR_WRONG_PARAM
некорректное значение параметра (замечание: данный код возврата возможен только в случае использования сервисов с проверкой параметров)
TERR_NOEXS
попытка получения блока из несуществующего пула
TERR_WCONTEXT
вызов сервиса из контекста задачи или из пользовательской критической секции
TERR_TIMEOUT
в пуле отсутствуют свободные блоки памяти
TERR_NO_ERR
успешное выполнение


Пример вызова:

extern TN_FMP my_pool;
 
tn_sys_interrupt (_T2Interrupt)        /* прерывание от таймера */
{
    TN_UWORD *block;
 
    IFS0bits.T2IF = 0;                 /* сброс флага прерывания */
    if (tn_fmem_get_ipolling(&my_pool, &block) == TERR_NO_ERR)
    {
        /* ... */
    }
    /* ... */
}



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

 
tnkernel/ref/mpool/tn_fmem_get_ipolling.txt · Последние изменения: 20.06.2008 12:26 От admin
 
Creative Commons License Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki