SPU_CREATE
Section: Linux Programmer's Manual (2)
Updated: 2007-07-10
Index
JM Home Page
roff page
名前
spu_create - 新しい SPU コンテキストを生成する
書式
#include <sys/types.h>
#include <sys/spu.h>
int spu_create(const char *pathname, int flags, mode_t mode);
説明
spu_create()
システムコールは、Cell Broadband Engine アーキテクチャを実装した
PowerPC マシンにおいて、Synergistic Processor Unit (SPU) にアクセスする
ために使用される。
このシステムコールは、SPU に対する新しい論理コンテキストを
pathname
に生成し、そのコンテキストに関連付けられたファイルディスクリプタを返す。
pathname
は SPU ファイルシステム (SPUFS) のマウントポイント内の
存在しないディレクトリを指していなければならない。
spu_create()
が成功すると、
pathname
にディレクトリが生成され、そのディレクトリに
spufs(7)
で説明されているファイル群が配置される。
返されたファイルハンドラは、
spu_run(2)
に渡すか、クローズするかしかできない。
他の操作は定義されていない。
論理 SPU コンテキストが破棄されるのは、
コンテキスト自身へのファイルディスクリプタがクローズされ、
その中のファイルへのファイルディスクリプタが全てクローズされたときである。
SPU コンテキストが破棄されると、SPUFS 内のそのディレクトリの全てのエントリ
が削除される。
引き数
flags
にはゼロか以下の定数を指定できる。
- SPU_RAWIO
-
SPU のハードウェアレジスタのいくつかをユーザ空間にマッピングすることを
許可する。このフラグを指定するには
CAP_SYS_RAWIO
ケーパビリティが必要である。
SPUFS 内に新しく生成されたディレクトリとファイルのアクセス許可は、
mode
引き数からそのプロセスの
umask(2)
を引いた値に設定される。
各ファイルの実際のアクセス許可は、そのファイルが読み出しアクセスや
書き込みアクセスをサポートしているかも考慮して決まる。
返り値
成功すると、
spu_create(2)
は新しいファイルディスクリプタを返す。
エラーの場合、-1 を返し、
errno
に以下のリストに記載のエラーコードのいずれかを設定する。
エラー
- EACCES
-
現在のユーザが SPUFS のマウントポイントへの書き込み許可を持っていない。
- EEXIST
-
指定されたパス名の SPU コンテキストがすでに生成されている。
- EFAULT
-
pathname
が現在のアドレス空間で有効な文字列ポインタではない。
- EINVAL
-
pathname
が SPUFS マウントポインタ内のディレクトリではない。
- ELOOP
-
pathname
を解決するまでに辿ったシンボリックリンクが多過ぎた。
- EMFILE
-
そのプロセスがオープンできるファイル数の上限に達していた。
- ENAMETOOLONG
-
pathname
が長過ぎる。
- ENFILE
-
システム全体でオープンできるファイル数の上限に達していた。
- ENOENT
-
pathname
の一部が解決できなかった。
- ENOMEM
-
カーネルが必要なリソースの全てを割り当てることができなかった。
- ENOSPC
-
新しいコンテキストを生成するのに十分な SPU リソースがなかった、
または SPU コンテキスト数がそのユーザの特定の上限に達していた。
- ENOSYS
-
機能が動作中のシステムで提供されていない。理由は、
ハードウェアで SPU が提供されていないか、
spufs モジュールがロードされていないか、のどちらかである。
- ENOTDIR
-
pathname
の一部がディレクトリではない。
ファイル
pathname
は SPUFS のマウントポイントの配下の場所を指していなければならない。
慣例では、SPUFS は
/spu
にマウントされる。
バージョン
spu_create(2)
システムコールはカーネル 2.6.16 で Linux に追加された。
準拠
このシステムコールは Linux 固有であり、
ppc64 アーキテクチャでのみ実装されている。
このシステムコールを使ったプログラムは移植性がない。
注意
glibc はこのシステムコールに対するラッパー関数を提供していない。
syscall(2)
を使うこと。ただし、
spu_create()
は より抽象度の高い SPU へのインタフェースを実装するライブラリから
利用されることを意図したものであり、通常のアプリケーションから
使用は意図されていない。推奨のライブラリについては
http://www.bsc.es/projects/deepcomputing/linuxoncell/
を参照のこと。
バグ
実際のコードではここで述べた全ての機能が完全に実装されているわけではない。
関連項目
close(2),
spu_run(2),
capabilities(7),
spufs(7)
Index
- 名前
-
- 書式
-
- 説明
-
- 返り値
-
- エラー
-
- ファイル
-
- バージョン
-
- 準拠
-
- 注意
-
- バグ
-
- 関連項目
-
This document was created by
man2html,
using the manual pages.
Time: 03:26:56 GMT, April 25, 2010