.\" -*- coding: UTF-8 -*- .\" Copyright (c) International Business Machines Corp., 2006 .\" .\" %%%LICENSE_START(GPLv2+_SW_3_PARA) .\" This program is free software; you can redistribute it and/or .\" modify it under the terms of the GNU General Public License as .\" published by the Free Software Foundation; either version 2 of .\" the License, or (at your option) any later version. .\" .\" This program is distributed in the hope that it will be useful, .\" but WITHOUT ANY WARRANTY; without even the implied warranty of .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See .\" the GNU General Public License for more details. .\" .\" You should have received a copy of the GNU General Public .\" License along with this manual; if not, see .\" . .\" %%%LICENSE_END .\" .\" HISTORY: .\" 2005-09-28, created by Arnd Bergmann .\" 2006-06-16, revised by Eduardo M. Fleury .\" 2007-07-10, some polishing by mtk .\" 2007-09-28, updates for newer kernels by Jeremy Kerr .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH SPU_CREATE 2 "21 декабря 2020 г." Linux "Руководство программиста Linux" .SH ИМЯ spu_create \- создаёт новый контекст spu .SH СИНТАКСИС .nf \fB#include \fP \fB#include \fP .PP \fBint spu_create(const char *\fP\fIpathname\fP\fB, int \fP\fIflags\fP\fB, mode_t \fP\fImode\fP\fB,\fP \fB int \fP\fIneighbor_fd\fP\fB);\fP .fi .PP \fIЗамечание\fP: В glibc нет обёрточной функции для данного системного вызова; смотрите ЗАМЕЧАНИЯ. .SH ОПИСАНИЕ Системный вызов \fBspu_create\fP() используется на машинах PowerPC с архитектурой Cell Broadband Engine для получения доступа к Synergistic Processor Unit (SPU). Он создаёт новый логический контекст для SPU в \fIpathname\fP и возвращает связанный с ним файловый дескриптор. Аргумент \fIpathname\fP должен указывать на несуществующий каталог в точке монтирования файловой системы SPU (\fBspufs\fP). Если работа \fBspu_create\fP() выполнена без ошибок, то создаётся каталог \fIpathname\fP, а в нём создаются файлы, описанные в \fBspufs\fP(7). .PP После создания контекста, полученный файловый дескриптор может быть передан только \fBspu_run\fP(2), семейству системных вызовов \fB*at\fP (например, \fBopenat\fP(2)) в аргументе \fIdirfd\fP или закрыт; другие операции не определены. Логический контекст SPU уничтожается (вместе с файлами, созданными внутри каталога контекста \fIpathname\fP) после освобождения последней ссылки на контекст; обычно, это происходит после закрытия файлового дескриптора, возвращённого \fBspu_create\fP(). .PP В аргументе \fImode\fP (не считая битов \fBumask\fP(2) процесса) задаются права, которые используются при создании нового каталога в \fBspufs\fP. Полное описание всех значений \fImode\fP смотрите в \fBstat\fP(2). .PP The \fIneighbor_fd\fP is used only when the \fBSPU_CREATE_AFFINITY_SPU\fP flag is specified; see below. .PP Аргумент \fIflags\fP может быть равен нулю или содержать любую побитовую комбинацию (посредством OR) следующих констант: .TP \fBSPU_CREATE_EVENTS_ENABLED\fP Вместо использования сигналов для сообщения об ошибках DMA, использовать аргумент \fIevent\fP в \fBspu_run\fP(2). .TP \fBSPU_CREATE_GANG\fP Создать блок (gang) SPU вместо контекста (блок — это группа контекстов SPU, которые близки по функциям и у которых общие параметры планирования — приоритет и политика. В будущем, планирование блока на включение и выключение может быть реализовано как единого целое). .IP В месте, указанном в аргументе \fIpathname\fP, будет создан новый каталог. Этот блок может использоваться для хранения других контекстов SPU, если указывать путь блока в последующих вызовах \fBspu_create\fP(). .TP \fBSPU_CREATE_NOSCHED\fP Создать контекст, на который не влияет планировщик SPU. После запуска контекста, он не будет планироваться для выполнения пока не будет уничтожен создавшим его процессом. .IP Так как контекст не может быть удалён из SPU, у контекстов \fBSPU_CREATE_NOSCHED\fP отключены некоторые возможности. Не все файлы будут доступны в каталоге этого контекста в \fBspufs\fP. Также, для контекстов \fBSPU_CREATE_NOSCHED\fP не может быть создан файл дампа при поломке. .IP Для создания контекстов \fBSPU_CREATE_NOSCHED\fP требуется мандат \fBCAP_SYS_NICE\fP. .TP \fBSPU_CREATE_ISOLATE\fP Создать изолированный контекст SPU. Изолированные контексты защищены от некоторых операций PPE (PowerPC Processing Element), таких как доступ к локальному хранилищу SPU и регистру NPC. .IP Для создания контекста \fBSPU_CREATE_ISOLATE\fP также требуется флаг \fBSPU_CREATE_NOSCHED\fP. .TP \fBSPU_CREATE_AFFINITY_SPU\fP (since Linux 2.6.23) .\" commit 8e68e2f248332a9c3fd4f08258f488c209bd3e0c Создать контекст со связью с другим контекстом SPU. Эта информация о связи используется в алгоритме планирования SPU. При использовании этого флага требуется, чтобы файловый дескриптор, ссылающийся на другой контекст SPU, передавался в аргументе \fIneighbor_fd\fP. .TP \fBSPU_CREATE_AFFINITY_MEM\fP (since Linux 2.6.23) .\" commit 8e68e2f248332a9c3fd4f08258f488c209bd3e0c Создать контекст со связью с системной памятью. Эта информация о связи используется в алгоритме планирования SPU. .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" При успешном выполнении \fBspu_create\fP() возвращается новый файловый дескриптор; при ошибке возвращается \-1, а в \fIerrno\fP содержится один из кодов ошибки, описанных далее. .SH ОШИБКИ .TP \fBEACCES\fP Текущий пользователь не имеет прав на запись в точку монтирования \fBspufs\fP(7). .TP \fBEEXIST\fP Контекст SPU с указанным именем пути уже существует. .TP \fBEFAULT\fP Значение \fIpathname\fP не является допустимым строковым указателем в адресном пространстве вызывающего процесса. .TP \fBEINVAL\fP Значение \fIpathname\fP не является каталогом в точке монтирования \fBspufs\fP(7), или указаны неправильные флаги. .TP \fBELOOP\fP Во время определения \fIpathname\fP встретилось слишком много символьных ссылок. .TP \fBEMFILE\fP Было достигнуто ограничение по количеству открытых файловых дескрипторов на процесс. .TP \fBENAMETOOLONG\fP Слишком длинное значение аргумента \fIpathname\fP. .TP \fBENFILE\fP Достигнуто максимальное количество открытых файлов в системе. .TP \fBENODEV\fP Был запрошен изолированный контекст, но аппаратная часть не поддерживает изоляцию SPU. .TP \fBENOENT\fP Невозможно определить часть \fIpathname\fP. .TP \fBENOMEM\fP Ядро не может выделить все требуемые ресурсы. .TP \fBENOSPC\fP Недостаточно ресурсов SPU для создания нового контекста или достигнуто ограничение на количество контекстов SPU для пользователя. .TP \fBENOSYS\fP Возможность не предоставляется текущей системой, так как или аппаратура не предоставляет SPU, или не загружен модуль spufs. .TP \fBENOTDIR\fP Часть \fIpathname\fP не является каталогом. .TP \fBEPERM\fP The \fBSPU_CREATE_NOSCHED\fP flag has been given, but the user does not have the \fBCAP_SYS_NICE\fP capability. .SH ФАЙЛЫ Значение \fIpathname\fP должно указываться относительно точки монтирования \fBspufs\fP. По соглашению всё монтируется в \fI/spu\fP. .SH ВЕРСИИ Системный вызов \fBspu_create\fP() был добавлен в ядро Linux версии 2.6.16. .SH "СООТВЕТСТВИЕ СТАНДАРТАМ" Данный вызов существует только в Linux и реализован только для архитектуры PowerPC. Программы, использующие данный вызов, не переносимы. .SH ЗАМЕЧАНИЯ В glibc нет обёртки для этого системного вызова; запускайте его с помощью \fBsyscall\fP(2). Однако заметим, что \fBspu_run\fP() предназначен для работы в библиотеках, которые реализуют более абстрактный интерфейс к SPU и не должен вызываться из обычных приложений. Рекомендуемые библиотеки приведены на странице .UR http://www.bsc.es\:/projects\:/deepcomputing\:/linuxoncell/ .UE . .PP Prior to the addition of the \fBSPU_CREATE_AFFINITY_SPU\fP flag in Linux 2.6.23, the \fBspu_create\fP() system call took only three arguments (i.e., there was no \fIneighbor_fd\fP argument). .SH ПРИМЕРЫ В \fBspu_run\fP(2) дан пример использования \fBspu_create\fP(). .SH "СМ. ТАКЖЕ" \fBclose\fP(2), \fBspu_run\fP(2), \fBcapabilities\fP(7), \fBspufs\fP(7) .SH ЗАМЕЧАНИЯ Эта страница является частью проекта Linux \fIman\-pages\fP версии 5.10. Описание проекта, информацию об ошибках и последнюю версию этой страницы можно найти по адресу \%https://www.kernel.org/doc/man\-pages/. .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства был сделан Alexander Golubev , Azamat Hackimov , Hotellook, Nikita , Spiros Georgaras , Vladislav , Yuri Kozlov и Иван Павлов . .PP Этот перевод является бесплатной документацией; прочитайте .UR https://www.gnu.org/licenses/gpl-3.0.html Стандартную общественную лицензию GNU версии 3 .UE или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ. .PP Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на .MT man-pages-ru-talks@lists.sourceforge.net .ME .