日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
SYSCTL(3) FreeBSD ライブラリ関数マニュアル SYSCTL(3)
名称
sysctl, sysctlbyname, sysctlnametomib -- システム情報を取得または設定する
ライブラリ
標準 C ライブラリ (libc, -lc)
書式
#include <sys/types.h>
#include <sys/sysctl.h>
int
sysctl(const int *name, u_int namelen, void *oldp, size_t *oldlenp,
const void *newp, size_t newlen);
int
sysctlbyname(const char *name, void *oldp, size_t *oldlenp,
const void *newp, size_t newlen);
int
sysctlnametomib(const char *name, int *mibp, size_t *sizep);
解説
sysctl() 関数は、システム情報を取り出し、適切な特権のあるプロセスがシステ
ム情報を設定することを許可します。sysctl() から利用可能な情報は、整数、文
字列とテーブルで構成されます。情報は、sysctl(8) ユーティリティを使用して
コマンドインタフェースから取り出して設定できます。
下記に明示的に注意された場合を除いて、sysctl() は、要求されたデータの一貫
したスナップショットを返します。メモリへ目的のバッファをロックすることに
より一貫性が得られるので、データは、ブロッキングなしでコピーできます。
sysctl() への呼び出しは、デッドロックを回避するためにシリアル化されます。
状態は、長さが namelen の整数の配列である name にリストされる、``管理情報
ベース (Management Information Base)'' (MIB) スタイル名を使用して記述され
ます。
sysctlbyname() 関数は、名前の ASCII 表現を受け入れ、整数名前ベクトルを内
部で調べます。それを別にすれば、標準の sysctl() 関数と同じように振る舞い
ます。
情報は、oldp によって指定されたバッファにコピーされます。バッファのサイズ
は、呼び出しの前に oldlenp によって指定された位置によって与えられ、その位
置は、成功した呼び出しの後に、そしてエラーコード ENOMEM で返る呼び出しの
後にコピーされたデータの量を与えます。利用可能なデータの量が供給された
バッファのサイズより大きな場合、呼び出しは、提供されるバッファに適合する
だけのデータを供給し、エラーコード ENOMEM で返ります。古い値が要求されな
いなら、oldp と oldlenp は、NULL に設定されるべきです。
利用可能なデータのサイズは、oldp を NULL 引数として sysctl() を呼ぶことに
より決定できます。利用可能なデータのサイズは、oldlenp によって指される位
置の中に返されます。いくつかの操作については、空間の量がしばしば変わるか
もしれません。これらの操作については、返されたサイズがその後すぐにデータ
を返す呼び出しのために十分大きくなるように、システムは、切り上げることを
試みます。
新しい値を設定するために、newp は、要求された値が得られるための長さ
newlen のバッファを指すために設定されます。新しい値が設定されない場合、
newp は、NULL に、newlen は、0 に設定されるべきです。
sysctlnametomib() 関数は、名前の ASCII 表現を受け入れ、整数名前ベクトルを
調べて、mibp によって指される mib 配列中に数値表現を返します。mib 配列中
の要素の数は、呼び出しの前に sizep によって指定された位置によって与えられ
ます。また、その位置は、成功した呼び出しの後でコピーされたエントリの数を
与えます。結果の mib と size は、要求された ASCII 名に関連するデータを取
得するために後の sysctl() 呼び出しで使用できます。このインタフェースは、
同じ変数 (sysctl() 関数は、sysctlbyname() 関数によって行なわれる同じ要求
の約 1/3 時間で実行します) を繰り返し要求したいアプリケーションによって使
用することを対象としています。さらに、sysctlnametomib() 関数は、mib 接頭
辞を取って来て、最終構成要素に加えるために役立ちます。例えば pid の 100
未満のプロセスのためのプロセス情報を取って来るには、次のようにします。
int i, mib[4];
size_t len;
struct kinfo_proc kp;
/* mib の最初の 3 つの構成要素を書き込む */
len = 4;
sysctlnametomib("kern.proc.pid", mib, &len);
/* pid < 100 のエントリを取って来て印刷します */
for (i = 0; i < 100; i++) {
mib[3] = i;
len = sizeof(kp);
if (sysctl(mib, 4, &kp, &len, NULL, 0) == -1)
perror("sysctl");
else if (len > 0)
printkproc(&kp);
}
トップ (第 1) レベルの名前は、次のように、<sys/sysctl.h> で CTL_ 接頭辞を
付けて定義されています。次のレベルとその後のレベルは、ここにリストされる
インクルードファイルで見つけられ、下記の個別のセクションで説明されます。
名前 次レベル名 説明
CTL_DEBUG <sys/sysctl.h> デバッギング
CTL_VFS <sys/mount.h> ファイルシステム
CTL_HW <sys/sysctl.h> 一般的な CPU, I/O
CTL_KERN <sys/sysctl.h> カーネルの上限
CTL_MACHDEP <sys/sysctl.h> マシン依存
CTL_NET <sys/socket.h> ネットワーク
CTL_USER <sys/sysctl.h> ユーザレベル
CTL_VM <vm/vm_param.h> 仮想メモリ
例えば、次は、システムで許容されたプロセスの最大の数を取り出します。
int mib[2], maxproc;
size_t len;
mib[0] = CTL_KERN;
mib[1] = KERN_MAXPROC;
len = sizeof(maxproc);
sysctl(mib, 2, &maxproc, &len, NULL, 0);
システムユーティリティの標準の検索パスを取り出すためには、次の通りです:
int mib[2];
size_t len;
char *p;
mib[0] = CTL_USER;
mib[1] = USER_CS_PATH;
sysctl(mib, 2, NULL, &len, NULL, 0);
p = malloc(len);
sysctl(mib, 2, p, &len, NULL, 0);
CTL_DEBUG
デバッグ変数は、システムによって異なります。デバッグ変数は、それについて
知っている sysctl() を再コンパイルする必要なしに加えるか削除できます。そ
れが実行されるごとに、sysctl() は、カーネルからのデバッグ変数のリストを得
て、それらの現在値を表示します。システムは、debug0 から debug19 と名前が
付けられた 20 の (struct ctldebug) 変数を定義します。それらの関連する変数
の位置で個別にそれらを初期化することができるように、それらは、個別の変数
として宣言されます。ローダは、変数が 2 つ以上の場所で初期化される場合に、
エラーを出すことによって、同じ変数が複数の使用されるのを防ぎます。例え
ば、変数 dospecialcheck をデバッグ変数としてエクスポートするために、次の
宣言が使用されます。
int dospecialcheck = 1;
struct ctldebug debug5 = { "dospecialcheck", &dospecialcheck };
CTL_VFS
識別された第 2 レベルの名前、VFS_GENERIC、は、すべてのファイルシステムに
関する一般的な情報を得るために使用されます。その第 3 レベルの識別子の 1
つは、最も高い有効なファイルシステムタイプ番号を与える VFS_MAXTYPENUM で
す。その、第 3 レベルの識別子は、第 4 レベルの識別子 (その使用の例として
getvfsbyname(3) を参照) として与えられたファイルシステムタイプに関する構
成情報を返す VFS_CONF です。残りの第 2 レベルの識別子は、statfs(2) 呼び出
しによって、または VFS_CONF から返されたファイルシステムタイプ番号です。
各ファイルシステムのために利用可能な第 3 レベル識別子は、そのファイルシス
テムのためにマウント引数構造体を定義するヘッダファイルで与えられます。
CTL_HW
CTL_HW レベルのために利用可能な文字列と整数の情報は、下記に詳しく述べられ
ます。変更可能性の列は、適切な特権のあるプロセスが値を変更できるかどうか
を示します。
第 2 レベル名 タイプ 変更可能性
HW_MACHINE 文字列 no
HW_MODEL 文字列 no
HW_NCPU 整数 no
HW_BYTEORDER 整数 no
HW_PHYSMEM 整数 no
HW_USERMEM 整数 no
HW_PAGESIZE 整数 no
HW_FLOATINGPT 整数 no
HW_MACHINE_ARCH 文字列 no
HW_REALMEM 整数 no
HW_AVAILPAGES 整数 no
HW_MACHINE
マシンクラス。
HW_MODEL
マシンモデル。
HW_NCPU
CPU の数。
HW_BYTEORDER
バイト順 (4321 または 1234)。
HW_PHYSMEM
カーネル、プリロードされたモジュールと (x86 の) dcons バッファに
よって使用される量の (バイト単位の) 物理メモリの量。
HW_USERMEM
接続されていない (バイト単位の) メモリの量。
HW_PAGESIZE
ソフトウェアのページサイズ。
HW_FLOATINGPT
浮動小数点サポートがハードウェアにあるなら、0 でない。
HW_MACHINE_ARCH
マシンに依存するアーキテクチャタイプ。
HW_REALMEM
ファームウェアによって報告された (バイト単位の) メモリの量。その
値は、時々健全ではありません。その場合に、カーネルは、代わりに、
最大のメモリアドレスを報告します。
HW_AVAILPAGES
バイト単位ではなく、ページ単位で測定された HW_PHYSMEM と同じ値。
CTL_KERN
CTL_KERN レベルのために利用可能な文字列と整数の情報は、下記に詳しく述べら
れます。変更可能性の列は、適切な特権のあるプロセスが値を変更できるかどう
かを示します。現在利用可能なデータのタイプは、プロセス情報、システム
vnodes、オープンファイルエントリ、ルーティングテーブルエントリ、仮想メモ
リ統計、ロードアベレージ (負荷平均) 履歴とクロックレート情報です。
第 2 レベル名 タイプ 変更可能性
KERN_ARGMAX 整数 no
KERN_BOOTFILE 文字列 yes
KERN_BOOTTIME struct timeval no
KERN_CLOCKRATE struct clockinfo no
KERN_FILE struct xfile no
KERN_HOSTID 整数 yes
KERN_HOSTUUID 文字列 yes
KERN_HOSTNAME 文字列 yes
KERN_JOB_CONTROL 整数 no
KERN_MAXFILES 整数 yes
KERN_MAXFILESPERPROC 整数 yes
KERN_MAXPROC 整数 no
KERN_MAXPROCPERUID 整数 yes
KERN_MAXVNODES 整数 yes
KERN_NGROUPS 整数 no
KERN_NISDOMAINNAME 文字列 yes
KERN_OSRELDATE 整数 no
KERN_OSRELEASE 文字列 no
KERN_OSREV 整数 no
KERN_OSTYPE 文字列 no
KERN_POSIX1 整数 no
KERN_PROC node 適用不可
KERN_PROF node 適用不可
KERN_QUANTUM 整数 yes
KERN_SAVED_IDS 整数 no
KERN_SECURELVL 整数 上昇のみ
KERN_UPDATEINTERVAL 整数 no
KERN_VERSION 文字列 no
KERN_VNODE struct xvnode no
KERN_ARGMAX
execve(2) への引数の最大のバイト。
KERN_BOOTFILE
カーネルをロードするためのファイルの完全なパス名。
KERN_BOOTTIME
struct timeval 構造体が返されます。この構造体は、システムがブート
された時刻を含んでいます。
KERN_CLOCKRATE
struct clockinfo 構造体が返されます。この構造体は、クロック、統計
クロックとプロファイルクロック周波数、マイクロ秒/hz チックとス
キュー (ねじれ) レートを含んでいます。
KERN_FILE
ファイルテーブル全体を返します。返されたデータは、サイズが、シス
テムのそのようなオブジェクトの現在の数に依存する struct xfile の
配列から成ります。
KERN_HOSTID
ホスト ID を取得するか設定します。
KERN_HOSTUUID
ホストの一般的にユニークな識別子 (UUID) を取得するか、または設定
します。
KERN_HOSTNAME
ホスト名を取得するか設定します。
KERN_JOB_CONTROL
ジョブコントロールがこのシステムで利用可能な場合、1 を返し、そう
でなければ 0 を返します。
KERN_MAXFILES
システムでオープンできるファイルの最大の数。
KERN_MAXFILESPERPROC
1 つのプロセスがオープンできるファイルの最大の数。この制限は、
オープン要求の時に、ゼロでない実効 UID のあるプロセスにだけ適用さ
れます。制限または実効 UID が変更される場合、既にオープンされた
ファイルは、影響されません。
KERN_MAXPROC
システムが許可する同時プロセスの最大の数。
KERN_MAXPROCPERUID
システムが 1 つの実効 UID のために許可する、同時プロセスの最大の
数。この制限は、フォーク (fork) 要求の時に、ゼロでない実効 UID の
あるプロセスにだけ適用されます。制限が変更される場合、既に開始さ
れたプロセスは、影響されません。
KERN_MAXVNODES
システムで利用可能な vnodes の最大の数。
KERN_NGROUPS
補足グループの最大の数。
KERN_NISDOMAINNAME
現在の YP/NIS ドメインの名前。
KERN_OSRELDATE
MmmRxx 形式のカーネルリリースバージョン。ここで、M は、メジャー
バージョン、mm は、2 桁のマイナバージョン、R は、リリースブランチ
であれば 0、そうでなければ 1、xx は、利用可能な API が変わった時
に更新されます。
ユーザランドリリースバージョンは、<osreldate.h> から入手できま
す。現在インストールされているユーザランドのリリースバージョンを
取得することが必要な場合には、このファイルを解析して下さい。
KERN_OSRELEASE
システムリリース文字列。
KERN_OSREV
システム改訂文字列。
KERN_OSTYPE
システムタイプ文字列。
KERN_POSIX1
システムが準拠することを試みる IEEE Std 1003.1 (``POSIX.1'') の
バージョン。
KERN_PROC
特定の実行しているプロセスに関する選択された情報を返します。
次の名前のために、struct kinfo_proc 構造体の配列が返されます。そ
のサイズは、システムでのそのようなオブジェクトの現在の数に依存し
ます。
第 3 レベル名 第 4 レベル
KERN_PROC_ALL なし
KERN_PROC_PID プロセス ID
KERN_PROC_PGRP プロセスグループ
KERN_PROC_TTY tty デバイス
KERN_PROC_UID ユーザ ID
KERN_PROC_RUID 実ユーザ ID
第 3 レベル名が KERN_PROC_ARGS であれば、コマンド行の引数の配列が
平板な形式、すなわち、0 で終了する引数が互いに続く形式、で返され
ます。配列の合計サイズが返されます。この方法でプロセスが自身のプ
ロセスタイトルを設定することも可能です。3 番目のレベル名は、プロ
セスのテキストファイルのパスが格納される、KERN_PROC_PATHNAME で
す。KERN_PROC_PATHNAME に関して、-1 のプロセス ID は、現在のプロ
セスを意味しています。
第 3 レベル名 第 4 レベル
KERN_PROC_ARGS プロセス ID
KERN_PROC_PATHNAME プロセス ID
KERN_PROF
カーネルに関するプロファイル情報を返します。カーネルがプロファイ
ルのためのコンパイルがされていないなら、KERN_PROF 値のいずれかを
取り出す試みは、ENOENT で失敗します。文字列と整数のプロファイル情
報のための第 3 レベルの名前は、下記に詳しく述べられます。変更可能
性の列は、適切な特権のあるプロセスが値を変更できるかどうかを示し
ます。
第 3 レベル名 タイプ 変更可能性
GPROF_STATE 整数 yes
GPROF_COUNT u_short[] yes
GPROF_FROMS u_short[] yes
GPROF_TOS struct tostruct yes
GPROF_GMONPARAM struct gmonparam no
変数は、次の通りです:
GPROF_STATE
プロファイルが実行されているか停止しているかを示す
GMON_PROF_ON または GMON_PROF_OFF を返します。
GPROF_COUNT
統計プログラムカウンタの配列の総数。
GPROF_FROMS
呼び出し点からのプログラムカウンタによってインデックス付
けされた配列。
GPROF_TOS
呼び出しの目標とそれらの総数について記述する struct
tostruct の配列。
GPROF_GMONPARAM
上記の配列のサイズを与える構造体。
KERN_QUANTUM
他のプロセスが実行キューにある場合、プロセスが切り替える (プリエ
ンプトする) ことなく実行が許されるマイクロ秒単位の最大の期間。
KERN_SAVED_IDS
退避セットグループ ID (グループ ID 設定) と退避セットユーザ ID
(ユーザ ID 設定) が利用可能な場合、1 を返します。
KERN_SECURELVL
システムセキュリティレベル。このレベルは、適切な特権のあるプロセ
スによって上昇されることができます。
KERN_VERSION
システムバージョン文字列。
KERN_VNODE
vnode テーブル全体を返します。vnode テーブルが必ずしもシステムの
一貫したスナップショットではないことに注意してください。返された
データは、そのサイズがシステムでのそのようなオブジェクトの現在の
数に依存する配列から成ります。配列の各要素は、struct xvnode から
成ります。
CTL_NET
TL_NET レベルに利用可能な文字列と整数の情報は、下記に詳しく述べられます。
変更可能性の列は、適切な特権のあるプロセスが値を変更できるかどうかを示し
ます。
第 2 レベル名 タイプ 変更可能性
PF_ROUTE ルーティングメッセージ no
PF_INET IPv4 値 yes
PF_INET6 IPv6 値 yes
PF_ROUTE
ルーティングテーブル全体またはそのサブセットを返します。データ
は、一連のルーティングメッセージとして返されます (ヘッダファイ
ル、フォーマットと意味に関しては、route(4) を参照)。各メッセージ
の長さは、メッセージヘッダに含まれています。
第 3 のレベル名は、現在常に 0 であるプロトコル番号です。第 4 のレ
ベル名は、アドレスファミリで、それは、すべてのアドレスファミリを
選択するために 0 に設定できます。第 5 レベル名、第 6 のレベル名と
第 7 のレベル名は、次の通りです:
第 5 レベル 第 6 レベル 第 7 レベル
NET_RT_FLAGS rtflags None
NET_RT_DUMP None None または fib number
NET_RT_IFLIST 0 または if_index None
NET_RT_IFMALIST 0 または if_indexNone
NET_RT_IFLISTL 0 または if_index None
NET_RT_NHOPS None fib number
NET_RT_IFMALIST 名は、0 が指定された場合は、すべてのインタフェー
スの、そうでなければ if_index で指定されたインタフェースのマルチ
キャストグループメンバーシップに関する情報を返します。
NET_RT_IFLISTL は、インタフェースがバイナリ互換性を壊さずに拡張さ
れることを可能にする追加のフィールドを付けてメッセージヘッダの構
造体を返しますが、NET_RT_IFLIST に似ています。NET_RT_IFLISTL は、
次のメッセージヘッダの構造体の 'l' バージョンを使用します: struct
if_msghdrl と struct ifa_msghdrl。
NET_RT_NHOPS は、与えられた fib の指定されたアドレスファミリのた
めのすべての次中継点 (nexthop) を返します。
PF_INET
IPv4 (インターネットプロトコルバージョン 4) に関する各種のグロー
バル情報を取得するか設定します。第 3 のレベル名は、プロトコルで
す。第 4 のレベル名は、変数名です。現在定義されたプロトコルと名前
は、次の通りです:
プロトコル 変数 タイプ 変更可能性
icmp bmcastecho 整数 yes
icmp maskrepl 整数 yes
ip forwarding 整数 yes
ip redirect 整数 yes
ip ttl 整数 yes
udp checksum 整数 yes
変数は、次の通りです:
icmp.bmcastecho
ブロードキャストかマルチキャストのアドレスへの ICMP エ
コー要求が応答される場合 1 を返します。
icmp.maskrepl
ICMP ネットワークマスク要求が応答される場合 1 を返しま
す。
ip.forwarding
IP フォワーディング (転送) が、ホストがルータとして作動す
る意味を持った、ホストのために可能になる場合 1 を返しま
す。
ip.redirect
ICMP リダイレクト (出力先変更) がホストによって送ることが
できる場合、1 を返します。このオプションは、ホストが IP
パケットをルーティングしていなければ、無視され、そして、
通常すべてのシステムで使用可能にするべきです。
ip.ttl システムが起点となった IP パケットの最大の有効期限 (ホッ
プカウント) 値。この値は、ICMP にではなく通常のトランス
ポート (輸送) プロトコルに適応されます。
udp.checksum
UDP チェックサムが計算されチェックされている場合、1 を返
します。UDP チェックサムを無効にすることは、強く推奨され
ません。
変数 net.inet.*.ipsec については、ipsec(4) を参照してくだ
さい。
PF_INET6
IPv6 (インターネットプロトコルバージョン 6) に関する各種のグロー
バル情報を取得するか設定します。第 3 のレベル名は、プロトコルで
す。第 4 のレベル名は、変数名です。
変数 net.inet6.* については、inet6(4) を参照してください。変数
net.inet6.*.ipsec6 については、ipsec(4) を参照してください。
CTL_USER
CTL_USER レベルに利用可能な文字列と整数の情報は、下記に詳しく述べられま
す。変更可能性の列は、適切な特権のあるプロセスが値を変更できるかどうかを
示します。
第 2 レベル名 タイプ 変更可能性
USER_BC_BASE_MAX 整数 no
USER_BC_DIM_MAX 整数 no
USER_BC_SCALE_MAX 整数 no
USER_BC_STRING_MAX 整数 no
USER_COLL_WEIGHTS_MAX 整数 no
USER_CS_PATH 文字列 no
USER_EXPR_NEST_MAX 整数 no
USER_LINE_MAX 整数 no
USER_LOCALBASE 文字列 no
USER_POSIX2_CHAR_TERM 整数 no
USER_POSIX2_C_BIND 整数 no
USER_POSIX2_C_DEV 整数 no
USER_POSIX2_FORT_DEV 整数 no
USER_POSIX2_FORT_RUN 整数 no
USER_POSIX2_LOCALEDEF 整数 no
USER_POSIX2_SW_DEV 整数 no
USER_POSIX2_UPE 整数 no
USER_POSIX2_VERSION 整数 no
USER_RE_DUP_MAX 整数 no
USER_STREAM_MAX 整数 no
USER_TZNAME_MAX 整数 no
USER_BC_BASE_MAX
bc(1) ユーティリティの最大 ibase/obase 値。
USER_BC_DIM_MAX
bc(1) ユーティリティの最大配列サイズ。
USER_BC_SCALE_MAX
bc(1) ユーティリティの最大スケール値。
USER_BC_STRING_MAX
bc(1) ユーティリティの最大文字列長。
USER_COLL_WEIGHTS_MAX
ロケール定義ファイル中の LC_COLLATE 順序キーワードの任意のエント
リに割り当てることができる重みの最大の数。
USER_CS_PATH
すべての標準のユーティリティを見つける PATH 環境変数の値を返しま
す。
USER_EXPR_NEST_MAX
expr(1) ユーティリティによって、丸括弧内でネストできる式の最大の
数。
USER_LINE_MAX
テキスト処理ユーティリティの入力行の最大のバイト長。
USER_LOCALBASE
ポートまたはパッケージによって提供されるリソースにアクセスする必
要があるシステムユーティリティにコンパイルされた localbase の値を
返します。
USER_POSIX2_CHAR_TERM
システムが IEEE Std 1003.2 (``POSIX.2'') で記述されたすべての操作
の能力がある少なくとも 1 つの端末タイプをサポートする場合、1 を返
し、そうでなければ 0 を返します。
USER_POSIX2_C_BIND
システムの C 言語開発機能が C 言語バインディングオプションをサ
ポートする場合 1 を返し、そうでなければ 0 を返します。
USER_POSIX2_C_DEV
システムが C 言語開発ユーティリティオプションをサポートする場合 1
を返し、そうでなければ 0 を返します。
USER_POSIX2_FORT_DEV
システムが FORTRAN 開発ユーティリティオプションをサポートする場合
1 を返し、そうでなければ 0 を返します。
USER_POSIX2_FORT_RUN
システムが FORTRAN ランタイムユーティリティオプションをサポートす
る場合 1 を返し、そうでなければ 0 を返します。
USER_POSIX2_LOCALEDEF
システムがロケールの生成をサポートする場合 1 を返し、そうでなけれ
ば 0 を返します。
USER_POSIX2_SW_DEV
システムがソフトウェア開発ユーティリティオプションをサポートする
場合 1 を返し、そうでなければ 0 を返します。
USER_POSIX2_UPE
システムがユーザポータビリティユーティリティオプションをサポート
する場合 1 を返し、そうでなければ 0 を返します。
USER_POSIX2_VERSION
システムが準拠することを試みる IEEE Std 1003.2 (``POSIX.2'') の
バージョン。
USER_RE_DUP_MAX
インターバル (間隔) 記法を使用するときに許される正規表現の繰り返
し発生の最大の数。
USER_STREAM_MAX
プロセスがどの時点でもオープンしておくことができるストリームの最
小の数と最大の数。
USER_TZNAME_MAX
時間帯の名前に対してサポートされるタイプの最小の数と最大の数。
CTL_VM
CTL_VM レベルに利用可能な文字列と整数の情報は、下記に詳しく述べられます。
変更可能性の列は、適切な特権のあるプロセスが値を変更できるかどうかを示し
ます。
第 2 レベル名 タイプ 変更可能性
VM_LOADAVG struct loadavg no
VM_TOTAL struct vmtotal no
VM_SWAPPING_ENABLED 整数 たぶん
VM_V_FREE_MIN 整数 yes
VM_V_FREE_RESERVED 整数 yes
VM_V_FREE_TARGET 整数 yes
VM_V_INACTIVE_TARGET 整数 yes
VM_V_PAGEOUT_FREE_MIN 整数 yes
VM_OVERCOMMIT 整数 yes
VM_LOADAVG
ロードアベレージ (負荷平均) 履歴を返します。返されたデータは、
struct loadavg から成ります。
VM_TOTAL
システム広範の仮想メモリ統計を返します。返されたデータは、struct
vmtotal から成ります。
VM_SWAPPING_ENABLED
プロセススワップが使用可能な場合 1 を返し、使用不可能な場合 0 を
返します。カーネルがスワップを利用不可能で構築された場合、この変
数は、永久に 0 に設定されます。
VM_V_FREE_MIN
メモリを待っているプロセスが呼び起こされる前に、利用可能とするた
めに必要なメモリの最小の量 (キャッシュメモリ+空きメモリ)。
VM_V_FREE_RESERVED
プロセスは、ページアウトデーモンを呼び起こし、空きページとキャッ
シュページの数がこの値まで下落する場合、メモリを待ちます。
VM_V_FREE_TARGET
ページアウトデーモンが維持しようとする空きメモリの合計の量
(キャッシュメモリを含む)。
VM_V_INACTIVE_TARGET
ページアウトデーモンが、実行されるときに、達成するべきアクティブ
でないページの望ましい数。アクティブでないページは、必要なとき
に。プロセスアドレス空間に素早く挿入できます。
VM_V_PAGEOUT_FREE_MIN
空きメモリとキャッシュメモリの量がこの値を下回る場合、ページアウ
トデーモンは、デッドロックを回避するために "メモリ節約モード" に
入ります。
VM_OVERCOMMIT
tuning(7) に説明されるように振る舞いをオーバコミット (overcommit)
します。
戻り値
成功して終了したときには値 0 を返します。そうでない場合、値 -1 が返され、
グローバル変数 errno にエラーを示す値が設定されます。
関連ファイル
<sys/sysctl.h> トップレベルの識別子、第 2 レベルのカーネルとハード
ウェアの識別子、そしてユーザレベルの識別子の定義
<sys/socket.h> 第 2 レベルのネットワーク識別子の定義
<sys/gmon.h> 第 3 レベルのプロファイル識別子の定義
<vm/vm_param.h> 第 2 レベルの仮想メモリ識別子の定義
<netinet/in.h> 第 3 レベルの IPv4/IPv6 識別子と第 4 レベルの
IPv4/IPv6 識別子の定義
<netinet/icmp_var.h> 第 4 レベルの ICMP 識別子の定義
<netinet/icmp6.h> 第 4 レベルの ICMPv6 識別子の定義
<netinet/udp_var.h> 第 4 レベルの UDP 識別子の定義
エラー
次のエラーが報告されます。
[EFAULT] バッファ name, oldp, newp あるいは長さポインタ oldlenp
は、無効のアドレスを含んでいます。
[EINVAL] name 配列は、2 未満か CTL_MAXNAME 以上です。
[EINVAL] NULL でない newp が与えられ、newlen のその指定された長
さは、大きすぎるか、小さすぎます。
[ENOMEM] oldlenp によって指される長さは、要求された値を保持する
ためには短すぎるます。
[ENOMEM] oldlenp によって指される長さ、または、返されたデータの
だいたいのサイズのどちらかの小さいほうが、ロックされた
メモリのシステム制限を超えています。
[ENOMEM] 返されるデータのだいたいのサイズが小さいならバッファ
oldp、またはバッファの一部をロックすることは、プロセス
がプロセスごとのロックされたメモリ制限を超えてしまいま
す。
[ENOTDIR] name 配列は、末端の名前ではなく中間を指定しています。
[EISDIR] name 配列は、末端の名前を指定していますが、実際の名前
は、末端ではありません。
[ENOENT] name 配列は、未知の値を指定しています。
[EPERM] 読み込み専用の値を設定しようとしました。
[EPERM] 適切な特権のないプロセスが値を設定しようとしました。
関連項目
confstr(3), kvm(3), sysconf(3), sysctl(8)
歴史
sysctl() は、4.4BSD ではじめて登場しました。
FreeBSD 13.2 October 30, 2020 FreeBSD 13.2