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