tail head cat sleep
QR code linking to this page

manページ  — SYSCTL

名称

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

内容

ライブラリ

Standard C Library (libc, -lc)

書式

#include <sys/types.h>
#include <sys/sysctl.h>

int
sysctl(int *name, u_int namelen, void *oldp, size_t *oldlenp, void *newp, size_t newlen);

int
sysctlbyname(const char *name, void *oldp, size_t *oldlenp, void *newp, size_t newlen);

int
sysctlnametomib(const char *name, int *mibp, size_t *sizep);

解説

sysctl() 関数はシステム情報を取り出し、該当する特権のあるプロセスが システム情報を設定できるようにします。 sysctl() で利用できる情報は、整数、 ストリング、およびテーブルで構成されます。情報は、 sysctl(8) ユーティリティ を使用してコマンドインタフェースから取り出しおよび設定できます。

以降で明確に記載した場合を除いて、 sysctl() は、要求されたデータの一貫した スナップショットを返します。一貫性を保つために、メモリへの宛先バッファが ロックされるので、データはブロックなしにコピーできます。 sysctl() の呼び出しはデッドロックを回避するためにシリアル化されています。

状態は ``管理情報ベース'' (Management Information Base、MIB) スタイルの名前を使用して記述され、 name にリストされます。 name は長さが namelen の整数の配列です。

sysctlbyname() 関数は、名前の ASCII 表現を受け入れ、整数の名前ベクトルを 内部的に検索します。それ以外は、標準の sysctl() 関数と同じように機能します。

情報は oldp で指定したバッファにコピーされます。バッファのサイズは、呼び 出しの前に oldlenp で指定した位置で与えられます。この位置は、呼び出しが 正常に完了した後およびエラーコード ENOMEM で返った後にコピーされるデータの 量を与えます。利用できるデータの量が指定のバッファサイズより大きい場合、 呼び出しは、指定バッファにちょうど入る量のデータだけを与え、エラーコード ENOMEM で返ります。古い値が不要な場合は、 oldpoldlenp を NULL に 設定してください。

利用できるデータのサイズを決定するには、 oldp に NULL パラメータを指定して sysctl() を呼び出します。利用できるデータのサイズが、 oldlenp の指す位置に 返されます。操作によっては空間の量が頻繁に変化することがあります。 そのような操作の場合、システムは量を切り上げようとします。返されたサイズ が、その後まもなくデータを返す呼び出しに十分であるようにするためです。

新しい値を設定するため、 newp は、長さが newlen のバッファを指すように 設定されます。このバッファから、要求された値が取得されます。新しい値が 設定されないと、 newp は NULL に設定され、 newlen は 0 に設定されます。

sysctlnametomib() 関数は、ASCII 表現の名前を受け付け、 整数の名前ベクトルを検索し、 mibp で指される mib 配列中に、数値表現を格納して返します。 mib 配列中の要素数は、呼び出し前に sizep で指定された場所が与えます。 呼び出しが成功した後には、この場所には、コピーされた要素数が与えられます。 結果の mibsize は、後で sysctl() 呼び出しに使用して、 要求した ASCII 名に関連付けられているデータを取得可能です。 同じ名前の変数を繰り返し要求するアプリケーションが使用することを、 このインタフェースは意図しています ( sysctl() 関数は、 sysctlbyname() 関数で実現される要求と同じことを、約 1/3 の時間で実行します)。 sysctlbyname() 関数は、 mib の前置詞を取得してこれに最後の構成要素を付加するためにも有用です。 例えば、PID が 100 未満のプロセスのプロセス情報を取得するには、 次のようにします:

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); }

1 番上のレベルの名前は < sys/sysctl.h> に CTL_ 接頭語付きで定義されます。 次のとおりです。次のレベルおよびそれ以下のレベルは、ここにリストする インクルードファイル内にあり、以降の個別のセクションで説明します。

名前 Ta 次のレベル名 解説

CTL_DEBUG Ta sys/sysctl.h
デバッグ

CTL_VFS Ta sys/mount.h
ファイルシステム

CTL_HW Ta sys/sysctl.h
一般的な CPU, I/O

CTL_KERN Ta sys/sysctl.h
カーネルの最高限界

CTL_MACHDEP Ta sys/sysctl.h
マシン依存

CTL_NET Ta sys/socket.h
ネットワーク

CTL_USER Ta sys/sysctl.h
ユーザレベル

CTL_VM Ta 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() が、カーネルからデバッグ変数の リストを取得し、その現在値を表示するからです。システムは 20 個の ( struct ctldebug) 変数を定義します。これらは debug0 から debug19 という 名前になります。これらは別個の変数として宣言されるので、対応変数の位置で 個別に初期化できます。ローダーは、変数が複数の場所で初期化されたときは エラーを出して、同じ変数が複数に使用されるのを回避します。たとえば、変数 dospecialcheck をデバッグ変数としてエクスポートする場合には、次の宣言が 使用できます。
int dospecialcheck = 1;
struct ctldebug debug5 = { "dospecialcheck", &dospecialcheck };

CTL_VFS

明瞭な第 2 レベルの名称 VFS_GENERIC は、すべてのファイルシステムに関する 一般情報を取得するのに使用します。これの第 3 レベルの識別子の 1 つは VFS_MAXTYPENUM で、最も大きいファイルシステムタイプの番号を与えます。別の 第 3 レベルの識別子は VFS_CONF で、第 4 レベルの識別子として与えられた ファイルシステムタイプに関する構成を返します ( 使用法の例は getvfsbyname(3) を参照 ) 。残りの第 2 レベルの識別子は、 statfs(2) 呼び出しまたは VFS_CONF が 返すファイルシステムタイプ番号です。各ファイルシステムについて利用できる第 3 レベルの識別子は、そのファイルシステムのマウント引数構造を定義する ヘッダファイルで指定されます。

CTL_HW

CTL_HW レベルに関して利用できるストリングと整数については以下で詳しく 説明します。変更可能性の列は、適切な特権のあるプロセスが値を 変更できるかどうかを示します。
第 2 レベル名 Ta タイプ 変更可能

HW_MACHINE Ta ストリング
いいえ

HW_MODEL Ta ストリング
いいえ

HW_NCPU Ta 整数
いいえ

HW_BYTEORDER Ta 整数
いいえ

HW_PHYSMEM Ta 整数
いいえ

HW_USERMEM Ta 整数
いいえ

HW_PAGESIZE Ta 整数
いいえ

HW_FLOATINGPOINT Ta 整数
いいえ

HW_MACHINE_ARCH Ta ストリング
いいえ

HW_MACHINE
  マシンクラス
HW_MODEL
  マシンモデル
HW_NCPU
  CPU の数
HW_BYTEORDER
  バイト順 (4,321、または 1,234)
HW_PHYSMEM
  物理メモリのバイト
HW_USERMEM
  カーネルでないメモリのバイト
HW_PAGESIZE
  ソフトウェアのページサイズ
HW_FLOATINGPOINT
  浮動小数点サポートがハードウェアにある場合はゼロでない
HW_MACHINE_ARCH
  マシンはアーキテクチャタイプに依存

CTL_KERN

CTL_KERN レベルに関して利用できるストリングと整数の情報について以下に詳しく 説明します。変更可能性の列は、該当する特権のあるプロセスが値を 変更するかどうかを示します。現時点で利用できるデータのタイプは、 プロセス情報、システム vnode、開いたファイルのエントリ、 ルーティングテーブルのエントリ、仮想メモリ統計、負荷平均履歴、および クロックレート情報です。

第 2 レベル名 Ta タイプ 変更可能

KERN_ARGMAX Ta 整数
いいえ

KERN_BOOTFILE Ta ストリング
はい

KERN_BOOTTIME Ta struct timeval
いいえ

KERN_CLOCKRATE Ta struct clockinfo
いいえ

KERN_FILE Ta struct file
いいえ

KERN_HOSTID Ta 整数
はい

KERN_HOSTNAME Ta ストリング
はい

KERN_JOB_CONTROL Ta 整数
いいえ

KERN_MAXFILES Ta 整数
はい

KERN_MAXFILESPERPROC Ta 整数
はい

KERN_MAXPROC Ta 整数
いいえ

KERN_MAXPROCPERUID Ta 整数
はい

KERN_MAXVNODES Ta 整数
はい

KERN_NGROUPS Ta 整数
いいえ

KERN_NISDOMAINNAME Ta ストリング
はい

KERN_OSRELDATE Ta 整数
いいえ

KERN_OSRELEASE Ta ストリング
いいえ

KERN_OSREV Ta 整数
いいえ

KERN_OSTYPE Ta ストリング
いいえ

KERN_POSIX1 Ta 整数
いいえ

KERN_PROC Ta struct proc
いいえ

KERN_PROF Ta node
適用不可

KERN_QUANTUM Ta 整数
はい

KERN_SAVED_IDS Ta 整数
いいえ

KERN_SECURELVL Ta 整数
累乗のみ

KERN_UPDATEINTERVAL Ta 整数
いいえ

KERN_VERSION Ta ストリング
いいえ

KERN_VNODE Ta struct vnode
いいえ

KERN_ARGMAX
  execve(2) への引数の最大バイト数
KERN_BOOTFILE
  カーネルがロードされた元のファイルの完全なパス名
KERN_BOOTTIME
  struct timeval 構造が返されます。この構造には、システムが起動された時刻が 入れられます。
KERN_CLOCKRATE
  struct clockinfo 構造が返されます。この構造には、クロック、統計クロック、 およびプロファイル化クロック頻度、マイクロ秒 /hz チック、およびねじれレート が入れられます。
KERN_FILE
  ファイルテーブル全体を返します。返されたデータは、 1 つの struct filehead struct file の配列が続いたものになります。ファイルのサイズは、 システム内のそのようなオブジェクトの現在の数で決まります。
KERN_HOSTID
  ホスト ID を取得または設定します。
KERN_HOSTNAME
  ホスト名を取得または設定します。
KERN_JOB_CONTROL
  このシステムで情報制御が利用できる場合は 1 を返します。そうでない場合は 0 を返します。
KERN_MAXFILES
  システムで開けるファイルの最大数
KERN_MAXFILESPERPROC
  1 つのプロセスについて開けるファイルの最大数。この制限が適用されるのは、 開くという要求があった時点で、ゼロでない有効な uid のあるプロセスだけです。 制限または有効な uid が変更されても、既に開かれているファイルは影響を受けません。
KERN_MAXPROC
  システム内で許される同時プロセスの最大数
KERN_MAXPROCPERUID
  1 つの有効な uid についてシステムが許容する同時プロセスの最大数。この限界が 適用されるのは、フォーク要求の時点で、ゼロでない有効な uid のあるプロセス だけです。限界が変更されても、既に開始されているプロセスは影響を 受けません。
KERN_MAXVNODES
  システムで利用できる vnode の最大数
KERN_NGROUPS
  補充グループの最大数
KERN_NISDOMAINNAME
  現在の YP/NIS ドメインの名前
KERN_OSRELDATE
  システムのリリース日付。形式は YYYYMM (1996 年 1 月は 199601 と コード化されます )。
KERN_OSRELEASE
  システムリリースストリング
KERN_OSREV
  システム改訂ストリング
KERN_OSTYPE
  システムタイプストリング
KERN_POSIX1
  システムが準拠しようとしている IEEE Std 1003.1 ("POSIX.1") のバージョン
KERN_PROC
  プロセステーブル全体またはそのサブセットを返します。 struct kinfo_proc 構造の配列が返され、配列のサイズはシステム内のそのようなオブジェクトの 現在の数で決まります。第 3 レベルと第 4 レベルは次のとおりです。

第 3 レベル名
第 4 レベル名

KERN_PROC_ALL
なし

KERN_PROC_PID
プロセス ID

KERN_PROC_PGRP
プロセスグループ

KERN_PROC_TTY
tty デバイス

KERN_PROC_UID
ユーザ ID

KERN_PROC_RUID
リアルユーザ ID
KERN_PROF
  カーネルに関するプロファイル化情報を返します。カーネルをプロファイル化用に コンパイルしないと、 KERN_PROF 値を取り出そうとしても、 ENOENT で処理は失敗します。ストリング用の第 3 レベル名および整数プロファイル化情報について 以下に詳しく説明します。 ( 変更可能性の列は、該当する特権のあるプロセスが値を 変更できるかどうかを示します。
第 3 レベル名 Ta タイプ 変更可能

GPROF_STATE Ta 整数
はい

GPROF_COUNT Ta u_short[]
はい

GPROF_FROMS Ta u_short[]
はい

GPROF_TOS Ta struct tostruct
はい

GPROF_GMONPARAM Ta struct gmonparam
いいえ

変数は次のとおりです。

GPROF_STATE
  GMON_PROF_ON または GMON_PROF_OFF を返して、プロファイル化が 進行中であるか、または停止しているかを示します。
GPROF_COUNT
  統計プログラムカウンタカウントの配列
GPROF_FROMS
  呼び出し点のプログラムカウントでインデックス処理された配列
GPROF_TOS
  呼び出しの宛先とそのカウントを記述する struct tostruct の配列
GPROF_GMONPARAM
  上記の配列のサイズを指定する構造
KERN_QUANTUM
  他プロセスが実行待ち行列にいる場合において あるプロセスが取り上げられずに実行し続けられる最大期間を、 ミリ秒単位で示します。
KERN_SAVED_IDS
  保存された set-group および保存された set-user ID が利用できる場合は 1 を 返します。
KERN_SECURELVL
  システムのセキュリティレベル。このレベルは、該当する特権のあるプロセス によって上げることができます。下げることはできません。
KERN_VERSION
  システムバージョンストリング
KERN_VNODE
  vnode テーブル全体を返します。 vnode テーブルは必ずしもシステムの一貫した スナップショットではないことに注意してください。返されるデータは配列で 構成され、配列のサイズは、システム内のそのようなオブジェクトの現在の数で 決まります。配列の各要素に含まれるのは、 vnode のカーネルアドレス struct vnode * に vnode 自体 struct vnode が続いたものです。

CTL_MACHDEP

定義された変数の集合はアーキテクチャに依存します。次の変数が i386 アーキテクチャ用に定義されています。
第 2 レベル名 Ta タイプ 変更可能
CPU_CONSDEV Ta dev_t いいえ
CPU_ADJKERNTZ Ta 整数 はい
CPU_DISRTCSET Ta 整数 はい
CPU_BOOTINFO Ta struct bootinfo いいえ
CPU_WALLCLOCK Ta 整数 はい

CTL_NET

CTL_NET レベルに利用できるストリングと整数については以下に詳しく 説明します。変更可能性の列は、該当する特権のあるプロセスが値を 変更できるかどうかを示します。
第 2 レベル名 Ta タイプ 変更可能

PF_ROUTE Ta ルーティングメッセージ
いいえ

PF_INET Ta IPv4 値
はい

PF_INET6 Ta IPv6 値
はい

PF_ROUTE
  ルーティングテーブル全体またはそのサブセットを返します。データは、 ルーティングメッセージのシーケンスとして返されます ( ヘッダファイル、形式、 および意味については route(4) を参照 )。各メッセージの長さはメッセージヘッダ に組み込まれています。

第 3 レベル名はプロトコル番号で、現時点では必ず 0 です。第 4 レベル名は アドレスファミリで、これを 0 に設定するとすべてのアドレスファミリを 選択できます。第 5 レベル名と第 6 レベル名は次のとおりです。
第 5 レベル名 第 6 レベル

NET_RT_FLAGS
rtflags

NET_RT_DUMP
なし

NET_RT_IFLIST
なし

PF_INET
  IPv4 (インターネットプロトコルバージョン 4) に関する各種のグローバルな情報を取得または 設定します。第 3 レベル名はプロトコルです。第 4 レベル名は変数名です。 現時点で定義されているプロトコルと名前は次のとおりです。
プロトコル Ta 変数 Ta タイプ 変更可能

icmp Ta bmcastecho Ta 整数
はい

icmp Ta maskrepl Ta 整数
はい

ip Ta forwarding Ta 整数
はい

ip Ta redirect Ta 整数
はい

ip Ta ttl Ta 整数
はい

udp Ta checksum Ta 整数
はい

変数は次のとおりです。

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 レベル名 Ta タイプ 変更可能

USER_BC_BASE_MAX Ta 整数
いいえ

USER_BC_DIM_MAX Ta 整数
いいえ

USER_BC_SCALE_MAX Ta 整数
いいえ

USER_BC_STRING_MAX Ta 整数
いいえ

USER_COLL_WEIGHTS_MAX Ta 整数
いいえ

USER_CS_PATH Ta ストリング
いいえ

USER_EXPR_NEST_MAX Ta 整数
いいえ

USER_LINE_MAX Ta 整数
いいえ

USER_POSIX2_CHAR_TERM Ta 整数
いいえ

USER_POSIX2_C_BIND Ta 整数
いいえ

USER_POSIX2_C_DEV Ta 整数
いいえ

USER_POSIX2_FORT_DEV Ta 整数
いいえ

USER_POSIX2_FORT_RUN Ta 整数
いいえ

USER_POSIX2_LOCALEDEF Ta 整数
いいえ

USER_POSIX2_SW_DEV Ta 整数
いいえ

USER_POSIX2_UPE Ta 整数
いいえ

USER_POSIX2_VERSION Ta 整数
いいえ

USER_RE_DUP_MAX Ta 整数
いいえ

USER_STREAM_MAX Ta 整数
いいえ

USER_TZNAME_MAX Ta 整数
いいえ

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 レベル名 Ta タイプ 変更可能

VM_LOADAVG Ta struct loadavg
いいえ

VM_METER Ta struct vmtotal
いいえ

VM_PAGEOUT_ALGORITHM Ta 整数
はい

VM_SWAPPING_ENABLED Ta 整数
おそらく

VM_V_CACHE_MAX Ta 整数
はい

VM_V_CACHE_MIN Ta 整数
はい

VM_V_FREE_MIN Ta 整数
はい

VM_V_FREE_RESERVED Ta 整数
はい

VM_V_FREE_TARGET Ta 整数
はい

VM_V_INACTIVE_TARGET Ta 整数
はい

VM_V_PAGEOUT_FREE_MIN Ta 整数
はい

VM_LOADAVG
  負荷平均履歴を返します。返されたデータは struct loadavg で構成されます。
VM_METER
  システム全体に渡る仮想メモリ統計を返します。返されたデータは struct vmtotal で構成されます。
VM_PAGEOUT_ALGORITHM
  統計ベースの管理アルゴリズムが使用される場合は 0 です。 近 LRU ( near-LRU ) アルゴリズムが使用される場合は 1 です。
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.

エラー

次のエラーが報告される可能性があります。
[EFAULT]
  バッファ name、 oldp、 newp、または長さポインタ oldlenp に無効な アドレスが含まれています。
[EINVAL]
  name 配列が 2 未満であるか、または CTL_MAXNAME より大きくなっています。
[EINVAL]
  NULL でない newp が指定され、 newlen 内の指定の長さが 大きすぎるかまたは小さすぎます。
[ENOMEM]
  oldlenpis が指す長さが短すぎて、要求された値を保持できません。
[ENOTDIR]
  name 配列が、端の名前ではなく、中間の名前を指定しています。
[EISDIR]
  name 配列が端の名前を指定していますが、実際の名前は端ではありません。
[ENOENT]
  name 配列が未知の値を指定しています。
[EPERM]
  読み取り専用値を設定しようとしました。
[EPERM]
  該当する特権のないプロセスが値を設定しようとしました。

ファイル

< sys/sysctl.h> 1 番上のレベルの識別子の定義、 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 識別子についての定義

関連項目

sysconf(3), sysctl(8)

歴史

sysctl() 関数は BSD 4.4 で最初に取り入れられました。

SYSCTL (3) January 23, 2001

tail head cat sleep
QR code linking to this page


このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.