Содержание

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 );
  }
}