名 前
pthread_attr_setaffinity_np, pthread_attr_getaffinity_np − ス レ ッ ド 属 性 オ ブ ジ ェ ク ト の CPU affinity 属 性 の 設 定 /取 得 を 行 う
書 式
#define
_GNU_SOURCE /* See feature_test_macros(7) */
#include <pthread.h>
int
pthread_attr_setaffinity_np(pthread_attr_t
*attr,
size_t cpusetsize, const cpu_set_t
*cpuset);
int pthread_attr_getaffinity_np(const pthread_attr_t
*attr,
size_t cpusetsize, cpu_set_t
*cpuset);
−pthread で コ ン パ イ ル し て リ ン ク す る 。
説 明
pthread_attr_setaffinity_np() 関 数 は 、 attr が 参 照 す る ス レ ッ ド 属 性 オ ブ ジ ェ ク ト の CPU affinity マ ス ク 属 性 を cpuset で 指 定 さ れ た 値 に 設 定 す る 。 こ の 属 性 に よ り 、 ス レ ッ ド 属 性 オ ブ ジ ェ ク ト attr を 使 っ て 作 成 さ れ た ス レ ッ ド の CPU affinity マ ス ク が 決 定 さ れ る 。
pthread_attr_getaffinity_np() 関 数 は 、 attr が 参 照 す る ス レ ッ ド 属 性 オ ブ ジ ェ ク ト の CPU affinity マ ス ク 属 性 を cpuset が 指 す バ ッ フ ァ ー に 入 れ て 返 す 。
cpusetsize 引 き 数 は cpuset が 指 す バ ッ フ ァ ー の (バ イ ト 単 位 の ) 大 き さ で あ る 。 通 常 は 、 こ の 引 き 数 に は sizeof(cpu_set_t) を 指 定 す る こ と だ ろ う 。
CPU affinity マ ス ク の 詳 細 に つ い て は 、 sched_setaffinity(2) を 参 照 し て ほ し い 。 CPU 集 合 の 操 作 や 取 得 を 行 う 際 に 利 用 で き る マ ク ロ 群 の 説 明 は CPU_SET(3) を 参 照 し て ほ し い 。
返 り 値
成 功 す る と 、 こ れ ら の 関 数 は 0 を 返 す 。 エ ラ ー の 場 合 、 0 以 外 の エ ラ ー 番 号 を 返 す 。
エ ラ ー
EINVAL |
(pthread_attr_setaffinity_np()) cpuset が カ ー ネ ル が サ ポ ー ト す る CPU 集 合 に な い CPU を 指 定 し て い た 。 (CPU 集 合 を 表 現 す る の に 使 わ れ る カ ー ネ ル の デ ー タ 型 が サ ポ ー ト す る 集 合 の 範 囲 は 、 カ ー ネ ル の 設 定 オ プ シ ョ ン CONFIG_NR_CPUS に よ り 定 義 さ れ る )。 | ||
EINVAL |
(pthread_attr_getaffinity_np()) attr が 参 照 す る ス レ ッ ド 属 性 オ ブ ジ ェ ク ト の affinity マ ス ク 内 の CPU が 、 cpusetsize に よ り 指 定 さ れ た 範 囲 の 中 に な か っ た (す な わ ち 、 cpuset/cpusetsize が 小 さ す ぎ る )。 | ||
ENOMEM |
(pthread_attr_setaffinity_np()) メ モ リ ー を 割 り 当 て る こ と が で き な か っ た 。 |
バ ー ジ ョ ン
こ れ ら の 関 数 は glibc バ ー ジ ョ ン 2.3.4 以 降 で 提 供 さ れ て い る 。
準 拠
こ れ ら の 関 数 は 非 標 準 の GNU に よ る 拡 張 で あ る 。 そ の た め 、 名 前 に "_np" (nonportable; 移 植 性 が な い ) と い う 接 尾 辞 が 付 い て い る 。
注 意
(こ の バ ー ジ ョ ン だ け で あ る が ) glibc 2.3.3 で は 、 こ れ ら の 関 数 は cpusetsize 引 き 数 を 持 っ て い な か っ た 。 内 部 で 呼 ば れ る シ ス テ ム コ ー ル に 渡 さ れ る CPU セ ッ ト の 大 き さ は 常 に sizeof(cpu_set_t) で あ っ た 。
関 連 項 目
sched_setaffinity(2), pthread_attr_init(3), pthread_setaffinity_np(3), cpuset(7), pthreads(7)
こ の 文 書 に つ い て
こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。