Provided by: manpages-ru-dev_4.21.0-2_all bug

ИМЯ

       spu_create - создаёт новый контекст spu

LIBRARY

       Standard C library (libc, -lc)

СИНТАКСИС

       #include <sys/spu.h>          /* определения констант SPU_* */
       #include <sys/syscall.h>      /* определения констант SYS_* */
       #include <unistd.h>

       int syscall(SYS_spu_create, const char *pathname, unsigned int flags,
                   mode_t mode, int neighbor_fd);

       Note: glibc provides no wrapper for spu_create(), necessitating the use of syscall(2).

ОПИСАНИЕ

       Системный вызов spu_create() используется на машинах PowerPC с архитектурой Cell Broadband
       Engine для получения  доступа  к  Synergistic  Processor  Unit  (SPU).  Он  создаёт  новый
       логический  контекст  для SPU в pathname и возвращает связанный с ним файловый дескриптор.
       Аргумент pathname должен указывать на несуществующий каталог в точке монтирования файловой
       системы  SPU  (spufs). Если работа spu_create() выполнена без ошибок, то создаётся каталог
       pathname, а в нём создаются файлы, описанные в spufs(7).

       После создания  контекста,  полученный  файловый  дескриптор  может  быть  передан  только
       spu_run(2),  семейству  системных  вызовов *at (например, openat(2)) в аргументе dirfd или
       закрыт; другие операции не определены. Логический  контекст  SPU  уничтожается  (вместе  с
       файлами,  созданными  внутри  каталога  контекста  pathname)  после освобождения последней
       ссылки  на  контекст;  обычно,  это  происходит  после  закрытия  файлового   дескриптора,
       возвращённого spu_create().

       В  аргументе mode (не считая битов umask(2) процесса) задаются права, которые используются
       при создании нового каталога в spufs.  Полное  описание  всех  значений  mode  смотрите  в
       stat(2).

       The  neighbor_fd  is  used  only  when  the SPU_CREATE_AFFINITY_SPU flag is specified; see
       below.

       Аргумент flags может быть равен нулю или содержать любую побитовую комбинацию (посредством
       OR) следующих констант:

       SPU_CREATE_EVENTS_ENABLED
              Вместо  использования  сигналов для сообщения об ошибках DMA, использовать аргумент
              event в spu_run(2).

       SPU_CREATE_GANG
              Create an SPU gang instead of a context.  (A gang is a group of SPU  contexts  that
              are   functionally  related  to  each  other  and  which  share  common  scheduling
              parameters—priority and policy.  In the future, gang scheduling may be  implemented
              causing the group to be switched in and out as a single unit.)

              В  месте,  указанном  в  аргументе  pathname, будет создан новый каталог. Этот блок
              может использоваться для хранения других контекстов SPU, если указывать путь  блока
              в последующих вызовах spu_create().

       SPU_CREATE_NOSCHED
              Создать контекст, на который не влияет планировщик SPU. После запуска контекста, он
              не будет планироваться  для  выполнения  пока  не  будет  уничтожен  создавшим  его
              процессом.

              Так  как  контекст  не  может  быть  удалён из SPU, у контекстов SPU_CREATE_NOSCHED
              отключены некоторые возможности. Не все  файлы  будут  доступны  в  каталоге  этого
              контекста  в  spufs.  Также, для контекстов SPU_CREATE_NOSCHED не может быть создан
              файл дампа при поломке.

              Для создания контекстов SPU_CREATE_NOSCHED требуется мандат CAP_SYS_NICE.

       SPU_CREATE_ISOLATE
              Создать изолированный контекст SPU. Изолированные контексты защищены  от  некоторых
              операций  PPE (PowerPC Processing Element), таких как доступ к локальному хранилищу
              SPU и регистру NPC.

              Для создания контекста SPU_CREATE_ISOLATE также требуется флаг SPU_CREATE_NOSCHED.

       SPU_CREATE_AFFINITY_SPU (since Linux 2.6.23)
              Создать контекст со  связью  с  другим  контекстом  SPU.  Эта  информация  о  связи
              используется в алгоритме планирования SPU. При использовании этого флага требуется,
              чтобы файловый дескриптор,  ссылающийся  на  другой  контекст  SPU,  передавался  в
              аргументе neighbor_fd.

       SPU_CREATE_AFFINITY_MEM (since Linux 2.6.23)
              Создать контекст со связью с системной памятью. Эта информация о связи используется
              в алгоритме планирования SPU.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

       On success, spu_create()  returns a new file descriptor.  On failure, -1 is returned,  and
       errno is set to indicate the error.

ОШИБКИ

       EACCES Текущий пользователь не имеет прав на запись в точку монтирования spufs(7).

       EEXIST Контекст SPU с указанным именем пути уже существует.

       EFAULT Значение   pathname   не   является  допустимым  строковым  указателем  в  адресном
              пространстве вызывающего процесса.

       EINVAL Значение pathname не является каталогом в точке монтирования spufs(7), или  указаны
              неправильные флаги.

       ELOOP  Во время определения pathname встретилось слишком много символьных ссылок.

       EMFILE Было  достигнуто  ограничение  по  количеству  открытых  файловых  дескрипторов  на
              процесс.

       ENAMETOOLONG
              Слишком длинное значение аргумента pathname.

       ENFILE Достигнуто максимальное количество открытых файлов в системе.

       ENODEV Был запрошен изолированный контекст, но аппаратная часть не  поддерживает  изоляцию
              SPU.

       ENOENT Невозможно определить часть pathname.

       ENOMEM Ядро не может выделить все требуемые ресурсы.

       ENOSPC Недостаточно  ресурсов SPU для создания нового контекста или достигнуто ограничение
              на количество контекстов SPU для пользователя.

       ENOSYS Возможность  не  предоставляется  текущей  системой,  так  как  или  аппаратура  не
              предоставляет SPU, или не загружен модуль spufs.

       ENOTDIR
              Часть pathname не является каталогом.

       EPERM  The  SPU_CREATE_NOSCHED  flag  has  been  given,  but  the  user  does not have the
              CAP_SYS_NICE capability.

ФАЙЛЫ

       Значение pathname должно указываться относительно точки монтирования spufs. По  соглашению
       всё монтируется в /spu.

ВЕРСИИ

       The spu_create()  system call was added in Linux 2.6.16.

СТАНДАРТЫ

       Данный  вызов  существует  только  в  Linux  и  реализован только для архитектуры PowerPC.
       Программы, использующие данный вызов, не переносимы.

ЗАМЕЧАНИЯ

       spu_create()  is meant to be used from libraries that implement a more abstract  interface
       to  SPUs,  not  to  be  used  from  regular applications.  See ⟨http://www.bsc.es/projects
       /deepcomputing/linuxoncell/⟩ for the recommended libraries.

       Prior  to  the  addition  of  the  SPU_CREATE_AFFINITY_SPU  flag  in  Linux  2.6.23,   the
       spu_create()   system  call  took  only  three  arguments  (i.e., there was no neighbor_fd
       argument).

ПРИМЕРЫ

       В spu_run(2) дан пример использования spu_create().

СМ. ТАКЖЕ

       close(2), spu_run(2), capabilities(7), spufs(7)

ПЕРЕВОД

       Русский   перевод   этой   страницы   руководства    был    сделан    Alexander    Golubev
       <fatzer2@gmail.com>,   Azamat   Hackimov  <azamat.hackimov@gmail.com>,  Hotellook,  Nikita
       <zxcvbnm3230@mail.ru>,       Spiros       Georgaras       <sng@hellug.gr>,       Vladislav
       <ivladislavefimov@gmail.com>,    Yuri    Kozlov   <yuray@komyakino.ru>   и   Иван   Павлов
       <pavia00@gmail.com>

       Этот  перевод  является  бесплатной  документацией;  прочитайте  Стандартную  общественную
       лицензию GNU версии 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ или более позднюю, чтобы
       узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

       Если вы обнаружите ошибки в переводе  этой  страницы  руководства,  пожалуйста,  отправьте
       электронное письмо на ⟨man-pages-ru-talks@lists.sourceforge.net⟩.