~~NOTOC~~ ===== 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:intro#Сервисы управления пулами блоков памяти|К списку сервисов]]