名前
sched_rr_get_interval - 指定されたプロセスの SCHED_RR 間隔を取得する
書式
#include <sched.h>
int sched_rr_get_interval(pid_t pid, struct timespec *tp);
説明
sched_rr_get_interval() は tp で指定された timespec 構造体に pid で指定されたプロセスのラウンド・ロビン時間量 (round robin time quantum) を書き込む。
timespec 構造体は以下の通りである:
struct timespec { time_t tv_sec; /* seconds */ long tv_nsec; /* nanoseconds */ };
pid がゼロの場合、呼び出したプロセスの時間量が *tp に書き込まれる。指定したプロセスは SCHED_RR スケジューリング方針で稼動している必要がある。
sched_rr_get_interval() の使用可能な POSIX システムでは <unistd.h> で _POSIX_PRIORITY_SCHEDULING が定義されている。
返り値
成功した場合は sched_rr_get_interval() は 0 を返す。 エラーの場合は -1 が返され、 errno が適切に設定される。
エラー
EFAULT | 情報をユーザ空間にコピーする時に問題が起きた。 |
EINVAL | PID が不正である。 |
ENOSYS | システム・コールがまだ実装されていない (かなり古いカーネルにおいてのみ)。 |
ESRCH | pid の ID を持つプロセスが見つからなかった。 |
準拠
POSIX.1-2001.
注意
Linux での注意
POSIX ではラウンド・ロビン時間量の大きさを制御する仕組みが規定されていない。 しかし、Linux ではこれを変更する方法が提供されており (この方法に移植性はない)、 プロセスの nice 値を調整することで時間量を制御できる (setpriority(2) 参照)。 負の nice 値 (すなわち、高い nice 値) を割り当てると時間量は長くなり、 正の nice 値 (すなわち、低い nice 値) を割り当てると時間量は短くなる。 デフォルトの時間量は 0.1 秒である。 nice 値の変更が時間量にどの程度影響を与えるかは カーネルのバージョンにより多少異なる。
関連項目
sched_setscheduler(2) に Linux のスケジューリング方式についての説明がある。
Programming for the real world - POSIX.4 by Bill O. Gallmeister, OReilly & Associates, Inc., ISBN 1-56592-074-0