SCHED_SETSCHEDULER(2) | FreeBSD System Calls Manual | SCHED_SETSCHEDULER(2) |
名称
sched_setscheduler, sched_getscheduler — スケジュール方針とスケジューラパラメータの設定 / 取得ライブラリ
Standard C Library (libc, -lc)書式
#include < sched.h> int
sched_setscheduler( pid_t pid, int policy, const struct sched_param *param);
int
sched_getscheduler( pid_t pid);
解説
sched_setscheduler() システムコールは、 pid で指定したプロセスのスケジュール方針とスケジュールパラメータを、それぞれ、 policy および param が指す sched_param 構造体の指定するパラメータに設定します。 param 構造体のメンバ sched_priority の値は、 policy で指定するスケジュール方針用の優先度範囲内 (両端含む) の整数である必要があります。この実装では、 pid の値が負である場合、システムコールは処理に失敗します。
pid で指定するプロセスが存在し、かつ呼び出し元プロセスにパーミッションがある場合、プロセス ID が pid と等しいプロセスに対してスケジュール方針とスケジュールパラメータを設定します。
pid が 0 の場合、呼び出し元プロセスに対してスケジュール方針とスケジュールパラメータを設定します。
この実装では、あるプロセスが別のプロセスのスケジュールパラメータにいつ影響を及ぼせるのかという方針は、書み込みスタイル操作として IEEE Std 1003.1b-1993 (“POSIX.1b”) に指定されているものです。
スケジュール方針は <sched.h> 内にあります。
- [ SCHED_FIFO]
- ラウンドロビンスケジュールのない、先入先出 (FIFO) 優先順位固定スケジュール。
- [ SCHED_OTHER]
- 標準のタイムシェアリングスケジューラ。
- [ SCHED_RR]
- 同じ優先順位のプロセス間でのラウンドロビンスケジュール。
sched_param 構造体は <sched.h> に定義されています。
struct sched_param { int sched_priority; /* スケジュール優先順位 */ };
sched_getscheduler() システムコールは、 pid で指定するプロセスのスケジュール方針を返します。
pid で指定するプロセスが存在してかつ、呼び出し元プロセスにパーミッションがある場合、プロセス ID が pid に等しいプロセスのスケジュールパラメータを返します。
この実装では、あるプロセスが別のプロセスのスケジュールパラメータをいつ得られるかの方針は、読み込みスタイル操作として IEEE Std 1003.1b-1993 (“POSIX.1b”) に詳説されているものです。
pid が 0 の場合、呼び出し元プロセスのスケジュールパラメータを返します。この実装では、 pid が負の場合、 sched_getscheduler システムコールは処理に失敗します。
戻り値
Upon successful completion, the value 0 is returned; otherwise the value -1 is returned and the global variable errno is set to indicate the error.エラー
処理に失敗すると、 errno を対応する値に設定します。- [ ENOSYS]
- システムは、この機能をサポートするように構成されていません。
- [ EPERM]
- 要求しているプロセスは IEEE Std 1003.1b-1993 (“POSIX.1b”) で詳説されているパーミッションを持っていません。
- [ ESRCH]
- pid で指定したプロセスに対応するプロセスが見つかりません。
- [ EINVAL]
- policy 引数の値が無効であるか、または param に含まれている 1 つまたは複数のパラメータが、指定されたスケジュール方針で有効な範囲の外にあります。
関連項目
sched_getparam(2), sched_get_priority_max(2), sched_get_priority_min(2), sched_rr_get_interval(2), sched_setparam(2), sched_yield(2)規格
sched_setscheduler() と sched_getscheduler() システムコールは、 IEEE Std 1003.1b-1993 (“POSIX.1b”) に準拠しています。March 12, 1998 | FreeBSD |