bindprocessor サブルーチン

目的

カーネル・スレッドをプロセッサーにバインドします。

ライブラリー

標準 C ライブラリー (libc.a)

構文

#include <sys/processor.h>
int bindprocessor (What, Who, Where)
int What;
int Who;
cpu_t Where;

説明

bindprocessor サブルーチンは、単一のカーネル・スレッド、またはプロセス内のすべてのカーネル・スレッドをプロセッサーにバインドし、バインドされたスレッドをそのプロセッサーで実行するように強制します。 プロセスそのものがバインドされるのではなく、そのカーネル・スレッドがバインドされるということを理解しておく必要があります。 カーネル・スレッドは、いったんバインドされると、後でアンバインドされない限り、常に選択されたプロセッサー上で実行されるようにスケジュールされます。 新しいスレッドが作成されると、そのスレッドのバインド属性はそれを作成したスレッドと同じになります。 このことは、fork サブルーチンによって作成された新しいプロセス内の初期スレッドに適用されます。新しいスレッドは、fork を呼び出したスレッドのバインド属性を継承します。 exec サブルーチンが呼び出されると、スレッド・プロパティーは変更されません。

ターゲット・プロセスに Resource Attachmentがある場合、 bindprocessor サブルーチンは失敗します。

プロセッサー・バインディングを使用するプログラムは、動的論理区画化 (DLPAR) を認識している必要があります。

パラメーター

項目 説明
What プロセスまたはスレッドがプロセッサーにバインドされているかどうかを指定します。 What パラメーターには、以下のいずれかの値を指定できます。
BINDPROCESS (BINDPROCESS)
プロセスがプロセッサーにバインドされています。
BINDTHREAD (BINDTHREAD)
スレッドがプロセッサーにバインドされています。
担当者 プロセッサーにバインドされるプロセスまたはスレッドを指定する、 What パラメーターに該当するプロセス ID またはスレッド ID を示します。
各項の説明は次のとおりです。 Where パラメーターにバインド CPU ID を指定すると、プロセスまたはスレッドのバインド先のプロセッサーを指定します。 値 PROCESSOR_CLASS_ANY は、指定されたプロセスまたはスレッドをアンバインドします。これにより、任意のプロセッサーで実行できるようになります。

sysconf サブルーチンは、システム内のオンライン・プロセッサーの数に関する情報を検索するために使用できます。

戻り値

正常終了すると、 bindprocessor サブルーチンは 0 を戻します。 そうでない場合は-1が返され、エラーを示すerrnoグローバル変数が設定される。

エラー・コード

以下のいずれかが該当する場合、 bindprocessor サブルーチンは失敗します。

項目 説明
EINVAL What パラメーターが無効であるか、 Where パラメーターが無効なプロセッサー番号または現在使用できないプロセッサー・クラスを示しています。
ESRCH 指定されたプロセスまたはスレッドは存在しません。
EPERM 呼び出し側には root ユーザー権限がなく、 Who パラメーターは、呼び出し側のプロセスとは異なる実ユーザー ID または実効ユーザー ID を持つ、プロセスまたはプロセスに属するスレッドのいずれかを指定します。 ターゲット・プロセスに 「リソース接続」があります。