FreeBSD 日本語マニュアル検索 (jman/japropos/jwhatis)


日本語 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.3-RELEASE-K, 13.0-RELEASE-K から 13.2-RELEASE-K は、全翻訳済み)

13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。



検索コマンド: man apropos whatis
コマンド/キーワード:
日本語マニュアル RELEASE :
セクション:
Table of Contents
名称 | 書式 | 解説 | 戻り値 | 関連項目 | 歴史 | 作者
ZONE(9)                FreeBSD カーネル開発者マニュアル                ZONE(9)

名称
     uma_zcreate, uma_zalloc, uma_zalloc_arg, uma_zfree, uma_zfree_arg,
     uma_zdestroy, uma_zone_set_max, uma_zone_get_max, uma_zone_get_cur,
     uma_zone_set_warning, uma_zone_set_maxaction -- ゾーンアロケータ

書式
     #include <sys/param.h>
     #include <sys/queue.h>
     #include <vm/uma.h>

     uma_zone_t
     uma_zcreate(char *name, int size, uma_ctor ctor, uma_dtor dtor,
         uma_init uminit, uma_fini fini, int align, uint16_t flags);

     void *
     uma_zalloc(uma_zone_t zone, int flags);

     void *
     uma_zalloc_arg(uma_zone_t zone, void *arg, int flags);

     void
     uma_zfree(uma_zone_t zone, void *item);

     void
     uma_zfree_arg(uma_zone_t zone, void *item, void *arg);

     void
     uma_zdestroy(uma_zone_t zone);

     int
     uma_zone_set_max(uma_zone_t zone, int nitems);

     int
     uma_zone_get_max(uma_zone_t zone);

     int
     uma_zone_get_cur(uma_zone_t zone);

     void
     uma_zone_set_warning(uma_zone_t zone, const char *warning);

     void
     uma_zone_set_maxaction(uma_zone_t zone, void (*maxaction)(uma_zone_t));

     #include <sys/sysctl.h>

     SYSCTL_UMA_MAX(parent, nbr, name, access, zone, descr);

     SYSCTL_ADD_UMA_MAX(ctx, parent, nbr, name, access, zone, descr);

     SYSCTL_UMA_CUR(parent, nbr, name, access, zone, descr);

     SYSCTL_ADD_UMA_CUR(ctx, parent, nbr, name, access, zone, descr);

解説
     ゾーンアロケータ (zone allocator) は、同様のサイズの動的にサイズが決めら
     れる項目の収集を管理するための効率的なインタフェースを提供しています。
     ゾーンアロケータは、実行時に割り付けられたものと同様に、あらかじめ割り付
     けられたゾーンで動作することができ、そのため、他のメモリ管理ルーチンより
     ブート処理でより早期に利用可能です。

     ゾーンは、同一のサイズの拡張可能な項目の収集です。ゾーンアロケータは、項
     目が使用中であるかそうでないかの経過を追い、ゾーンから項目を割り付けて、
     (それらを後で使用することを可能にする) それらを解放して元に戻すための関数
     を提供しています

     項目の最初の割り付けの後に、それは、0 クリアされますが、その後の割り付け
     では、最終の解放以後の内容のままです。

     uma_zcreate() 関数は、次に項目が割り付けられる新しいゾーンを作成します。
     name 引数は、デバッグとステータスのためのテキストのゾーン名です。このメモ
     リは、ゾーンの割り付けが解放されるまでは、解放されるべきではありません。

     ctordtor 引数は、それぞれ uma_zalloc() と uma_zfree() への呼び出しの
     時点で、uma サブシステムによって呼び出されるコールバック関数です。それら
     の目的は、リソースの割り付けまたは解放の時点で、行われる必要があるものを
     初期化するか、または破壊するためのフックを提供することです。ctordtor
     コールバックのためのよい使用法は、割り付けられたオブジェクトの数のグロー
     バルなカウントを調節することかもしれません。

     uminitfini 引数は、ゾーンからのオブジェクトの割り付けを最適化するため
     に使用されます。それらは、要求またはメモリ圧縮を満たすために、いくつかの
     項目を割り付けるか、または解放する必要があるときはいつでも、uma サブシス
     テムによって呼び出されます。uminitfini コールバックのためのよい使用法
     は、オブジェクト内に含まれるミューテックスを初期化し破壊することかもしれ
     ません。これによって、オブジェクトが uma サブシステムのオブジェクトの
     キャッシュから返されるとき、既に初期化されているミューテックスを再利用す
     ることができます。それらは、uma_zalloc() と uma_zfree() への各呼び出しで
     呼び出されませんが、いくつかのオブジェクトに関してバッチモードで呼び出さ
     れます。

     uma_zcreate() の flags 引数は、次のフラグの部分集合です:

     UMA_ZONE_NOFREE
          ゾーンのスラブ (slab) は、VM に決して返されません。

     UMA_ZONE_NODUMP
          ゾーンに属するページは、ミニダンプ (mini-dump) に含まれません。

     UMA_ZONE_PCPU
          ゾーンからの割り付けは、CPU にプライベートに割り当てられる、mp_ncpu
          シャドウコピー (shadow copy) があります。CPU は、基本的な割り付けア
          ドレスに加えて現在の CPU ID の倍数と sizeof(struct pcpu): を使用して
          アドレスをプライベートにコピーすることができます:

                foo_zone = uma_zcreate(..., UMA_ZONE_PCPU);
                 ...
                foo_base = uma_zalloc(foo_zone, ...);
                 ...
                critical_enter();
                foo_pcpu = (foo_t *)zpcpu_get(foo_base);
                /* do something with foo_pcpu */
                critical_exit();

     UMA_ZONE_OFFPAGE
          デフォルトで、スラブ内の項目の book-keeping は、スラブページ自体で行
          われます。このフラグは、book-keeping 構造体が特別の内部ゾーンとは別
          々に割り付けられるべきであることをサブシステムに明示的に伝えます。サ
          ブシステムが解放されている項目への book-keeping 構造体を見つけるメカ
          ニズムを要求するので、このフラグは、UMA_ZONE_VTOSLAB または
          UMA_ZONE_HASH のいずれかを要求します。サブシステムは、暗黙に特定の
          ゾーンのための offpage book-keeping の方を選ぶかもしれません。

     UMA_ZONE_ZINIT
          ゾーンは、新しく割り付けられたスラブをすべてゼロに初期化する内部メ
          ソッドを設定する uma_init メソッドがあります。uma_ctor がある
          uma_init メソッドを間違えないでください。UMA_ZONE_ZINIT フラグがある
          ゾーンは、すべての uma_zalloc() で、ゼロクリアされたメモリを返しませ
          ん。

     UMA_ZONE_HASH
          ゾーンは、解放されている割り付けが属しているところで、スラブ book
          keeping 構造体を見つけるために内部のハッシュテーブルを使用するべきで
          す。

     UMA_ZONE_VTOSLAB
          ゾーンは、解放されている割り付けが属しているところで、スラブ book
          keeping 構造体を見つけるために vm_page_t の特別のフィールドを使用す
          るべきです。

     UMA_ZONE_MALLOC
          ゾーンは、malloc(9) サブシステムのためのものです。

     UMA_ZONE_VM
          ゾーンは、VM サブシステムためのものです。

     ゾーンからの項目を割り付けるためには、そのゾーンへのポインタで単に
     uma_zalloc() を呼び出し、flags 引数を malloc(9) に文書化されるような選択
     されたフラグに設定します。成功するなら、項目へのポインタを返すか、または
     ゾーン中のすべての項目が使用中であり、アロケータがゾーンを拡張することが
     できず、M_NOWAIT が指定されるまれな場合に、NULL を返します。

     項目は、ゾーンへのポインタと項目へのポインタを付けて uma_zfree() を呼び出
     すことによって、それらが割り付けられた元のゾーンに解放されます。item が
     NULL であるなら、uma_zfree() は、何もしません。

     変種 uma_zalloc_arg() と uma_zfree_arg() によって、それぞれ ctor と dtor
     関数のための引数を指定できます。

     ゾーンに割り付けられたすべてのメモリを解放して、uma_zdestroy() を使用し
     て、空である作成されたゾーンを破壊することができます。uma_zalloc() でゾー
     ンから割り付けられたすべての項目は、それ以前に uma_zfree() で解放されてい
     なければなりません。

     uma_zone_set_max() 関数は、項目の数 (と、したがって、メモリ) を制限し、
     zone を割り付けることができます。nitems 引数は、要求された上限の項目数を
     指定します。結局、ゾーンに割り付けられたすべてのメモリページが、容量に利
     用されることを保証するためにまとめられた実装のために要求されているものよ
     り高くなるように、有効な制限は、呼び出し側に返されます。制限は、割り付け
     られた項目、空きの項目、cpu ごとのキャッシュの空きの項目を含んで、ゾーン
     の項目の合計の数に適用されます。2 つ以上の CPU があるシステムにおいて、残
     りのすべての解放されている項目が制限に達するとき、他の CPU のキャッシュに
     あるかもしれないので、メモリの不足がないときでさえ、指定された数の項目を
     割り付けることができないかもしれません。

     uma_zone_get_max() 関数は、ゾーンための有効な上限の項目の数を返します。

     uma_zone_get_cur() 関数は、ゾーンの概算の現在の占有を返します。正確な値を
     決定する適切な同期が実装によって実行されないので、返り値は、概算です。こ
     れは、計算に使用される潜在的に古いデータを犠牲にして低いオーバヘッドを確
     実にします。

     uma_zone_set_warning() 関数は、与えられたゾーンが満杯となり、項目を割り付
     けることが失敗するとき、システムコンソールに印刷される警告を設定します。
     警告は、5 分ごとに頻繁でなく印刷 (表示) されます。警告は、
     vm.zone_warnings sysctl の調整変数を 0 に設定することによって全体的にオフ
     に切り替えることができます。

     uma_zone_set_maxaction() 関数は、与えられたゾーンが満杯となり、項目を割り
     付けることに失敗するとき、呼び出される関数を設定します。関数は、ロックさ
     れたゾーンを付けて呼び出されます。また、割り付けられた関数を呼び出す関数
     は、追加のロックを保持します。したがって、この関数は、(シグナルのハンドラ
     と同様に) ほんの少しの作業を行うべきです。

     SYSCTL_UMA_MAX(parent, nbr, name, access, zone, descr) マクロは、ゾーンの
     ための項目の効率的な上限の数をエクスポートする静的な sysctl oid を宣言し
     ます。zone 引数は、uma_zone_t へのポインタであるべきです。oid の読み込み
     は、uma_zone_get_max() を通して取得された値を返します。oid への書き込み
     は、uma_zone_set_max() を通して新しい値を設定します。
     SYSCTL_ADD_UMA_MAX(ctx, parent, nbr, name, access, zone, descr) マクロ
     は、このタイプの oid を動的に作成するために提供されています。

     SYSCTL_UMA_CUR(parent, nbr, name, access, zone, descr) マクロは、ゾーンの
     近似の現在の占有をエクスポートする静的な読み込み専用の sysctl oid を宣言
     します。zone 引数は、uma_zone_t へのポインタであるべきです。oid の読み込
     みは、uma_zone_get_cur() によって取得された値を返します。
     SYSCTL_ADD_UMA_CUR(ctx, parent, nbr, name, zone, descr) マクロは、このタ
     イプの oid を動的に作成するために提供されています。

戻り値
     uma_zalloc() 関数は、項目へのポインタを返し、ゾーンが未使用の項目を使い果
     たし、M_NOWAIT が指定されたなら、NULL を返します。

関連項目
     malloc(9)

歴史
     ゾーンアロケータは、FreeBSD 3.0 ではじめて登場しました。それは、スラブア
     ロケータ (slab allocator) として機能するために、FreeBSD 5.0 で根本的に変
     更されました。

作者
     ゾーンアロケータは、John S. Dyson によって書かれました。ゾーンアロケータ
     は、スラブアロケータとして機能するために、Jeff Roberson
     <jeff@FreeBSD.org> によって大部分を書き直されました。

     このマニュアルページは、Dag-Erling Sm/rgrav <des@FreeBSD.org> によって書
     かれました。Jeroen Ruigrok van der Werven <asmodai@FreeBSD.org> によって
     UMA のために変更されました。

FreeBSD 11.2                    April 26, 2017                    FreeBSD 11.2

Table of Contents

FreeBSD マニュアル検索