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