SPU_CREATE(2) | Linux Programmer's Manual | SPU_CREATE(2) |
spu_create - 新しい SPU コンテキストを生成する
#include <sys/types.h> #include <sys/spu.h> int spu_create(const char *pathname, int flags, mode_t mode); int spu_create(const char *pathname, int flags, mode_t mode, int neighbor_fd);
注: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節を参照。
spu_create() システムコールは、Cell Broadband Engine アーキテクチャーを実装した PowerPC マシンにおいて、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() が返したファイルディスクリプターがクローズされた際に発生する。
flags 引き数には 0 か以下の定数の組み合わせ (ビット単位の論理和) を指定できる。
pathname 引き数で指定された場所に新しいディレクトリが作成される。 この gang を使って他の SPU コンテキストを保持することができる。 それには、それ以降の spu_create() に gang ディレクトリ内のパス名を渡す。
このコンテキストは SPU から削除されることはないので、 SPU_CREATE_NOSCHED コンテキストではいくつかの機能は無効にされる。 spufs のこのコンテキストのディレクトリでは一部のファイルだけができる。 また、 SPU_CREATE_NOSCHED コンテキストはクラッシュした際にコアファイルをダンプできない。
SPU_CREATE_NOSCHED コンテキストを作成するには CAP_SYS_NICE ケーパビリティが必要である。
SPU_CREATE_ISOLATE コンテキストを作成するには SPU_CREATE_NOSCHED フラグも指定する必要がある。
mode 引き数 (からプロセスの umask(2) でセットされたビットを除いたもの) により、 spufs に作られる新しいディレクトリで使用されるアクセス許可が決まる。 利用できる mode 値の完全なリストについては stat(2) を参照。
成功すると、 spu_create() は新しいファイルディスクリプターを返す。 エラーの場合、-1 を返し、 errno に以下のリストに記載のエラーコードのいずれかを設定する。
pathname は spufs のマウントポイントの配下の場所を指して いなければならない。 慣例では /spu にマウントされる。
spu_create() システムコールはカーネル 2.6.16 で Linux に追加された。
このシステムコールは Linux 固有であり、 PowerPC アーキテクチャーでのみ実装されている。 このシステムコールを使ったプログラムは移植性がない。
glibc はこのシステムコールに対するラッパー関数を提供していない。 syscall(2) を使うこと。ただし、 spu_create() は より抽象度の高い SPU へのインターフェースを実装するライブラリから 利用されることを意図したものであり、通常のアプリケーションから 使用は意図されていない。推奨のライブラリについては http://www.bsc.es/projects/deepcomputing/linuxoncell/ を参照のこと。
spu_create() の利用例については spu_run(2) を参照。
この man ページは Linux man-pages プロジェクトのリリース 3.79 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。
2012-08-05 | Linux |