===== free_buf =====
==== Синтаксис ====
void free_buf(union SIGNAL **sig);
==== Описание ====
Возвращает сигнальный буфер, который больше не нужен, пулу вызывающего блока. NULL помещается по указателю сигнала для предотвращения случайного повторного использования буфера.
==== Параметры ====
**sig** указатель на указатель_на_сигнальный_буфер
==== Возвращаемое значение ====
Нет
==== Ограничения ====
Освобождать буфер, принадлежащий другому процессу - ошибка. Такие буферы должны освобождаться владельцем, или владелец должен быть изменён вызовом restore до вызова free_buf. Этот вызов может разрешить прерывания, если они были запрещены при вызове.\\
(пропущено про старые реализации)\\
Отметим, что многие вызовы OSE возвращают буферы, выделенные ядром. Эти буферы имюет типы, используемые разными функциями, и должны быть приведены к типу (union SIGNAL **) при освобождении.
==== См. также ====
[[alloc]]
==== Пример ====
static const SIGSELECT any_sig[]= {0};
union SIGNAL
{
SIGSELECT sig_no;
}
OS_PROCESS(my_process)
{
union SIGNAL * sig;
for(;;)
{
sig = receive((SIGSELECT *) any_sig);
free_buf( &sig );
}
}