名 前
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 か
以 下 の 定 数 の
組 み 合 わ せ (ビ
ッ ト 単 位 の 論
理 和 ) を 指 定 で
き る 。
SPU_CREATE_EVENTS_ENABLED
DMA エ ラ ー を 通 知 す る の に シ グ ナ ル を 使 う の で は な く 、 spu_run(2) の event 引 き 数 を 使 用 す る 。
SPU_CREATE_GANG コ ン テ キ ス ト の 代 わ り に SPU gang を 作 成 す る 。 (gang は 、 機 能 的 に 互 い に 関 係 し て い て 、 ス ケ ジ ュ ー リ ン グ パ ラ メ ー タ ー (優 先 度 と ポ リ シ ー ) を 共 有 す る SPU コ ン テ キ ス ト の グ ル ー プ で あ る 。 将 来 、 グ ル ー プ 全 体 が 一 つ の 単 位 と し て ス イ ッ チ イ ン /ス イ ッ チ ア ウ ト さ れ る gang ス ケ ジ ュ ー リ ン グ が 実 装 さ れ る か も し れ な い 。 )
pathname 引 き 数 で 指 定 さ れ た 場 所 に 新 し い デ ィ レ ク ト リ が 作 成 さ れ る 。 こ の gang を 使 っ て 他 の SPU コ ン テ キ ス ト を 保 持 す る こ と が で き る 。 そ れ に は 、 そ れ 以 降 の spu_create() に gang デ ィ レ ク ト リ 内 の パ ス 名 を 渡 す 。
SPU_CREATE_NOSCHED
SPU ス ケ ジ ュ ー ラ ー の 影 響 を 受 け な い コ ン テ キ ス ト を 作 成 す る 。 一 度 実 行 さ れ る と 、 呼 び 出 し た プ ロ セ ス が 破 棄 さ れ る ま で こ の コ ン テ キ ス ト が ス ケ ジ ュ ー リ ン グ で 追 い 出 さ れ る こ と は な い 。 こ の コ ン テ キ ス ト は SPU か ら 削 除 さ れ る こ と は な い の で 、 SPU_CREATE_NOSCHED コ ン テ キ ス ト で は い く つ か の 機 能 は 無 効 に さ れ る 。 spufs の こ の コ ン テ キ ス ト の デ ィ レ ク ト リ で は 一 部 の フ ァ イ ル だ け が で き る 。 ま た 、 SPU_CREATE_NOSCHED コ ン テ キ ス ト は ク ラ ッ シ ュ し た 際 に コ ア フ ァ イ ル を ダ ン プ で き な い 。
SPU_CREATE_NOSCHED コ ン テ キ ス ト を 作 成 す る に は CAP_SYS_NICE ケ ー パ ビ リ テ ィ が 必 要 で あ る 。
SPU_CREATE_ISOLATE 隔 離 さ れ た SPU コ ン テ キ ス ト を 作 成 す る 。 隔 離 さ れ た コ ン テ キ ス ト は い く つ か の PPE (PowerPC Processing Element) 命 令 か ら 保 護 さ れ る 。 SPU ロ ー カ ル ス ト ア や NPC レ ジ ス タ ー へ の ア ク セ ス な ど で あ る 。
SPU_CREATE_ISOLATE コ ン テ キ ス ト を 作 成 す る に は SPU_CREATE_NOSCHED フ ラ グ も 指 定 す る 必 要 が あ る 。
SPU_CREATE_AFFINITY_SPU
別 の SPU コ ン テ キ
ス ト と affinity (親 和
性 ) を 持 っ た コ
ン テ キ ス ト を
作 成 す る 。 こ
の affinity 情 報 は SPU ス
ケ ジ ュ ー リ ン
グ ア ル ゴ リ ズ
ム で 使 用 さ れ
る 。 こ の フ ラ
グ を 使 う 際 に
は 、 他 の SPU コ ン
テ キ ス ト を 指
す フ ァ イ ル デ
ィ ス ク リ プ タ
ー を neighbor_fd 引 き
数 を 渡 す 必 要
が あ る 。
SPU_CREATE_AFFINITY_MEM シ ス テ
ム メ モ リ ー と
affinity (親 和 性 ) を 持
っ た コ ン テ キ
ス ト を 作 成 す
る 。 こ の affinity 情
報 は SPU ス ケ ジ ュ
ー リ ン グ ア ル
ゴ リ ズ ム で 使
用 さ れ る 。
mode 引 き 数 (か ら プ ロ セ ス の umask(2) で セ ッ ト さ れ た ビ ッ ト を 除 い た も の ) に よ り 、 spufs に 作 ら れ る 新 し い デ ィ レ ク ト リ で 使 用 さ れ る ア ク セ ス 許 可 が 決 ま る 。 利 用 で き る mode 値 の 完 全 な リ ス ト に つ い て は stat(2) を 参 照 。
返 り 値
成 功 す る と 、 spu_create() は 新 し い フ ァ イ ル デ ィ ス ク リ プ タ ー を 返 す 。 エ ラ ー の 場 合 、 −1 を 返 し 、 errno に 以 下 の リ ス ト に 記 載 の エ ラ ー コ ー ド の い ず れ か を 設 定 す る 。
エ ラ ー
EACCES 現 在 の ユ ー ザ ー が |
spufs(7) の マ ウ ン ト ポ イ ン ト へ の 書 き 込 み 許 可 を |
持 っ て い な い 。
EEXIST 指 定 さ れ た パ ス 名 で |
SPU コ ン テ キ ス ト が す で に 生 成 さ れ て い る 。 | ||
EFAULT |
pathname が 呼 び 出 し 元 の プ ロ セ ス の ア ド レ ス 空 間 で 有 効 な 文 字 列 ポ イ ン タ ー で は な い 。
EINVAL |
pathname が SPUFS マ ウ ン ト ポ イ ン ト 内 の デ ィ レ ク ト リ で は な い 。 ま た は 、 無 効 な フ ラ グ が 指 定 さ れ た 。 | ||
ELOOP |
pathname を 解 決 す る ま で に 辿 っ た シ ン ボ リ ッ ク リ ン ク が 多 過 ぎ た 。 | ||
EMFILE |
そ の プ ロ セ ス が オ ー プ ン で き る フ ァ イ ル 数 の 上 限 に 達 し て い た 。
ENAMETOOLONG |
pathname が 長 過 ぎ る 。
ENFILE シ ス テ ム 全 体 で オ ー プ ン で き る フ ァ イ ル 数 の 上 限 に 達 し て い た 。 | |
ENODEV 隔 離 さ れ た コ ン テ キ ス ト が 要 求 さ れ た が 、 ハ ー ド ウ ェ ア が |
SPU ア イ ソ レ ー シ ョ ン を サ ポ ー ト し て い な い 。
ENOENT |
pathname の 一 部 が 解 決 で き な か っ た 。 |
|||
ENOMEM |
カ ー ネ ル が 必 要 な リ ソ ー ス の 全 て を 割 り 当 て る こ と が で き な か っ た 。
ENOSPC 新 し い コ ン テ キ ス ト を 生 成 す る の に 十 分 な |
SPU リ ソ ー ス が な か っ た 、 |
ま た は SPU コ ン テ キ ス ト 数 が そ の ユ ー ザ ー の 特 定 の 上 限 に 達 し て い た 。
ENOSYS 機 能 が 動 作 中 の シ ス テ ム で 提 供 さ れ て い な い 。 理 由 は 、 ハ ー ド ウ ェ ア で |
SPU が 提 供
さ れ て い な い
か 、 spufs モ ジ ュ ー
ル が ロ ー ド さ
れ て い な い か
、 の ど ち ら か
で あ る 。
ENOTDIR
pathname の 一 部 が デ ィ レ ク ト リ で は な い 。
EPERM |
SPU_CREATE_NOSCHED フ ラ グ が 指 定 さ れ た が 、 ユ ー ザ ー が CAP_SYS_NICE ケ ー パ ビ リ テ ィ を 持 っ て い な い 。 |
フ ァ イ ル
pathname は spufs の マ ウ ン ト ポ イ ン ト の 配 下 の 場 所 を 指 し て い な け れ ば な ら な い 。 慣 例 で は /spu に マ ウ ン ト さ れ る 。
バ ー ジ ョ ン
spu_create() シ ス テ ム コ ー ル は カ ー ネ ル 2.6.16 で Linux に 追 加 さ れ た 。
準 拠
こ の シ ス テ ム コ ー ル は Linux 固 有 で あ り 、 PowerPC ア ー キ テ ク チ ャ ー で の み 実 装 さ れ て い る 。 こ の シ ス テ ム コ ー ル を 使 っ た プ ロ グ ラ ム は 移 植 性 が な い 。
注 意
glibc は こ の シ ス テ ム コ ー ル に 対 す る ラ ッ パ ー 関 数 を 提 供 し て い な い 。 syscall(2) を 使 う こ と 。 た だ し 、 spu_create() は よ り 抽 象 度 の 高 い SPU へ の イ ン タ ー フ ェ ー ス を 実 装 す る ラ イ ブ ラ リ か ら 利 用 さ れ る こ と を 意 図 し た も の で あ り 、 通 常 の ア プ リ ケ ー シ ョ ン か ら 使 用 は 意 図 さ れ て い な い 。 推 奨 の ラ イ ブ ラ リ に つ い て は http://www.bsc.es/projects/deepcomputing/linuxoncell/">http://www.bsc.es/projects/deepcomputing/linuxoncell/ を 参 照 の こ と 。
例
spu_create() の 利 用 例 に つ い て は spu_run(2) を 参 照 。
関 連 項 目
close(2), spu_run(2), capabilities(7), spufs(7)
こ の 文 書 に つ い て
こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。