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