1 .\" This is _*_ nroff _*_ source. Emacs, gimme all those colors :)
3 .\" Copyright (c) International Business Machines Corp., 2006
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.
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.
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,
21 .\" 2005-09-28, created by Arnd Bergmann <arndb@de.ibm.com>,
22 .\" Mark Nutter <mnutter@us.ibm.com> and
23 .\" Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
24 .\" 2006-06-16, revised by Eduardo M. Fleury <efleury@br.ibm.com>
25 .\" 2007-07-10, quite a lot of polishing by mtk
27 .\" Japanese Version Copyright (c) 2007 Akihiro MOTOKI
28 .\" all rights reserved.
29 .\" Translated 2007-10-23, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
31 .TH SPUFS 7 2007-07-10 "Linux" "Linux Programmer's Manual"
35 SPU ファイルシステムは、Cell Broadband Engine アーキテクチャを実装した
36 PowerPC マシンにおいて、Synergistic Processor Unit (SPU) にアクセスする
39 このファイルシステムでは、POSIX 共有メモリやメッセージキューに
41 ファイルシステムに書き込み許可を持つユーザは
43 を使って spufs のルートディレクトリに SPU コンテキストを作成できる。
45 各 SPU コンテキストは、あらかじめ定義されたファイル群を含む
47 これらのファイルを使って、論理 SPU の状態を操作できる。
48 ユーザはこれらのファイルのアクセス許可を変更することはできるが、
53 マウントポイントを所有するユーザを設定する。
57 マウントポイントを所有するグループを設定する。
65 といった通常のシステムコールに対する標準的な振る舞いを示すが、
66 多くの場合通常のファイルシステムでサポートされている操作の一部分だけが
67 サポートされている。以下のリストでは、サポートされている操作と
68 それぞれのマニュアルページに書かれている標準的な振る舞いとの違いに
88 構造体のフィールドのうち信頼できる情報が入っているのは
96 .BR chmod (2)/ fchmod (2)
98 .BR chown (2)/ fchown (2)
100 そのファイルが対応している操作と矛盾するアクセス許可を
109 このファイルは通常の共有メモリファイルと同様にアクセスでき、
110 SPU のアドレス空間にはコードとデータの両方を格納できる。
116 .BR read "(2), " pread "(2), " write "(2), " pwrite "(2), " lseek (2)
123 ファイルサイズは SPU のローカルストレージのサイズであり、
128 をプロセスのアドレス空間にマッピングすると、
130 SPU のローカル・ストレージにアクセスできるようになる。
134 SPU から CPU への通信用の一つ目のメールボックス。
135 このファイルは読み出し専用で、読み出しは 32ビット単位で行う。
136 このファイルは非停止 (non-blocking) モードでのみ使用でき、
138 であってもこのファイルで停止 (block) することはない。
153 メールボックスにデータがない場合、\-1 が返り、
157 に設定される。データの読み出しに成功した場合、
158 4 バイトがデータバッファに格納され、返り値として 4 が返される。
162 SPU から CPU への通信用の二つ目のメールボックスである。
163 このファイルは一つ目のメールボックスファイルと似ているが、
164 停止 (blocking) I/O モードでの読み出しが可能である。したがって、
166 や同様のシステムコールを使って、このファイルを監視することができる。
181 メールボックスにデータがない場合、ファイルディスクリプタが
183 でオープンされていれば、返り値は \-1 となり、
189 メールボックスにデータがない場合で、ファイルディスクリプタが
192 SPU が自分の割り込みメールボックスチャネル (interrupt mailbox channel)
197 4 バイトがデータバッファに格納され、返り値として 4 が返される。
204 .I "(POLLIN | POLLRDNORM)"
209 CPU から SPU への通信用のメールボックス。
210 このファイルは書き込み専用で、書き込みは 32ビット単位で行う。
215 を使ってメールボックスに再度空きができるまで待つことができる。
230 メールボックスに空き領域がない場合、ファイルディスクリプタが
232 でオープンされていれば、返り値は \-1 となり、
238 メールボックスに空き領域がない場合で、ファイルディスクリプタが
241 SPU が自分の PPE メールボックスチャネルから読み出しを行うまで
244 データの書き込みに成功した場合、返り値として 4 が返される。
251 .I "(POLLOUT | POLLWRNORM)"
255 .BR /mbox_stat ", " /ibox_stat ", " /wbox_stat
257 各メールボックスの現在のキュー長を保持する。
258 具体的には、停止 (blocking) せずに、
262 に何ワードを書き込むことができるか、ということである。
263 これらのファイルは 4 バイト単位でのみ読み出しが可能で、
279 それ以外の場合、データバッファに 4 バイトの値が書き込まれる。
280 この値は、各メールボックスにおいて停止せずに、または
291 .BR /npc ", " /decr ", " /decr_status ", " /spu_tag_mask ", " \
292 /event_mask ", " /srr0
293 これらのファイルは SPU の内部レジスタを公開するものである。
294 値は、各レジスタの数値を含むアスキー文字列で表現される。
295 これらのファイルはデバッグ用として読み出し/書き込みの両モードで利用できるが、
296 プログラムの通常の操作はこれらのファイルに依存すべきではない。
299 以外へのアクセスでは SPU コンテキストの保存が必須であり、
300 SPU コンテキストの保存は非常に効率が悪いからである。
315 SPU の DMA 用の MFA タグマスク
324 これらのファイルに対して可能な操作は以下である。
331 がレジスタ値と改行 (newline) 文字 1 個を格納するのに必要な長さより短い場合、
332 同じファイルディスクリプタを続けて read することで、文字列全体を読み出すこと
333 ができる。この際、実行中の SPU タスクによりレジスタ値の変更の影響は受けない。
334 文字列全体が読み出されると、それ以降の read 操作では 0 バイトが返され、
335 新しい値を読み出すには新しいファイルディスクリプタをオープンする必要がある。
340 操作はレジスタ値を文字列で指定された値に設定する。
341 文字列の解釈は先頭から開始され、数字以外の文字が初めて登場するか、
343 同じファイルディスクリプタへ続けて write を行うと、
344 後の write により前の設定が上書きされる。
348 このファイルにより Floating Point Status and Control Register に
349 アクセスできる。このファイルは大きさ 4 バイトである。
363 それ以外の場合、データバッファに 4 バイトの値が書き込まれる。
377 それ以外の場合、 4 バイトの値がデータバッファからコピーされ、
382 .BR /signal1 ", " /signal2
384 SPU の二つのシグナル通知チャネル (signal notification channel) に
386 これらは 32 ビット単位の読み書きができる。
387 これらのファイルの一つに書き込みを行うと、その SPU の割り込みが
389 シグナルファイルへ書き込まれた値は、チャネル経由で SPU で読み出したり、
390 このファイル経由でホストのユーザ空間で読み出したりできる。
391 SPU が値を読み出した後では、値は 0 にリセットされる。
408 それ以外の場合、データバッファに 4 バイトの値が書き込まれる。
409 書き込まれる値は、指定されたシグナル通知レジスタの現在の値である。
420 それ以外の場合、 4 バイトの値がデータバッファからコピーされ、
421 指定されたシグナル通知レジスタの値が更新される。
422 シグナル通知レジスタの更新には、レジスタ値を入力データで置き換えるモードと
423 以前の値と入力データのビット単位の OR をとった値に更新するモードがある。
430 .BR /signal1_type ", " /signal2_type
436 これらのファイルは数値を表すアスキー文字列を保持し、
437 読み出すと "1" か "0" のどちらかが得られる。
438 モード 0 (上書きモード) では、ハードウェアはシグナルチャネルの内容を
439 シグナルチャネルに書き込まれたデータで置き換える。
440 モード 1 (論理 OR モード) では、ハードウェアはシグナルチャネルに
453 がレジスタの数値と改行 (newline) 文字 1 個を格納するのに必要な長さより
454 短い場合、同じファイルディスクリプタを続けて read することで、
456 文字列全体が読み出されると、それ以降の read 操作では 0 バイトが返され、
457 新しい値を読み出すには新しいファイルディスクリプタをオープンする必要がある。
462 操作はレジスタ値を文字列で指定された値に設定する。
463 文字列の解釈は先頭から開始され、数字以外の文字が初めて登場するか、
465 同じファイルディスクリプタへ続けて write を行うと、
466 後の write により前の設定が上書きされる。
470 .IR /etc/fstab " entry"
471 none /spu spufs gid=spu 0 0
473 .\" Arnd Bergmann <arndb@de.ibm.com>,
474 .\" Mark Nutter <mnutter@us.ibm.com> and
475 .\" Ulrich Weigand <Ulrich.Weigand@de.ibm.com>