EN JA
SYSCTL(3)
SYSCTL(3) FreeBSD Library Functions Manual SYSCTL(3)

名称

sysctl, sysctlbyname, sysctlnametomibシステム情報を取得または設定する

ライブラリ

Standard C Library (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 で返ります。古い値が要求されないなら、 oldpoldlenp は、NULL に設定されるべきです。

利用可能なデータのサイズは、 oldpNULL 引数として sysctl() を呼ぶことにより決定できます。利用可能なデータのサイズは、 oldlenp によって指される位置の中に返されます。いくつかの操作については、空間の量がしばしば変わるかもしれません。これらの操作については、返されたサイズがその後すぐにデータを返す呼び出しのために十分大きくなるように、システムは、切り上げることを試みます。

新しい値を設定するために、 newp は、要求された値が得られるための長さ newlen のバッファを指すために設定されます。新しい値が設定されない場合、 newp は、NULL に、 newlen は、0 に設定されるべきです。

sysctlnametomib() 関数は、名前の ASCII 表現を受け入れ、整数名前ベクトルを調べて、 mibp によって指される mib 配列中に数値表現を返します。 mib 配列中の要素の数は、呼び出しの前に sizep によって指定された位置によって与えられます。また、その位置は、成功した呼び出しの後でコピーされたエントリの数を与えます。結果の mibsize は、要求された 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_FLOATINGPOINT 整数 no
HW_MACHINE_ARCH 文字列 no
HW_REALMEM 整数 no
HW_MACHINE
マシンクラス。
HW_MODEL
マシンモデル。
HW_NCPU
CPU の数。
HW_BYTEORDER
バイト順 (4,321 または 1,234)。
HW_PHYSMEM
物理メモリのバイト。
HW_USERMEM
カーネルでないメモリのバイト。
HW_PAGESIZE
ソフトウェアのページサイズ。
HW_FLOATINGPT
浮動小数点サポートがハードウェアにあるなら、0 でない。
HW_MACHINE_ARCH
マシンに依存するアーキテクチャタイプ。
HW_REALMEM
実メモリのバイト数。

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
M mm R xx 形式のカーネルリリースバージョン。ここで、 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_index None
NET_RT_IFLISTL 0 または if_index None

NET_RT_IFMALIST 名は、0 が指定された場合は、すべてのインタフェースの、そうでなければ if_index で指定されたインタフェースのマルチキャストグループメンバーシップに関する情報を返します。

NET_RT_IFLISTL は、インタフェースがバイナリ互換性を壊さずに拡張されることを可能にする追加のフィールドを付けてメッセージヘッダの構造体を返しますが、 NET_RT_IFLIST に似ています。 NET_RT_IFLISTL は、次のメッセージヘッダの構造体の 'l' バージョンを使用します: struct if_msghdrlstruct ifa_msghdrl

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_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_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_CACHE_MAX 整数 yes
VM_V_CACHE_MIN 整数 yes
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_LOADAVG
ロードアベレージ (負荷平均) 履歴を返します。返されたデータは、 struct loadavg から成ります。
VM_TOTAL
システム広範の仮想メモリ統計を返します。返されたデータは、 struct vmtotal から成ります。
VM_SWAPPING_ENABLED
プロセススワップが使用可能な場合 1 を返し、使用不可能な場合 0 を返します。カーネルがスワップを利用不可能で構築された場合、この変数は、永久に 0 に設定されます。
VM_V_CACHE_MAX
キャッシュキューの望ましい最大サイズ。
VM_V_CACHE_MIN
キャッシュキューの望ましい最小サイズ。キャッシュキューのサイズがこの値をはるかに下回るくらい減少する場合、ページアウトデーモンが呼び起こされます。
VM_V_FREE_MIN
メモリを待っているプロセスが呼び起こされる前に、利用可能とするために必要なメモリの最小の量 (キャッシュメモリ+空きメモリ)。
VM_V_FREE_RESERVED
プロセスは、ページアウトデーモンを呼び起こし、空きページとキャッシュページの数がこの値まで下落する場合、メモリを待ちます。
VM_V_FREE_TARGET
ページアウトデーモンが維持しようとする空きメモリの合計の量 (キャッシュメモリを含む)。
VM_V_INACTIVE_TARGET
ページアウトデーモンが、実行されるときに、達成するべきアクティブでないページの望ましい数。アクティブでないページは、必要なときに。プロセスアドレス空間に素早く挿入できます。
VM_V_PAGEOUT_FREE_MIN
空きメモリとキャッシュメモリの量がこの値を下回る場合、ページアウトデーモンは、デッドロックを回避するために "メモリ節約モード"に入ります。

戻り値

Upon successful completion, the value 0 is returned; otherwise the value -1 is returned and the global variable errno is set to indicate the error.

関連ファイル

< 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]
適切な特権のないプロセスが値を設定しようとしました。

歴史

sysctl() は、 4.4BSD ではじめて登場しました。
May 17, 2013 FreeBSD