Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ setpriority(2) — NEWS-os 4.1C

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

nice(1)

fork(2)

renice(8)

GETPRIORITY(2)  —  NEWS-OS Programmer’s Manual

名称

getpriority, setpriority − プログラムのスケジューリングのプライオリティを取り出す/セットする

形式

#include <sys/time.h>
#include <sys/resource.h>

#define PRIO_PROCESS0/∗ process ∗/
#define PRIO_PGRP1/∗ process group ∗/
#define PRIO_USER2/∗ user id ∗/

prio = getpriority(which, who)
int prio, which, who;

setpriority(which, who, prio)
int which, who, prio;

解説

which と who で指定されるプロセス、 プロセスグループ、 またはユーザのスケジューリングのプライオリティは、 getpriority コールで得られ、 setpriority コールでセットされます。 which は、 PRIO_PROCESS、 PRIO_PGRP、 PRIO_USERのうちの 1つであり、 who は、 which に対応して(PRIO_PROCESS の場合はプロセスID、 PRIO_PGRP の場合はプロセスグループID、 PRIO_USER の場合はユーザIDとして)解釈されます。 値が 0 である who は、 現プロセス、または 現プロセスグループ、 現ユーザを 表します。 prio は、 −20 から 20 までの範囲の値です。 デフォルトのプライオリティは 0 です。 この数値が小さいほど、 それだけスケジューリングでは有利となります。

getpriority コールは、 指定されたプロセスのいずれかによって使用されている最高の プライオリティ(最小の数値)を 返します。 setpriority コールは、 指定されたすべてのプロセスのプライオリティを 指定された値にセットします。 スーパーユーザだけが値を 小さくすることができます。

リターン値

getpriority はエラーではなくても −1 を 返すことがあるため、 コールを 実行する前に外部変数 errno を クリアする必要があります。 そうすることによって、 −1 がエラーまたは優先順位の値のいずれであるかを あとで判定することができます。 setpriority はエラーがなければ 0 を 返し、 エラーがあれば−1を 返します。

エラー

getpriority と setpriority は、 次のエラーのうちの1つを 返すことがあります。

[ESRCH] 指定された which と who の値を 使用してプロセスがつきとめられなかった。

[EINVAL] which が、 PRIO_PROCESS、 PRIO_PGRP、 PRIO_USERのうちの1つではなかった。

上記のエラーのほかに、 setpriority が失敗した場合には、 次のエラーのうちの1つが返されます。

[EPERM] プロセスは存在したが、 その有効および実ユーザIDのどちらも呼出しユーザの有効ユーザIDに一致しなかった。

[EACCES] スーパーユーザ以外がプロセスの優先順位を 上げようとした。

関連事項

nice(1), fork(2), renice(8)

NEWS-OSRelease 4.1C

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026