PTHREAD_AFFINITY_NP(3) | FreeBSD Library Functions Manual | PTHREAD_AFFINITY_NP(3) |
名称
pthread_getaffinity_np, pthread_setaffinity_np — CPU 類似性を管理するライブラリ
POSIX Threads Library (libpthread, -lpthread)書式
#include < pthread_np.h> int
pthread_getaffinity_np( pthread_t td, size_t cpusetsize, cpuset_t *cpusetp);
int
pthread_setaffinity_np( pthread_t td, size_t cpusetsize, const cpuset_t *cpusetp);
解説
pthread_getaffinity_np() と pthread_setaffinity_np() は、指定されたスレッドに利用可能な CPU のセットの操作を許可します。タイプ cpuset_t のマスクは、 CPU_SET マクロを使用して組み立てられています。カーネルは、セット中の指定されたすべての CPU が、存在している限り、大きなセットを許容します。カーネルの利用法より小さいセットは、たとえ結果のセットがユーザの供給されたセットの中で適合しても、 pthread_getaffinity_np() への呼び出しのときにエラーを起こします。 pthread_setaffinity_np() への呼び出しは、制限なしで小さいセットを許容します。
供給されたマスクは、 cpusetsize バイトのサイズがあるはずです。このサイズは、 < sys/cpuset.h> で定義される CPU_SETSIZE の値によって最終的に決定される、 sizeof(cpuset_t)
を通常呼び出すことによって提供されます。
pthread_getaffinity_np() は、 td によって指定されたスレッドからマスクを検索し取り出し、 cpusetp によって提供された空間にそれを格納します。
pthread_setaffinity_np() は、 td によって指定されたスレッドのためのマスクを cpusetp の値に設定します。
戻り値
成功するなら、 pthread_getaffinity_np() と pthread_setaffinity_np() 関数は、0 を返します。そうでなければ、エラーを示すためのエラー番号が、返されます。エラー
pthread_getaffinity_np() と pthread_setaffinity_np() 関数は、次の場合に失敗します:- [ EDEADLK]
- pthread_setaffinity_np() 呼び出しが、セットがスレッドの匿名のマスクと重ならないので、実行する有効な CPU なしでスレッドを残します。
- [ EFAULT]
- 渡された cpusetp ポインタが無効でした。
- [ ESRCH]
- td 引数で指定されたスレッドは、見つけることができませんでした。
- [ ERANGE]
- cpusetsize は、カーネルのセットサイズより不合理に大きいかまたは小さいサイズです。
- [ EPERM]
- 呼び出しスレッドは、操作を完了するための資格証明を必要としませんでした。
関連項目
cpuset(1), cpuset(2), cpuset_getid(2), cpuset_setid(2), pthread(3), pthread_attr_getaffinity_np(3), pthread_attr_setaffinity_np(3)規格
pthread_getaffinity_np と pthread_setaffinity_np 関数は、標準的でない FreeBSD の拡張であり、他のオペレーティングシステムで利用可能でないかもしれません。歴史
pthread_getaffinity_np と pthread_setaffinity_np 関数は、 FreeBSD 7.2 ではじめて登場しました。作者
pthread_getaffinity_np と pthread_setaffinity_np <davidxu@FreeBSD.org>によって書かれ、このマニュアルページは、 <delphij@FreeBSD.org>によって書かれました。March 23, 2010 | FreeBSD |