QUOTA(2) — NEWS-OS Programmer’s Manual
名称
quota − ディスク割り当てを操作する
形式
#include <sys/quota.h>
quota(cmd, uid, arg, addr)
int cmd, uid, arg;
char ∗addr;
解説
quota コールは、 setquota(2) を 用いてディスク割当てが可能(オン)にされたファイルシステムの ディスクの割り当てを操作します。 cmd パラメタは、 ユーザID uid に適用されるコマンドを 示します。 arg は、 コマンドに固有の引数であり、 addr は、 システム内またはシステム外でコピーされる、 コマンドに固有なデータ構造体のアドレスです。 arg と addr の解釈については、 下記の各コマンドで説明されています。
Q_SETDLIM
ユーザIDが uid であるユーザについて、 ディスク割り当ての制限と現在の使用状況を セットします。 arg は、 特定のファイルシステムを 示すメジャー-マイナーデバイスです。 addr は、 (<sys/quota.h> に定義されている) dqblk 構造体へのポインタです。 このコールは、 スーパーユーザだけに限定されています。
Q_GETDLIM
ユーザID が uid であるユーザについて、 ディスク割り当ての制限と現在の使用状況を 取り出します。 残りのパラメタは、 Q_SETDLIM の場合と同様です。
Q_SETDUSE
ユーザID が uid であるユーザについて、 ディスクの使用制限を セットします。 arg は、 特定のファイルシステムを 示すメジャー-マイナーデバイスです。 addr は、 (<sys/quota.h> に定義されている) dqusage 構造体へのポインタです。 このコールは、 スーパーユーザだけに限定されています。
Q_SYNC
割り当て使用状況のディスク上コピーを 更新します。 arg は、 同期させられるファイルシステムを 示すメジャー-マイナーデバイスです。 arg パラメタが NODEV として指定された場合には、 ディスク割り当てがあるすべてのファイルシステムが同期がとられます。 uid および addr パラメタは、 無視されます。
Q_SETUID
呼び出し元プロセスの割り当て制限を、 ユーザIDが uid であるユーザの割り当て制限に変更します。 arg および addr パラメタは、 無視されます。 このコールは、 スーパーユーザだけに限定されています。
Q_SETWARN
ユーザIDが uid であるユーザのディスクの警告される使用制限値を 変更します。 arg は、 特定のファイルシステムを 示すメジャー-マイナーデバイスです。 addr は、 (<sys/quota.h> に定義されている) dqwarn 構造体へのポインタです。 このコールは、 スーパーユーザだけに限定されています。
Q_DOWARN
ユーザIDが uid であるユーザに対して、 過剰なディスクの使用について警告します。 このコールは、 システムに現在のディスク使用情報を チェックさせ、 そのユーザが割り当てを オーバーしている各ファイルシステムについて、 呼出し元の端末装置にメッセージを 表示させます。 そのユーザが割り当てを オーバーしていない場合には、 そのユーザの警告カウントは (<sys/quota.h> に定義されている) MAX_∗_WARN にリセットされます。 arg パラメタが NODEV として指定された場合には、 ディスク割り当てのあるすべてのファイルシステムがチェックされます。 そうでない場合、 arg は、 チェックされる特定のメジャー-マイナーデバイスを 指定します。 このコールは、 スーパーユーザだけに限定されています。
リターン値
コールが成功した場合には、 0 が返されます。 そうでない場合には、 −1 が返され、 グローバル変数 errno が失敗の理由を 示します。
エラー
以下に示されている項目のうち、1つが発生した場合、 quota は失敗します。
[EINVAL] カーネルが QUOTA オプションを 用いてコンパイルされていない。
[EINVAL] cmd が無効である。
[ESRCH] 指定されたユーザに対するディスクの割当てが見つからない。
[EPERM] コールは特権を 必要とするものであり、 呼び出しユーザがスーパーユーザではない。
[ENODEV] arg パラメタがメジャー-マイナーデバイスとして解釈されていて、 そのパラメタがマウントされていないファイルシステムを 示している。
[EFAULT] 無効な addr が与えられている。 関連する構造体を カーネルの内または外でコピーすることができない。
[EUSERS] 割り当てテーブルがいっぱいである。
関連事項
setquota(2), quotaon(8), quotacheck(8)
バグ
このコールを、 setrlimit(2) と getrlimit(2) によって提供されているリソース制限インターフェースに統合する なんらかの方法が必要です。
インプリメンターに敬意を表するため ’disk’ という オーストラリアで用いられているスペル を quota 機能全般に使っています。
NEWS-OSRelease 4.1C