pthread_setschedparam サブルーチン
目的
スレッドの 'schedpolicyと 'schedparam属性を設定する。
ライブラリー
スレッドライブラリlibpthreads.a)
構文
#include <pthread.h>
#include <sys/sched.h>
int pthread_setschedparam (thread, schedpolicy, schedparam)
pthread_t thread;
int schedpolicy;
const struct sched_param *schedparam;説明
pthread_setschedparamサブルーチンは、スレッドの schedpolicy 属性と schedparam 属性を動的に設定する。 schedpolicy 属性は、スレッドのスケジューリング・ポリシーを指定します。 schedparam属性は、この属性オブジェクトで作成されたスレッドのスケジューリング・パラメータを指定します。 このsched_priorityフィールドには、スレッドの優先順位が格納されている。 これは整数値です。
対象スレッドがシステム競合スコープを持っている場合、プロセスはスケジューリング・ポリシーをSCHED_FIFOまたはSCHED_RRのいずれかに設定するルート権限を持っていなければならない。
このサブルーチンは、基本オペレーティング・システム (BOS) ランタイムの一部です。 このサブルーチンの実装は、優先順位スケジューリングPOSIXオプションに依存する。 優先順位スケジューリング POSIX オプションは、オペレーティング・システムにインプリメントされています。
パラメーター
| 項目 | 説明 |
|---|---|
| thread | ターゲット・スレッドを指定します。 |
| schedpolicy | 設定する schedpolicy 属性を指します。 以下のいずれかの値でなければなりません。
注: プロセス・コンテンション有効範囲および SCHED_OTHER ポリシーを持つスレッドの優先順位はカーネルによって制御されます。したがって、そのようなスレッドの優先順位を設定しても効果はありません。 ただし、システム・コンテンション有効範囲および SCHED_OTHER ポリシーを持つスレッドの優先順位は変更できます。 この変更は、基礎となるカーネル・スレッド・ナイス値に直接影響する。
|
| schedparam | 設定するスケジューリング・パラメーターが保管される場所を指します。 このsched_priorityフィールドは1から127の範囲でなければならず、1が最も優先度が低く、127が最も優先度が高い。 schedpolicy が SCHED_OTHER の場合、 sched_priority は 40 から 80 の範囲でなければなりません。ここで、40 は優先順位が最も低く、80 は優先順位が最も高くなります。 ユーザーは、スケジューリング・ポリシーを SCHED_OTHER に設定するときに、スレッドの優先順位を変更することができます。 pthread_setschedparam」に渡すことのできる値は、40から80の範囲である。 60 より高い優先順位を設定できるのは、特権ユーザーのみです。 1 から 39 の範囲の値は 40 と同じ優先順位を提供し、81 から 127 の範囲の値は 80 と同じ優先順位を提供します。 |
戻り値
正常終了すると、0 が戻されます。 それ以外の場合は、エラー・コードが戻されます。
エラー・コード
pthread_setschedparamサブルーチンは、以下の場合に失敗する:
| 項目 | 説明 |
|---|---|
| EINVAL | thread パラメーターまたは schedparam パラメーターが無効です。 |
| ENOSYS | 優先順位スケジューリングの POSIX オプションは実装されていません。 |
| ENOTSUP | schedpolicy 属性または schedparam 属性の値はサポートされません。 |
| EPERM | ターゲット・スレッドに、操作を実行するための十分な許可がないか、または既に mutex プロトコルを使用しています。 |
| ESRCH | スレッド thread は存在しません。 |