Manpages

名 前

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 ケ ー パ ビ リ テ ィ を 持 っ て い な い 。

フ ァ イ ル

pathnamespufs の マ ウ ン ト ポ イ ン ト の 配 下 の 場 所 を 指 し て い な け れ ば な ら な い 。 慣 例 で は /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/ に 書 か れ て い る 。