SCHED_SETPARAM(2) FreeBSD システムコールマニュアル SCHED_SETPARAM(2)
名称
sched_setparam, sched_getparam − スケジュールパラメータの設定 / 取得 |
ライブラリ
標準 C ライブラリ (libc, −lc) |
書式
#include <sched.h> int |
sched_setparam(pid_t pid, const struct sched_param *param); int |
sched_getparam(pid_t pid, struct sched_param *param); |
解説 |
sched_setparam() システムコールは、 pid で指定するプロセスのスケジュール パラメータを、 param が指す構造体 sched_param の指定する値に設定します。 構造体 param のメンバ sched_priority の値は、 pid で指定するプロセスの現 在のスケジュール方針用の優先順位範囲内 (両端含む) の整数である必要があり ます。優先順位の数値が高いほど優先順位が高いことを表します。 この実装では、 pid の値が負の場合、システムコールは処理に失敗します。 pid で指定するプロセスが存在し、かつ呼び出し元プロセスにパーミッションが ある場合、プロセス ID が pid と等しいプロセスに対してスケジュールパラメー タを設定します。 pid が 0 の場合、呼び出し元プロセスに対してスケジュールパラメータを設定し ます。 この実装では、あるプロセスが別のプロセスのスケジュールパラメータにいつ影 響を及ぼせるのかという方針は、書込みスタイル操作として IEEE Std 1003.1b-1993 (‘‘POSIX.1’’) に指定されているものです。 ターゲットプロセスは、実行中にせよ実行中でないにせよ、優先順位が等しいか またはより高い、他のすべての実行可能なプロセスが実行されるようにスケ ジュールされた後で、実行を再開します。 pid 引数で指定するプロセスの優先順位が、最も優先順位の低い実行中のプロセ スの優先順位より高く設定されており、しかも指定のプロセスの実行準備ができ ている場合、 pid 引数で指定するプロセスは優先順位が最も低い実行中のプロセ スをプリエンプトします。同じように、 sched_setparam() を呼び出しているプ ロセスがその優先順位を、 1 つまたは複数の空でないプロセスリストの優先順位 より低く設定する場合、優先順位が最も高いリストの先頭のプロセスも呼び出し 元プロセスをプリエンプトします。このように、いずれのケースでも、優先順位 の高いプロセスが実行されてしまうまで、元のプロセスが要求した優先順位変更 の完了通知を受信しない可能性があります。 この実装では、 pid で指定するプロセスの現在のスケジュール方針が通常のタイ ムシェアリング (SCHED_OTHER; POSIX ソースでない場合は SCHED_NORMAL) であ るかアイドル方針 (POSIX ソースでない場合は SCHED_IDLE) であるなら、その動 作は、実在するリアルタイム優先順位よりも低い優先順位の SCHED_RR でプロセ スが実行されていたかのようになります。 sched_getparam() 関数は、 pid で指定するプロセスのスケジュールパラメータ を param が指す sched_param 構造体に入れて返します。 pid で指定するプロセスが存在してかつ、呼び出し元プロセスにパーミッション がある場合、プロセス ID が pid に等しいプロセスのスケジュールパラメータを 返します。 この実装では、あるプロセスが別のプロセスのスケジュールパラメータをいつ得 られるかの方針は、読取りスタイル操作として IEEE Std 1003.1b-1993 (‘‘POSIX.1’’) に詳説されているものです。 pid が 0 の場合、呼び出し元プロセスのスケジュールパラメータを返します。こ の実装では、 pid が負の場合、 sched_getparam システムコールは処理に失敗し ます。 |
戻り値
成功して終了したときには値 0 を返します。そうでない場合、値 -1 が返され、 グローバル変数 errno が設定されてエラーを示します。 |
エラー
処理に失敗すると、 errno を対応する値に設定します: |
[ENOSYS]
システムはこの機能をサポートするように構成されていませ ん。 [EPERM] [ESRCH] [EINVAL] 関連項目 |
sched_get_priority_max(2), sched_get_priority_min(2), sched_getscheduler(2), sched_rr_get_interval(2), sched_setscheduler(2), sched_yield(2) |
規格
sched_setparam() システムコールと sched_getparam() システムコールは IEEE Std 1003.1b-1993 (‘‘POSIX.1’’) に適合しています。 FreeBSD 10.0 March 12, 1998 FreeBSD 10.0 |