aboutsummaryrefslogtreecommitdiff
path: root/documentation/manual-pages/ja/man3/sysctl.3
diff options
context:
space:
mode:
Diffstat (limited to 'documentation/manual-pages/ja/man3/sysctl.3')
-rw-r--r--documentation/manual-pages/ja/man3/sysctl.3955
1 files changed, 955 insertions, 0 deletions
diff --git a/documentation/manual-pages/ja/man3/sysctl.3 b/documentation/manual-pages/ja/man3/sysctl.3
new file mode 100644
index 0000000000..a424691b81
--- /dev/null
+++ b/documentation/manual-pages/ja/man3/sysctl.3
@@ -0,0 +1,955 @@
+.\" Copyright (c) 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)sysctl.3 8.4 (Berkeley) 5/9/95
+.\" %FreeBSD: src/lib/libc/gen/sysctl.3,v 1.33.2.12 2001/12/14 18:33:51 ru Exp %
+.\"
+.\" $FreeBSD$
+.Dd January 23, 2001
+.Dt SYSCTL 3
+.Os
+.Sh 名称
+.Nm sysctl ,
+.Nm sysctlbyname ,
+.Nm sysctlnametomib
+.Nd システム情報を取得または設定
+.Sh ライブラリ
+.Lb libc
+.Sh 書式
+.In sys/types.h
+.In sys/sysctl.h
+.Ft int
+.Fn sysctl "int *name" "u_int namelen" "void *oldp" "size_t *oldlenp" "void *newp" "size_t newlen"
+.Ft int
+.Fn sysctlbyname "const char *name" "void *oldp" "size_t *oldlenp" "void *newp" "size_t newlen"
+.Ft int
+.Fn sysctlnametomib "const char *name" "int *mibp" "size_t *sizep"
+.Sh 解説
+.Fn sysctl
+関数はシステム情報を取り出し、該当する特権のあるプロセスが
+システム情報を設定できるようにします。
+.Fn sysctl
+で利用できる情報は、整数、
+ストリング、およびテーブルで構成されます。情報は、
+.Xr sysctl 8
+ユーティリティ
+を使用してコマンドインタフェースから取り出しおよび設定できます。
+.Pp
+以降で明確に記載した場合を除いて、
+.Fn sysctl
+は、要求されたデータの一貫した
+スナップショットを返します。一貫性を保つために、メモリへの宛先バッファが
+ロックされるので、データはブロックなしにコピーできます。
+.Fn sysctl
+の呼び出しはデッドロックを回避するためにシリアル化されています。
+.Pp
+状態は ``管理情報ベース'' (Management Information Base、MIB)
+スタイルの名前を使用して記述され、
+.Fa name
+にリストされます。
+.Fa name
+は長さが
+.Fa namelen
+の整数の配列です。
+.Pp
+.Fn sysctlbyname
+関数は、名前の
+ASCII
+表現を受け入れ、整数の名前ベクトルを
+内部的に検索します。それ以外は、標準の
+.Fn sysctl
+関数と同じように機能します。
+.Pp
+情報は
+.Fa oldp
+で指定したバッファにコピーされます。バッファのサイズは、呼び
+出しの前に
+.Fa oldlenp
+で指定した位置で与えられます。この位置は、呼び出しが
+正常に完了した後およびエラーコード
+.Er ENOMEM
+で返った後にコピーされるデータの
+量を与えます。利用できるデータの量が指定のバッファサイズより大きい場合、
+呼び出しは、指定バッファにちょうど入る量のデータだけを与え、エラーコード
+.Er ENOMEM
+で返ります。古い値が不要な場合は、
+.Fa oldp
+と
+.Fa oldlenp
+を
+NULL
+に
+設定してください。
+.Pp
+利用できるデータのサイズを決定するには、
+.Fa oldp
+に
+NULL
+パラメータを指定して
+.Fn sysctl
+を呼び出します。利用できるデータのサイズが、
+.Fa oldlenp
+の指す位置に
+返されます。操作によっては空間の量が頻繁に変化することがあります。
+そのような操作の場合、システムは量を切り上げようとします。返されたサイズ
+が、その後まもなくデータを返す呼び出しに十分であるようにするためです。
+.Pp
+新しい値を設定するため、
+.Fa newp
+は、長さが
+.Fa newlen
+のバッファを指すように
+設定されます。このバッファから、要求された値が取得されます。新しい値が
+設定されないと、
+.Fa newp
+は
+NULL
+に設定され、
+.Fa newlen
+は
+0 に設定されます。
+.Pp
+.Fn sysctlnametomib
+関数は、ASCII 表現の名前を受け付け、
+整数の名前ベクトルを検索し、
+.Fa mibp
+で指される mib 配列中に、数値表現を格納して返します。
+mib 配列中の要素数は、呼び出し前に
+.Fa sizep
+で指定された場所が与えます。
+呼び出しが成功した後には、この場所には、コピーされた要素数が与えられます。
+結果の
+.Fa mib
+と
+.Fa size
+は、後で
+.Fn sysctl
+呼び出しに使用して、
+要求した ASCII 名に関連付けられているデータを取得可能です。
+同じ名前の変数を繰り返し要求するアプリケーションが使用することを、
+このインタフェースは意図しています (
+.Fn sysctl
+関数は、
+.Fn sysctlbyname
+関数で実現される要求と同じことを、約 1/3 の時間で実行します)。
+.Fn sysctlbyname
+関数は、
+mib の前置詞を取得してこれに最後の構成要素を付加するためにも有用です。
+例えば、PID が 100 未満のプロセスのプロセス情報を取得するには、
+次のようにします:
+.Pp
+.Bd -literal -offset indent -compact
+int i, mib[4];
+size_t len;
+struct kinfo_proc kp;
+
+/* Fill out the first three components of the mib */
+len = 4;
+sysctlnametomib("kern.proc.pid", mib, &len);
+
+/* Fetch and print entries for pid's < 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);
+}
+.Ed
+.Pp
+1 番上のレベルの名前は
+.Aq Pa sys/sysctl.h
+に
+CTL_
+接頭語付きで定義されます。
+次のとおりです。次のレベルおよびそれ以下のレベルは、ここにリストする
+インクルードファイル内にあり、以降の個別のセクションで説明します。
+.Pp
+.Bl -column CTLXMACHDEPXXX "Next level namesXXXXXX" -offset indent
+.It Sy "名前 次のレベル名 解説"
+.It "CTL\_DEBUG sys/sysctl.h デバッグ"
+.It "CTL\_VFS sys/mount.h ファイルシステム"
+.It "CTL\_HW sys/sysctl.h 一般的な CPU, I/O"
+.It "CTL\_KERN sys/sysctl.h カーネルの最高限界"
+.It "CTL\_MACHDEP sys/sysctl.h マシン依存"
+.It "CTL\_NET sys/socket.h ネットワーク"
+.It "CTL\_USER sys/sysctl.h ユーザレベル"
+.It "CTL\_VM vm/vm_param.h 仮想メモリ"
+.El
+.Pp
+たとえば、システムで許容されるプロセスの最大数を取り出す方法は
+次のとおりです。
+.Pp
+.Bd -literal -offset indent -compact
+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);
+.Ed
+.Pp
+システムユーティリティの標準検索パスを取り出す方法は次のとおりです。
+.Pp
+.Bd -literal -offset indent -compact
+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);
+.Ed
+.Ss CTL_DEBUG
+デバッグ変数はシステムごとにさまざまです。デバッグ変数を追加または
+削除するとき、それを認識するように
+.Fn sysctl
+をコンパイルし直す必要はありません。実行のたびに、
+.Fn sysctl
+が、カーネルからデバッグ変数の
+リストを取得し、その現在値を表示するからです。システムは
+20 個の
+.Ns ( Va struct ctldebug )
+変数を定義します。これらは
+.Nm debug0
+から
+.Nm debug19
+という
+名前になります。これらは別個の変数として宣言されるので、対応変数の位置で
+個別に初期化できます。ローダは、変数が複数の場所で初期化されたときは
+エラーを出して、同じ変数が複数に使用されるのを回避します。たとえば、変数
+.Nm dospecialcheck
+をデバッグ変数としてエクスポートする場合には、次の宣言が
+使用できます。
+.Bd -literal -offset indent -compact
+int dospecialcheck = 1;
+struct ctldebug debug5 = { "dospecialcheck", &dospecialcheck };
+.Ed
+.Ss CTL_VFS
+明瞭な第
+2 レベルの名称
+VFS_GENERIC
+は、すべてのファイルシステムに関する
+一般情報を取得するのに使用します。これの第
+3 レベルの識別子の
+1 つは
+VFS_MAXTYPENUM
+で、最も大きいファイルシステムタイプの番号を与えます。別の
+第
+3 レベルの識別子は
+VFS_CONF
+で、第
+4 レベルの識別子として与えられた
+ファイルシステムタイプに関する構成を返します
+(
+使用法の例は
+.Xr getvfsbyname 3
+を参照
+)
+。残りの第
+2 レベルの識別子は、
+.Xr statfs 2
+呼び出しまたは
+VFS_CONF
+が
+返すファイルシステムタイプ番号です。各ファイルシステムについて利用できる第
+3 レベルの識別子は、そのファイルシステムのマウント引数構造を定義する
+ヘッダファイルで指定されます。
+.Ss CTL_HW
+CTL_HW
+レベルに関して利用できるストリングと整数については以下で詳しく
+説明します。変更可能性の列は、適切な特権のあるプロセスが値を
+変更できるかどうかを示します。
+.Bl -column "Second level nameXXXXXX" integerXXX -offset indent
+.It Sy "第 2 レベル名 タイプ 変更可能"
+.It "HW\_MACHINE ストリング いいえ"
+.It "HW\_MODEL ストリング いいえ"
+.It "HW\_NCPU 整数 いいえ"
+.It "HW\_BYTEORDER 整数 いいえ"
+.It "HW\_PHYSMEM 整数 いいえ"
+.It "HW\_USERMEM 整数 いいえ"
+.It "HW\_PAGESIZE 整数 いいえ"
+.It "HW\_FLOATINGPOINT 整数 いいえ"
+.It "HW\_MACHINE\_ARCH ストリング いいえ"
+.\".It "HW\_DISKNAMES 整数 いいえ"
+.\".It "HW\_DISKSTATS 整数 いいえ"
+.El
+.Pp
+.Bl -tag -width 6n
+.It Li HW_MACHINE
+マシンクラス
+.It Li HW_MODEL
+マシンモデル
+.It Li HW_NCPU
+CPU
+の数
+.It Li HW_BYTEORDER
+バイト順
+(4,321、または 1,234)
+.It Li HW_PHYSMEM
+物理メモリのバイト
+.It Li HW_USERMEM
+カーネルでないメモリのバイト
+.It Li HW_PAGESIZE
+ソフトウェアのページサイズ
+.It Li HW_FLOATINGPOINT
+浮動小数点サポートがハードウェアにある場合はゼロでない
+.It Li HW_MACHINE_ARCH
+マシンはアーキテクチャタイプに依存
+.\".It Fa HW_DISKNAMES
+.\".It Fa HW_DISKSTATS
+.El
+.Ss CTL_KERN
+CTL_KERN
+レベルに関して利用できるストリングと整数の情報について以下に詳しく
+説明します。変更可能性の列は、該当する特権のあるプロセスが値を
+変更するかどうかを示します。現時点で利用できるデータのタイプは、
+プロセス情報、システム
+vnode、開いたファイルのエントリ、
+ルーティングテーブルのエントリ、仮想メモリ統計、負荷平均履歴、および
+クロックレート情報です。
+.Pp
+.Bl -column "KERNXMAXFILESPERPROCXXX" "struct clockrateXXX" -offset indent
+.It Sy "第 2 レベル名 タイプ 変更可能"
+.It "KERN\_ARGMAX 整数 いいえ"
+.It "KERN\_BOOTFILE ストリング はい"
+.It "KERN\_BOOTTIME struct timeval いいえ"
+.It "KERN\_CLOCKRATE struct clockinfo いいえ"
+.It "KERN\_FILE struct file いいえ"
+.It "KERN\_HOSTID 整数 はい"
+.It "KERN\_HOSTNAME ストリング はい"
+.It "KERN\_JOB\_CONTROL 整数 いいえ"
+.It "KERN\_MAXFILES 整数 はい"
+.It "KERN\_MAXFILESPERPROC 整数 はい"
+.It "KERN\_MAXPROC 整数 いいえ"
+.It "KERN\_MAXPROCPERUID 整数 はい"
+.It "KERN\_MAXVNODES 整数 はい"
+.It "KERN\_NGROUPS 整数 いいえ"
+.It "KERN\_NISDOMAINNAME ストリング はい"
+.It "KERN\_OSRELDATE 整数 いいえ"
+.It "KERN\_OSRELEASE ストリング いいえ"
+.It "KERN\_OSREV 整数 いいえ"
+.It "KERN\_OSTYPE ストリング いいえ"
+.It "KERN\_POSIX1 整数 いいえ"
+.It "KERN\_PROC struct proc いいえ"
+.It "KERN\_PROF node 適用不可"
+.It "KERN\_QUANTUM 整数 はい"
+.It "KERN\_SAVED\_IDS 整数 いいえ"
+.It "KERN\_SECURELVL 整数 累乗のみ"
+.It "KERN\_UPDATEINTERVAL 整数 いいえ"
+.It "KERN\_VERSION ストリング いいえ"
+.It "KERN\_VNODE struct vnode いいえ"
+.El
+.Pp
+.Bl -tag -width 6n
+.It Li KERN_ARGMAX
+.Xr execve 2
+への引数の最大バイト数
+.It Li KERN_BOOTFILE
+カーネルがロードされた元のファイルの完全なパス名
+.It Li KERN_BOOTTIME
+.Va struct timeval
+構造が返されます。この構造には、システムが起動された時刻が
+入れられます。
+.It Li KERN_CLOCKRATE
+.Va struct clockinfo
+構造が返されます。この構造には、クロック、統計クロック、
+およびプロファイル化クロック頻度、マイクロ秒
+/hz
+チック、およびねじれレート
+が入れられます。
+.It Li KERN_FILE
+ファイルテーブル全体を返します。返されたデータは、
+1 つの
+.Va struct filehead
+に
+.Va struct file
+の配列が続いたものになります。ファイルのサイズは、
+システム内のそのようなオブジェクトの現在の数で決まります。
+.It Li KERN_HOSTID
+ホスト
+ID
+を取得または設定します。
+.It Li KERN_HOSTNAME
+ホスト名を取得または設定します。
+.It Li KERN_JOB_CONTROL
+このシステムで情報制御が利用できる場合は
+1 を返します。そうでない場合は
+0 を返します。
+.It Li KERN_MAXFILES
+システムで開けるファイルの最大数
+.It Li KERN_MAXFILESPERPROC
+1 つのプロセスについて開けるファイルの最大数。この制限が適用されるのは、
+開くという要求があった時点で、ゼロでない有効な
+uid
+のあるプロセスだけです。
+制限または有効な
+uid
+が変更されても、既に開かれているファイルは影響を受けません。
+.It Li KERN_MAXPROC
+システム内で許される同時プロセスの最大数
+.It Li KERN_MAXPROCPERUID
+1 つの有効な
+uid
+についてシステムが許容する同時プロセスの最大数。この限界が
+適用されるのは、フォーク要求の時点で、ゼロでない有効な
+uid
+のあるプロセス
+だけです。限界が変更されても、既に開始されているプロセスは影響を
+受けません。
+.It Li KERN_MAXVNODES
+システムで利用できる
+vnode
+の最大数
+.It Li KERN_NGROUPS
+補充グループの最大数
+.It Li KERN_NISDOMAINNAME
+現在の
+YP/NIS
+ドメインの名前
+.It Li KERN_OSRELDATE
+システムのリリース日付。形式は
+YYYYMM (1996
+年
+1 月は
+199601 と
+コード化されます
+)。
+.It Li KERN_OSRELEASE
+システムリリースストリング
+.It Li KERN_OSREV
+システム改訂ストリング
+.It Li KERN_OSTYPE
+システムタイプストリング
+.It Li KERN_POSIX1
+システムが準拠しようとしている
+.St -p1003.1
+のバージョン
+.It Li KERN_PROC
+プロセステーブル全体またはそのサブセットを返します。
+.Va struct kinfo_proc
+構造の配列が返され、配列のサイズはシステム内のそのようなオブジェクトの
+現在の数で決まります。第
+3 レベルと第
+4 レベルは次のとおりです。
+.Bl -column "Third level nameXXXXXX" "Fourth level is:XXXXXX" -offset indent
+.It "第 3 レベル名 第 4 レベル名"
+.It "KERN\_PROC\_ALL なし"
+.It "KERN\_PROC\_PID プロセス ID"
+.It "KERN\_PROC\_PGRP プロセスグループ"
+.It "KERN\_PROC\_TTY tty デバイス"
+.It "KERN\_PROC\_UID ユーザ ID"
+.It "KERN\_PROC\_RUID リアルユーザ ID"
+.El
+.It Li KERN_PROF
+カーネルに関するプロファイル化情報を返します。カーネルをプロファイル化用に
+コンパイルしないと、
+KERN_PROF
+値を取り出そうとしても、
+.Er ENOENT
+で処理は失敗します。ストリング用の第
+3 レベル名および整数プロファイル化情報について
+以下に詳しく説明します。
+(
+変更可能性の列は、該当する特権のあるプロセスが値を
+変更できるかどうかを示します。
+.Bl -column "GPROFXGMONPARAMXXX" "struct gmonparamXXX" -offset indent
+.It Sy "第 3 レベル名 タイプ 変更可能"
+.It "GPROF\_STATE 整数 はい"
+.It "GPROF\_COUNT u_short[\|] はい"
+.It "GPROF\_FROMS u_short[\|] はい"
+.It "GPROF\_TOS struct tostruct はい"
+.It "GPROF\_GMONPARAM struct gmonparam いいえ"
+.El
+.Pp
+変数は次のとおりです。
+.Bl -tag -width 6n
+.It Li GPROF_STATE
+GMON_PROF_ON
+または
+GMON_PROF_OFF
+を返して、プロファイル化が
+進行中であるか、または停止しているかを示します。
+.It Li GPROF_COUNT
+統計プログラムカウンタカウントの配列
+.It Li GPROF_FROMS
+呼び出し点のプログラムカウントでインデックス処理された配列
+.It Li GPROF_TOS
+呼び出しの宛先とそのカウントを記述する
+.Va struct tostruct
+の配列
+.It Li GPROF_GMONPARAM
+上記の配列のサイズを指定する構造
+.El
+.It Li KERN_QUANTUM
+他プロセスが実行待ち行列にいる場合において
+あるプロセスが取り上げられずに実行し続けられる最大期間を、
+ミリ秒単位で示します。
+.It Li KERN_SAVED_IDS
+保存された
+set-group
+および保存された
+set-user ID
+が利用できる場合は
+1 を
+返します。
+.It Li KERN_SECURELVL
+システムのセキュリティレベル。このレベルは、該当する特権のあるプロセス
+によって上げることができます。下げることはできません。
+.It Li KERN_VERSION
+システムバージョンストリング
+.It Li KERN_VNODE
+vnode
+テーブル全体を返します。
+vnode
+テーブルは必ずしもシステムの一貫した
+スナップショットではないことに注意してください。返されるデータは配列で
+構成され、配列のサイズは、システム内のそのようなオブジェクトの現在の数で
+決まります。配列の各要素に含まれるのは、
+vnode
+のカーネルアドレス
+.Va struct vnode *
+に
+vnode
+自体
+.Va struct vnode
+が続いたものです。
+.El
+.Ss CTL_MACHDEP
+定義された変数の集合はアーキテクチャに依存します。次の変数が
+i386
+アーキテクチャ用に定義されています。
+.Bl -column "CONSOLE_DEVICEXXX" "struct bootinfoXXX" -offset indent
+.It Sy "第 2 レベル名 タイプ 変更可能"
+.It Li "CPU\_CONSDEV dev_t いいえ"
+.It Li "CPU\_ADJKERNTZ 整数 はい"
+.It Li "CPU\_DISRTCSET 整数 はい"
+.It Li "CPU\_BOOTINFO struct bootinfo いいえ"
+.It Li "CPU\_WALLCLOCK 整数 はい"
+.El
+.Ss CTL_NET
+CTL_NET
+レベルに利用できるストリングと整数については以下に詳しく
+説明します。変更可能性の列は、該当する特権のあるプロセスが値を
+変更できるかどうかを示します。
+.Bl -column "Second level nameXXXXXX" "routing messagesXXX" -offset indent
+.It Sy "第 2 レベル名 タイプ 変更可能"
+.It "PF\_ROUTE ルーティングメッセージ いいえ"
+.It "PF\_INET IPv4 値 はい"
+.It "PF\_INET6 IPv6 値 はい"
+.El
+.Pp
+.Bl -tag -width 6n
+.It Li PF_ROUTE
+ルーティングテーブル全体またはそのサブセットを返します。データは、
+ルーティングメッセージのシーケンスとして返されます
+(
+ヘッダファイル、形式、
+および意味については
+.Xr route 4
+を参照
+)。各メッセージの長さはメッセージヘッダ
+に組み込まれています。
+.Pp
+第
+3 レベル名はプロトコル番号で、現時点では必ず
+0 です。第
+4 レベル名は
+アドレスファミリで、これを
+0 に設定するとすべてのアドレスファミリを
+選択できます。第
+5 レベル名と第
+6 レベル名は次のとおりです。
+.Bl -column "Fifth level nameXXXXXX" "Sixth level is:XXX" -offset indent
+.It Sy "第 5 レベル名 第 6 レベル"
+.It "NET_RT_FLAGS rtflags"
+.It "NET_RT_DUMP なし"
+.It "NET_RT_IFLIST なし"
+.El
+.It Li PF_INET
+IPv4 (インターネットプロトコルバージョン 4)
+に関する各種のグローバルな情報を取得または
+設定します。第
+3 レベル名はプロトコルです。第
+4 レベル名は変数名です。
+現時点で定義されているプロトコルと名前は次のとおりです。
+.Bl -column ProtocolXX VariableXX TypeXX ChangeableXX
+.It Sy "プロトコル 変数 タイプ 変更可能"
+.It "icmp bmcastecho 整数 はい"
+.It "icmp maskrepl 整数 はい"
+.It "ip forwarding 整数 はい"
+.It "ip redirect 整数 はい"
+.It "ip ttl 整数 はい"
+.It "udp checksum 整数 はい"
+.El
+.Pp
+変数は次のとおりです。
+.Bl -tag -width 6n
+.It Li icmp.bmcastecho
+ブロードキャストまたはマルチキャストのアドレスへの
+ICMP
+エコー要求が
+応答される必要がある場合は
+1 を返します。
+.It Li icmp.maskrepl
+ICMP
+ネットワークマスク要求が応答される必要がある場合は
+1 を返します。
+.It Li ip.forwarding
+IP
+転送がホストについて有効なときは
+1 を返します。つまり、ホストがルータ
+として機能しているときです。
+.It Li ip.redirect
+ICMP
+再転送がホストによって送信できるときは
+1 を返します。このオプション
+は、ホストが
+IP
+パケットをルーティングしていない場合は無視されます。また、
+このオプションは通常、すべてのシステムで有効にしておく必要があります。
+.It Li ip.ttl
+システムがソースになっている
+IP
+パケットの最大寿命
+(
+ホップ数
+)
+値。この値は
+通常のトランスポートプロトコルに適用されます。
+ICMP
+にではありません。
+.It Li udp.checksum
+UDP
+チェックサムが計算およびチェックされているときは
+1 を返します。
+UDP
+チェックサムを無効にすることは、強く非推奨です。
+.Pp
+変数 net.inet.*.ipsec については
+.Xr ipsec 4
+を参照してください。
+.El
+.It Li PF_INET6
+IPv6 (インターネットプロトコルバージョン 6)
+に関する各種のグローバルな情報を取得または
+設定します。
+第 3 レベル名はプロトコルです。
+第 4 レベル名は変数名です。
+.Pp
+変数 net.inet6.* については
+.Xr inet6 4
+を参照してください。
+変数 net.inet6.*.ipsec6 については
+.Xr ipsec 4
+を参照してください。
+.El
+.Ss CTL_USER
+CTL_USER
+レベルに利用できるストリングと整数について以下に詳しく説明します。
+変更可能性の列は、該当する特権のあるプロセスが値を変更できるかどうかを
+示します。
+.Bl -column "USER_COLL_WEIGHTS_MAXXXX" "integerXXX" -offset indent
+.It Sy "第 2 レベル名 タイプ 変更可能"
+.It "USER\_BC\_BASE\_MAX 整数 いいえ"
+.It "USER\_BC\_DIM\_MAX 整数 いいえ"
+.It "USER\_BC\_SCALE\_MAX 整数 いいえ"
+.It "USER\_BC\_STRING\_MAX 整数 いいえ"
+.It "USER\_COLL\_WEIGHTS\_MAX 整数 いいえ"
+.It "USER\_CS\_PATH ストリング いいえ"
+.It "USER\_EXPR\_NEST\_MAX 整数 いいえ"
+.It "USER\_LINE\_MAX 整数 いいえ"
+.It "USER\_POSIX2\_CHAR\_TERM 整数 いいえ"
+.It "USER\_POSIX2\_C\_BIND 整数 いいえ"
+.It "USER\_POSIX2\_C\_DEV 整数 いいえ"
+.It "USER\_POSIX2\_FORT\_DEV 整数 いいえ"
+.It "USER\_POSIX2\_FORT\_RUN 整数 いいえ"
+.It "USER\_POSIX2\_LOCALEDEF 整数 いいえ"
+.It "USER\_POSIX2\_SW\_DEV 整数 いいえ"
+.It "USER\_POSIX2\_UPE 整数 いいえ"
+.It "USER\_POSIX2\_VERSION 整数 いいえ"
+.It "USER\_RE\_DUP\_MAX 整数 いいえ"
+.It "USER\_STREAM\_MAX 整数 いいえ"
+.It "USER\_TZNAME\_MAX 整数 いいえ"
+.El
+.Bl -tag -width 6
+.Pp
+.It Li USER_BC_BASE_MAX
+.Xr bc 1
+ユーティリティ内の最大
+ibase/obase
+値
+.It Li USER_BC_DIM_MAX
+.Xr bc 1
+ユーティリティ内の最大配列サイズ
+.It Li USER_BC_SCALE_MAX
+.Xr bc 1
+ユーティリティ内の最大スケール値
+.It Li USER_BC_STRING_MAX
+.Xr bc 1
+ユーティリティ内の最大ストリング長
+.It Li USER_COLL_WEIGHTS_MAX
+ロケール定義ファイル内の
+LC_COLLATE
+順序キーワードのエントリに割り
+当てできる重みの最大数
+.It Li USER_CS_PATH
+すべての標準ユーティリティを検出する環境変数
+.Ev PATH
+の値を返します。
+.It Li USER_EXPR_NEST_MAX
+.Xr expr 1
+ユーティリティによって、丸括弧内にネストできる式の最大数
+.It Li USER_LINE_MAX
+テキスト処理ユーティリティ入力行の最大長
+(
+バイト単位
+)
+.It Li USER_POSIX2_CHAR_TERM
+.St -p1003.2
+に記述されたすべての操作ができる少なくとも
+1 つの端末タイプを
+システムがサポートする場合は
+1 を返します。そうでない場合は
+0 を返します。
+.It Li USER_POSIX2_C_BIND
+システムの
+C
+言語開発機能が、
+C
+言語バインディングオプションをサポートする
+場合は
+1 を返します。そうでない場合は
+0 を返します。
+.It Li USER_POSIX2_C_DEV
+システムが
+C
+言語開発ユーティリティオプションをサポートする場合は
+1 を
+返します。そうでない場合は
+0 を返します。
+.It Li USER_POSIX2_FORT_DEV
+システムが
+FORTRAN
+開発ユーティリティオプションをサポートする場合は
+1 を
+返します。そうでない場合は
+0 を返します。
+.It Li USER_POSIX2_FORT_RUN
+システムが
+FORTRAN
+ランタイムユーティリティオプションをサポートする場合は
+1 を返します。そうでない場合は
+0 を返します。
+.It Li USER_POSIX2_LOCALEDEF
+システムがロケールの作成をサポートする場合は
+1 を返します。そうでない場合は
+0 を返します。
+.It Li USER_POSIX2_SW_DEV
+システムがソフトウェア開発ユーティリティオプションをサポートする場合は
+1 を
+返します。そうでない場合は
+0 を返します。
+.It Li USER_POSIX2_UPE
+システムがユーザポータビリティ・ユーティリティオプションをサポートする
+場合は
+1 を返します。そうでない場合は
+0 を返します。
+.It Li USER_POSIX2_VERSION
+システムが準拠しようとしている
+.St -p1003.2
+のバージョン
+.It Li USER_RE_DUP_MAX
+間隔表記を使用しているときに、許容される正規表現の反復発生の最大数
+.It Li USER_STREAM_MAX
+プロセスが同時に開いておけるストリームの最大数の最小
+.It Li USER_TZNAME_MAX
+時間帯の名前についてサポートされるタイプの最大数の最小
+.El
+.Ss CTL_VM
+CTL_VM
+レベルで利用できるストリングと整数について以下で詳しく説明します。
+変更可能性の列は、該当する特権のあるプロセスが値を変更できるかどうかを
+示します。
+.Bl -column "Second level nameXXXXXX" "struct loadavgXXX" -offset indent
+.It Sy "第 2 レベル名 タイプ 変更可能"
+.It "VM\_LOADAVG struct loadavg いいえ"
+.It "VM\_METER struct vmtotal いいえ"
+.It "VM\_PAGEOUT\_ALGORITHM 整数 はい"
+.It "VM\_SWAPPING\_ENABLED 整数 おそらく"
+.It "VM\_V\_CACHE\_MAX 整数 はい"
+.It "VM\_V\_CACHE\_MIN 整数 はい"
+.It "VM\_V\_FREE\_MIN 整数 はい"
+.It "VM\_V\_FREE\_RESERVED 整数 はい"
+.It "VM\_V\_FREE\_TARGET 整数 はい"
+.It "VM\_V\_INACTIVE\_TARGET 整数 はい"
+.It "VM\_V\_PAGEOUT\_FREE\_MIN 整数 はい"
+.El
+.Pp
+.Bl -tag -width 6n
+.It Li VM_LOADAVG
+負荷平均履歴を返します。返されたデータは
+.Va struct loadavg
+で構成されます。
+.It Li VM_METER
+システム全体に渡る仮想メモリ統計を返します。返されたデータは
+.Va struct vmtotal
+で構成されます。
+.It Li VM_PAGEOUT_ALGORITHM
+統計ベースの管理アルゴリズムが使用される場合は
+0 です。
+近 LRU
+( near-LRU )
+アルゴリズムが使用される場合は
+1 です。
+.It Li VM_SWAPPING_ENABLED
+プロセススワップが有効な場合は
+1 です。無効な場合は
+0 です。スワップを
+無効にしてカーネルが構築された場合、この変数は永続的に
+0 に設定されます。
+.It Li VM_V_CACHE_MAX
+キャッシュ待ち行列の最大希望サイズ
+.It Li VM_V_CACHE_MIN
+キャッシュ待ち行列の最小希望サイズ。キャッシュ待ち行列のサイズがこの
+値よりはるかに低いと、ページアウトデーモンが起動されます。
+.It Li VM_V_FREE_MIN
+メモリを待っているプロセスが起動する前に、利用できるようになる必要のある
+メモリの最小量
+(
+キャッシュメモリ+空きメモリ
+)。
+.It Li VM_V_FREE_RESERVED
+空きページとキャッシュページがこの値より低いと、プロセスは
+ページアウトデーモンを起動し、メモリを待機します。
+.It Li VM_V_FREE_TARGET
+ページアウトデーモンが維持しようとする空きメモリの合計量
+(
+キャッシュメモリを
+含む
+)。
+.It Li VM_V_INACTIVE_TARGET
+ページアウトデーモンが、実行されるときに、到達する必要のあるアクティブ
+でないページの希望数。アクティブでないページは、必要なときに、
+プロセスアドレス内に素早く挿入できます。
+.It Li VM_V_PAGEOUT_FREE_MIN
+空きメモリとキャッシュメモリの量がこの値より低い場合、ページアウトデーモン
+はデッドロックを避けるために "メモリ維持モード" に入ります。
+.El
+.Sh 戻り値
+.Rv -std
+.Sh エラー
+次のエラーが報告される可能性があります。
+.Bl -tag -width Er
+.It Bq Er EFAULT
+バッファ
+.Fa name、
+.Fa oldp、
+.Fa newp、または長さポインタ
+.Fa oldlenp
+に無効な
+アドレスが含まれています。
+.It Bq Er EINVAL
+.Fa name
+配列が
+2 未満であるか、または
+CTL_MAXNAME
+より大きくなっています。
+.It Bq Er EINVAL
+NULL
+でない
+.Fa newp
+が指定され、
+.Fa newlen
+内の指定の長さが
+大きすぎるかまたは小さすぎます。
+.It Bq Er ENOMEM
+.Fa oldlenpis
+が指す長さが短すぎて、要求された値を保持できません。
+.It Bq Er ENOTDIR
+.Fa name
+配列が、端の名前ではなく、中間の名前を指定しています。
+.It Bq Er EISDIR
+.Fa name
+配列が端の名前を指定していますが、実際の名前は端ではありません。
+.It Bq Er ENOENT
+.Fa name
+配列が未知の値を指定しています。
+.It Bq Er EPERM
+読み取り専用値を設定しようとしました。
+.It Bq Er EPERM
+該当する特権のないプロセスが値を設定しようとしました。
+.El
+.Sh ファイル
+.Bl -tag -width <netinet/icmpXvar.h> -compact
+.It Aq Pa sys/sysctl.h
+1 番上のレベルの識別子の定義、
+2 番めのレベルのカーネルおよび
+ハードウェア識別子、およびユーザレベル識別子
+.It Aq Pa sys/socket.h
+第
+2 レベルのネットワーク識別子の定義
+.It Aq Pa sys/gmon.h
+第
+3 レベルのプロファイル化識別子についての定義
+.It Aq Pa vm/vm_param.h
+第
+2 レベルの仮想メモリ識別子についての定義
+.It Aq Pa netinet/in.h
+第 3 レベルの IPv4/IPv6 識別子と、
+第 4 レベルの IPv4/IPv6 識別子についての定義
+.It Aq Pa netinet/icmp_var.h
+第
+4 レベルの
+ICMP
+識別子についての定義
+.It Aq Pa netinet/icmp6.h
+4 レベルの
+ICMPv6
+識別子についての定義
+.It Aq Pa netinet/udp_var.h
+第
+4 レベルの
+UDP
+識別子についての定義
+.El
+.Sh 関連項目
+.Xr sysconf 3 ,
+.Xr sysctl 8
+.Sh 歴史
+.Fn sysctl
+関数は
+.Bx 4.4
+で最初に取り入れられました。