スポンサーリンク

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]
要求しているプロセスは、 IEEE Std 1003.1b-1993 (‘‘POSIX.1’’) で詳説されているパーミッションを持ってい ません。

[ESRCH]
pid
で指定したプロセスに対応するプロセスが見つかりませ ん。

[EINVAL]
sched_setparam
() で、要求された 1 つ以上のスケジュール パラメータが、指定の pid のスケジュール方針で定義され た範囲の外側にあります。

関連項目

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

スポンサーリンク