EN JA
SCHED_SETSCHEDULER(2)
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_setscheduler() と sched_getscheduler() システムコールは、 IEEE Std 1003.1b-1993 (“POSIX.1b”) に準拠しています。
March 12, 1998 FreeBSD