===== alloc =====
==== Синтаксис ====
union SIGNAL *alloc (OSBUFSIZE size, SIGSELECT signo);
==== Описание ====
Выделяет буфер сигнала заданного размера из пула, доступного вызывающему блоку. Заданный signo (номер сигнала) помещается в начало нового буфера.
Другой номер сигнала может быть позже назначен буферу простой записью нового номера в начало буфера.\\
Максимальный размер буфера задаётся величиной sizeof(OSBUFSIZE). Это значит, что если sizeof(OSBUFSIZE) возвращает 2, то максимально доступный размер буфера равняется 65536 (2(sizeof(OSBUFSIZE)*8)).\\
Это правило может иногда не срабатывать, так как максимальный размер буфера может быть установлен в меньшее значение при создании пула. Минимальный размер буфера - один байт.
==== Параметры ====
* **size** запрашиваемый размер буфера\\
* **signo** номер сигнала, который будет помещён в выделяемый буфер
==== Возвращаемое значение ====
Возвращает указатель на новый буфер
==== Ограничения ====
Новый буфер принадлежит вызывающему процессу. Новый владелец может быть установлен только использованием одного из системных вызовов, работающих с буфером. По правде говоря, неправильно передавать управление буфером другому процессу любым другим способом так как буферы могут быть потеряны в случае преждевременного уничтожения процесса.\\
(пропущено про системный вызов restore)\\
(пропущено про get_pcb)\\
==== См. также ====
[[free_buf]], [[send]], [[sender]]