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 で返ります。古い値が要求されないなら、 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_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_msghdrl と struct 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 |