名称
pthread_getschedparam(), pthread_setschedparam() ― スケジューリング方針と関連パラメータの取得/設定
構文
#include <pthread.h>
int pthread_getschedparam(
pthread_t thread,
int *policy,
struct sched_param *param
);
int pthread_setschedparam(
pthread_t thread,
int policy,
const struct sched_param *param
);
パラメータ
| thread | | スケジューリング方針と関連パラメータの設定または取得の対象となるスレッド。 |
| policy | | このパラメータは、 thread のスケジューリング方針が格納されるメモリー位置を指す
(get 関数) か、または thread の新しいスケジューリング方針の値を指定す (set 関数)。 |
| param | | このパラメータは、 thread のスケジューリングパラメータが格納されるメモリー位置を指します
(get 関数) か、 thread の新しいスケジューリングパラメータを指定します (set
関数)。 |
説明
これらの関数により、マルチスレッドプロセス内の個々のスレッドにおけるスケジューリング方針とその関連パラメータを取り出して変更することができます。
有効なスケジューリング方針とそれに関連付けられたスケジューリングパラメータの値は、 <sched.h> で定義されています。
pthread_setschedparam() は、 thread のスケジューリング方針と関連スケジューリングパラメータを、それぞれ policy および param で指定された方針とパラメータに変更します。 HP-UX でスレッドのスケジューリングパラメータを変更するときには、適切な特権が必要です。 pthread_setschedparam() を正常に呼び出すためには、呼び出したプロセスが適切な特権を持っているか、 PRIV_RTSCHED アクセス権のあるグループのメンバーであることが必要です。
pthread_getschedparam() 関数は、 thread のスケジューリング方針と関連パラメータを取り出して、それぞれ policy と param に格納します。 返される値は、実際のスケジューリング内容を表しています。優先順位の継承や最高優先順位属性で影響を受ける可能性のある一時的な値ではありません。
戻り値
正常終了すると、 pthread_setschedparam() と thread_getschedparam() は 0 を返します。
それ以外の場合、エラーの内容を表すエラー番号を返します (errno 変数は使用しません)。
エラー
次の場合、 pthread_getschedparam() と pthread_setschedparam() 関数は、対応するエラー番号を返します。
| [ENOSYS] | | _POSIX_THREAD_PRIORITY_SCHEDULING が未定義で、これらの関数がサポートされていない場合。 |
次の条件が成立する場合、 pthread_setschedparam() 関数は、対応するエラー番号を返します。
| [EINVAL] | | policy または param 中のあるスケジューリングパラメータが無効である場合。 |
| [ENOTSUP] | | policy またはスケジューリングパラメータに、サポートされていない値が指定されている場合。 |
| [EPERM] | | 呼び出し元に、 policy で指定されたスケジューリング方針または param で指定されたスケジューリングパラメータを、 thread に設定するためのパーミッションがない場合。 |
| [ESRCH] | | thread に対応するスレッドが見つからない場合。 |
次の条件が成立する場合、 pthread_getschedparam() 関数は、対応するエラー番号を返します。
| [ESRCH] | | thread に対応するスレッドが見つからない場合。 |
| [EINVAL] | | policy または param で指定された値が無効である場合。 |
注意
スケジューリング方針が SCHED_FIFO または SCHED_RR の場合、スケジューリングパラメータには、 sched_param 構造体の sched_priority メンバーだけに値が指定されていれば十分です。 他のすべてのスケジューリング方針は、実装方式ごとに定義されます。
使用している実装方式で定義されるスケジューリング方針の詳細については、 rtsched(2) と <sched.h>
のマニュアルを参照してください。
著者
pthread_getschedparam() と pthread_setschedparam() は、IEEE
POSIX P1003.1c 規格から派生しました。
参照
pthread_attr_setschedparam(3T), pthread_attr_setschedpolicy(3T), pthread_attr_getschedparam(3T), pthread_attr_getschedpolicy(3T), rtsched(2)
標準準拠
pthread_getschedparam(): POSIX 1003.1c.
pthread_setschedparam(): POSIX 1003.1c.