OSDN Git Service

(split) LDP: Release getcpu.2, migrate_pages.2, makedev.3, matherr.3.
[linuxjm/LDP_man-pages.git] / release / man2 / spu_create.2
1 .\" This is _*_ nroff _*_ source. Emacs, gimme all those colors :)
2 .\"
3 .\" Copyright (c) International Business Machines Corp., 2006
4 .\"
5 .\" This program is free software; you can redistribute it and/or
6 .\" modify it under the terms of the GNU General Public License as
7 .\" published by the Free Software Foundation; either version 2 of
8 .\" the License, or (at your option) any later version.
9 .\"
10 .\" This program is distributed in the hope that it will be useful,
11 .\" but WITHOUT ANY WARRANTY; without even the implied warranty of
12 .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
13 .\" the GNU General Public License for more details.
14 .\"
15 .\" You should have received a copy of the GNU General Public License
16 .\" along with this program; if not, write to the Free Software
17 .\" Foundation, Inc., 59 Temple Place, Suite 330, Boston,
18 .\" MA 02111-1307 USA
19 .\"
20 .\" HISTORY:
21 .\" 2005-09-28, created by Arnd Bergmann <arndb@de.ibm.com>
22 .\" 2006-06-16, revised by Eduardo M. Fleury <efleury@br.ibm.com>
23 .\" 2007-07-10, some polishing by mtk
24 .\"
25 .\" Japanese Version Copyright (c) 2007  Akihiro MOTOKI
26 .\"         all rights reserved.
27 .\" Translated 2007-10-23, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
28 .\"
29 .TH SPU_CREATE 2 2007-07-10 "Linux" "Linux Programmer's Manual"
30 .SH 名前
31 spu_create \- 新しい SPU コンテキストを生成する
32 .SH 書式
33 .nf
34 .B #include <sys/types.h>
35 .B #include <sys/spu.h>
36
37 .BI "int spu_create(const char *" pathname ", int " flags ", mode_t " mode ");"
38 .fi
39 .SH 説明
40 .BR spu_create ()
41 システムコールは、Cell Broadband Engine アーキテクチャを実装した
42 PowerPC マシンにおいて、Synergistic Processor Unit (SPU) にアクセスする
43 ために使用される。
44 このシステムコールは、SPU に対する新しい論理コンテキストを
45 .I pathname
46 に生成し、そのコンテキストに関連付けられたファイルディスクリプタを返す。
47 .I pathname
48 は SPU ファイルシステム (SPUFS) のマウントポイント内の
49 存在しないディレクトリを指していなければならない。
50 .BR spu_create ()
51 が成功すると、
52 .I pathname
53 にディレクトリが生成され、そのディレクトリに
54 .BR spufs (7)
55 で説明されているファイル群が配置される。
56
57 返されたファイルハンドラは、
58 .BR spu_run (2)
59 に渡すか、クローズするかしかできない。
60 他の操作は定義されていない。
61 論理 SPU コンテキストが破棄されるのは、
62 コンテキスト自身へのファイルディスクリプタがクローズされ、
63 その中のファイルへのファイルディスクリプタが全てクローズされたときである。
64 SPU コンテキストが破棄されると、SPUFS 内のそのディレクトリの全てのエントリ
65 が削除される。
66
67 引き数
68 .I flags
69 にはゼロか以下の定数を指定できる。
70 .TP
71 .B SPU_RAWIO
72 SPU のハードウェアレジスタのいくつかをユーザ空間にマッピングすることを
73 許可する。このフラグを指定するには
74 .B CAP_SYS_RAWIO
75 ケーパビリティが必要である。
76 .PP
77 SPUFS 内に新しく生成されたディレクトリとファイルのアクセス許可は、
78 .I mode
79 引き数からそのプロセスの
80 .BR umask (2)
81 を引いた値に設定される。
82 各ファイルの実際のアクセス許可は、そのファイルが読み出しアクセスや
83 書き込みアクセスをサポートしているかも考慮して決まる。
84 .SH 返り値
85 成功すると、
86 .BR spu_create (2)
87 は新しいファイルディスクリプタを返す。
88 エラーの場合、\-1 を返し、
89 .I errno
90 に以下のリストに記載のエラーコードのいずれかを設定する。
91 .SH エラー
92 .TP
93 .B EACCES
94 現在のユーザが SPUFS のマウントポイントへの書き込み許可を持っていない。
95 .TP
96 .B EEXIST
97 指定されたパス名の SPU コンテキストがすでに生成されている。
98 .TP
99 .B EFAULT
100 .I pathname
101 が現在のアドレス空間で有効な文字列ポインタではない。
102 .TP
103 .B EINVAL
104 .I pathname
105 が SPUFS マウントポインタ内のディレクトリではない。
106 .TP
107 .B ELOOP
108 .I pathname
109 を解決するまでに辿ったシンボリックリンクが多過ぎた。
110 .TP
111 .B EMFILE
112 そのプロセスがオープンできるファイル数の上限に達していた。
113 .TP
114 .B ENAMETOOLONG
115 .I pathname
116 が長過ぎる。
117 .TP
118 .B ENFILE
119 システム全体でオープンできるファイル数の上限に達していた。
120 .TP
121 .B ENOENT
122 .I pathname
123 の一部が解決できなかった。
124 .TP
125 .B ENOMEM
126 カーネルが必要なリソースの全てを割り当てることができなかった。
127 .TP
128 .B ENOSPC
129 新しいコンテキストを生成するのに十分な SPU リソースがなかった、
130 または SPU コンテキスト数がそのユーザの特定の上限に達していた。
131 .TP
132 .B ENOSYS
133 機能が動作中のシステムで提供されていない。理由は、
134 ハードウェアで SPU が提供されていないか、
135 spufs モジュールがロードされていないか、のどちらかである。
136 .TP
137 .B ENOTDIR
138 .I pathname
139 の一部がディレクトリではない。
140 .SH ファイル
141 .I pathname
142 は SPUFS のマウントポイントの配下の場所を指していなければならない。
143 慣例では、SPUFS は
144 .I /spu
145 にマウントされる。
146 .SH バージョン
147 .BR spu_create (2)
148 システムコールはカーネル 2.6.16 で Linux に追加された。
149 .SH 準拠
150 このシステムコールは Linux 固有であり、
151 ppc64 アーキテクチャでのみ実装されている。
152 このシステムコールを使ったプログラムは移植性がない。
153 .SH 注意
154 glibc はこのシステムコールに対するラッパー関数を提供していない。
155 .BR syscall (2)
156 を使うこと。ただし、
157 .BR spu_create ()
158 は より抽象度の高い SPU へのインタフェースを実装するライブラリから
159 利用されることを意図したものであり、通常のアプリケーションから
160 使用は意図されていない。推奨のライブラリについては
161 .I http://www.bsc.es/projects/deepcomputing/linuxoncell/
162 を参照のこと。
163 .SH バグ
164 実際のコードではここで述べた全ての機能が完全に実装されているわけではない。
165 .\" .SH AUTHOR
166 .\" Arnd Bergmann <arndb@de.ibm.com>
167 .SH 関連項目
168 .BR close (2),
169 .BR spu_run (2),
170 .BR capabilities (7),
171 .BR spufs (7)