===== 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]]