.\" 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.
.\"
.\"*******************************************************************
.\"
.\" Japanese Version Copyright (c) 2007 Akihiro MOTOKI
.\" all rights reserved.
.\" Translated 2007-10-23, Akihiro MOTOKI
.\" Updated 2013-05-01, Akihiro MOTOKI
.\"
.TH SPU_CREATE 2 2020\-12\-21 Linux "Linux Programmer's Manual"
.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() システムコールは、Cell Broadband Engine アーキテクチャーを実装した PowerPC
マシンにおいて、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 引数には 0 か以下の定数の組み合わせ (ビット単位の論理和) を指定できる。
.TP
\fBSPU_CREATE_EVENTS_ENABLED\fP
DMA エラーを通知するのにシグナルを使うのではなく、 \fBspu_run\fP(2) の \fIevent\fP 引数を使用する。
.TP
\fBSPU_CREATE_GANG\fP
コンテキストの代わりに SPU gang を作成する。 (gang は、機能的に互いに関係していて、スケジューリングパラメーター (優先度とポリシー)
を共有する SPU コンテキストのグループである。 将来、 グループ全体が一つの単位としてスイッチイン/スイッチアウトされる gang
スケジューリングが実装されるかもしれない。)
.IP
\fIpathname\fP 引数で指定された場所に新しいディレクトリが作成される。 この gang を使って他の SPU
コンテキストを保持することができる。 それには、それ以降の \fBspu_create\fP() に gang ディレクトリ内のパス名を渡す。
.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 (Linux 2.6.23 以降)
.\" commit 8e68e2f248332a9c3fd4f08258f488c209bd3e0c
別の SPU コンテキストと affinity (親和性) を持ったコンテキストを作成する。 この affinity 情報は SPU
スケジューリングアルゴリズムで使用される。 このフラグを使う際には、 他の SPU コンテキストを指すファイルディスクリプターを
\fIneighbor_fd\fP 引数を渡す必要がある。
.TP
\fBSPU_CREATE_AFFINITY_MEM\fP (Linux 2.6.23 以降)
.\" commit 8e68e2f248332a9c3fd4f08258f488c209bd3e0c
システムメモリーと affinity (親和性) を持ったコンテキストを作成する。 この affinity 情報は 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 が SPUFS マウントポイント内のディレクトリではない。 または、無効なフラグが指定された。
.TP
\fBELOOP\fP
\fIpathname\fP を解決するまでに辿ったシンボリックリンクが多過ぎた。
.TP
\fBEMFILE\fP
The per\-process limit on the number of open file descriptors has been
reached.
.TP
\fBENAMETOOLONG\fP
\fIpathname\fP が長過ぎる。
.TP
\fBENFILE\fP
The system\-wide limit on the total number of open files has been reached.
.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
\fBSPU_CREATE_NOSCHED\fP フラグが指定されたが、ユーザーが \fBCAP_SYS_NICE\fP ケーパビリティを持っていない。
.SH ファイル
\fIpathname\fP は \fBspufs\fP のマウントポイントの配下の場所を指して
いなければならない。 慣例では \fI/spu\fP にマウントされる。
.SH バージョン
\fBspu_create\fP() システムコールはカーネル 2.6.16 で Linux に追加された。
.SH 準拠
このシステムコールは Linux 固有であり、 PowerPC アーキテクチャーでのみ実装されている。
このシステムコールを使ったプログラムは移植性がない。
.SH 注意
glibc はこのシステムコールに対するラッパー関数を提供していない。 \fBsyscall\fP(2) を使うこと。ただし、
\fBspu_create\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_create\fP() の利用例については \fBspu_run\fP(2) を参照。
.SH 関連項目
\fBclose\fP(2), \fBspu_run\fP(2), \fBcapabilities\fP(7), \fBspufs\fP(7)
.SH この文書について
この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は
\%https://www.kernel.org/doc/man\-pages/ に書かれている。