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