Функция предназначена для освобождения выделенного блока памяти. Указатель на освобождаемый блок передается в сервис в качестве параметра p_data
. Функция не проверяет принадлежность блока p_data
к пулу fmp
.
Если в очереди ожидания блоков памяти есть задачи, то первая задача из очереди будет переведена в состояние готовности к выполнению.
Вызов:
TN_RETVAL tn_fmem_release(TN_FMP *fmp, void *p_data);
Разрешен вызов:
В контексте задачи
Параметры функции:
fmp
p_data
Возвращаемые значения:
TERR_WRONG_PARAM
TERR_NOEXS
TERR_WCONTEXT
TERR_NO_ERR
Пример вызова:
#define BLOCK_SIZE 4 TN_FMP my_pool; TN_UWORD my_pool_mem[NUM_BLOCKS * (MAKE_ALIG(BLOCK_SIZE) / sizeof(TN_UWORD))]; TN_UWORD *block_pt; tn_fmem_create (&my_pool, my_pool_mem, BLOCK_SIZE, NUM_BLOCKS); tn_fmem_get (&my_pool, &block_pt, TN_WAIT_INFINITE); /* ... */ tn_fmem_release(&my_pool, block_pt);