Go to main content
リソース管理および Oracle® Solaris ゾーン開発者ガイド

印刷ビューの終了

更新: 2016 年 11 月
 
 

拡張アカウンティング API 関数

拡張アカウンティング API には、次のようなアクションを実行する関数が含まれています。

  • exacct システムコール

  • exacct ファイルの操作

  • exacct オブジェクトの操作

このセクションでは、これらの関数を説明する表を示します。関数名は、そのマニュアルページへのリンクになっています。

exacct システムコール

次の表は、拡張アカウンティングサブシステムと対話するシステムコールを示しています。

表 1  拡張アカウンティングのシステムコール
関数
説明
アカウンティングレコードにプロセス固有の追加データをタグ付けする機能を特権付きプロセスに提供します
特権付きプロセスが現在実行中のタスクおよびプロセスのために拡張アカウンティングのバッファーをカーネルに要求できるようにします
指定されたタスクまたはプロセスのリソース使用率データを書き込むようにカーネルに要求します

exacct ファイルの操作

次の表は、exacct ファイルへのアクセスを提供する関数を示しています。

表 2  exacct ファイルの関数
関数
説明
exacct ファイルを開きます。
exacct ファイルを閉じます。
オブジェクトグループをはじめて使用すると、ea_object_t 構造体にデータが読み込まれます。その後グループを使用すると、グループ内のオブジェクト間で繰り返されます。
指定されたオブジェクトを、開いている exacct ファイルに追加します。
基本フィールド (eo_catalog および eo_type) を ea_object_t 構造体に読み込み、レコードの先頭に戻します。
exacct ファイル内の 1 つのオブジェクトをスキップで戻し、基本フィールド (eo_catalog and eo_type) を ea_object_t に読み込みます。
exacct ファイルが作成されたホストの名前を取得します。
exacct ファイルの作成者を調べます。

exacct オブジェクトの操作

次の表は、exacct オブジェクトへのアクセスに使用する関数を示しています。

表 3  exacct オブジェクトの関数
関数
説明
exacct オブジェクトを割り当ててその値を設定します。
exacct オブジェクトのグループの値を設定します。
exacct オブジェクトのマスクをチェックして、そのオブジェクトに固有のカタログタグがあるかどうかを確認します。
指定された exacct オブジェクトに exacct オブジェクトを追加します。
exacct オブジェクトのチェーンを、指定されたグループのメンバー項目として追加します。
指定された exacct オブジェクト内の value フィールドを解放します。
指定された exacct オブジェクトと、関連付けられているすべてのオブジェクト階層を解放します。

拡張アカウンティングメモリー管理

次の表は、拡張アカウンティングメモリー管理に関連する関数を示しています。

表 4  拡張アカウンティングメモリー管理の関数
マニュアルページへのリンク
説明
exacct オブジェクトを、アンパックされた (メモリー内) 表現からパックされた (ファイル内) 表現に変換します。
exacct オブジェクトを、パックされた (ファイル内) 表現からアンパックされた (メモリー内) 表現に変換します。
ea_object_t 構造体内に格納する文字列を複製します。
ea_strdup() によって以前コピーされた文字列を解放します。
要求されたサイズのメモリーブロックを割り当てます。このブロックは libexacct 関数に安全に渡すことができ、あらゆる ea_free 関数によって安全に解放できます。
ea_alloc() によって以前割り当てられたメモリーブロックを解放します。
オブジェクト階層内の可変長データを解放します。
EUP_ALLOC が指定された場合、指定されたオブジェクトの値フィールドを解放します。オブジェクトは解放されません。ea_free_object() は、指定されたオブジェクトと、関連付けられているすべてのオブジェクト階層を解放します。フラグ引数が EUP_ALLOC に設定されている場合、ea_free_object() はオブジェクト階層内の可変長データもすべて解放します。フラグ引数が EUP_NOALLOC に設定されている場合、ea_free_object() は可変長データを解放しません。特に、これらのフラグは ea_unpack_object(3EXACCT) への呼び出しで指定されたフラグに対応するようにしてください。
ea_object_t をコピーします。ソースオブジェクトがチェーンの一部である場合は、現在のオブジェクトだけがコピーされます。ソースオブジェクトがグループの場合は、グループオブジェクトだけがコピーされ、メンバーリストは含まれません。グループオブジェクトの eg_nobjs フィールドと eg_objs フィールドは、それぞれ 0 と NULL に設定されます。グループまたは項目リストを再帰的にコピーするには、ea_copy_tree() を使用します。
ea_copy_object_treeea_object_t を再帰的にコピーします。eo_next リスト内のすべての要素がコピーされます。すべてのグループオブジェクトが再帰的にコピーされます。返されたオブジェクトは、ea_free_object(3EXACCT) で EUP_ALLOC フラグを指定することで完全に解放できます。
ea_get_object_tree()
nobj の最上位オブジェクトをファイルから読み取り、本来は ea_write_object() に渡されるのと同じデータ構造体を返します。グループオブジェクトが検出されると、ea_get_object() はグループのグループヘッダー部分だけを読み取ります。ea_get_object_tree() はグループおよびそのすべてのメンバー項目を読み取り、必要に応じてサブレコードへの再帰呼び出しを行います。返されたオブジェクトデータ構造体は、ea_free_object() で EUP_ALLOC フラグを指定することで完全に解放できます。

拡張アカウンティングのその他の操作

これらの関数はその他の操作に関連しています。

  • ea_error(3EXACCT) – 拡張アカウンティングライブラリ libexacct のいずれかの関数の呼び出しによって記録された最後の失敗のエラー値を返します。

  • ea_match_object_catalog(3EXACCT)obj で指定された exaact オブジェクトに、catmask で指定されたマスクと一致するカタログタグが含まれている場合は TRUE を返します。