Man page - spu_create(2)

Packages contains this manual

Available languages:

en fr ja ru

Manual

spu_create

НАИМЕНОВАНИЕ
БИБЛИОТЕКА
ОБЗОР
ОПИСАНИЕ
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
ОШИБКИ
ФАЙЛЫ
СТАНДАРТЫ
ИСТОРИЯ
ПРИМЕЧАНИЯ
ПРИМЕРЫ
СМОТРИТЕ ТАКЖЕ
ПЕРЕВОД

НАИМЕНОВАНИЕ

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

БИБЛИОТЕКА

Стандартная библиотека языка C ( 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 .

СТАНДАРТЫ

Linux on PowerPC.

ИСТОРИЯ

Linux 2.6.16.

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_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.

ПРИМЕРЫ

В 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> и Kirill Rekhov <krekhov.dev@gmail.com>

Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков .