PMC_CAPABILITIES(3) | FreeBSD Library Functions Manual | PMC_CAPABILITIES(3) |
名称
pmc_capabilities, pmc_cpuinfo, pmc_ncpu, pmc_npmc, pmc_pmcinfo, pmc_width — 性能のモニタリングカウンタに関する情報を検索するライブラリ
Performance Counters Library (libpmc, -lpmc)書式
#include < pmc.h> int
pmc_capabilities( pmc_id_t pmc, uint32_t *caps);
int
pmc_cpuinfo( const struct pmc_cpuinfo **cpu_info);
int
pmc_ncpu( void);
int
pmc_npmc( int cpu);
int
pmc_pmcinfo( int cpu, struct pmc_pmcinfo **pmc_info);
int
pmc_width( pmc_id_t pmc, uint32_t *width);
解説
これらの関数は、性能モニタリングハードウェアに関する情報を検索します。関数 pmc_capabilities() は、PMC のハードウェアケーパビリティを検索します。引数 pmc は、 pmc_allocate() への前の呼び出しで取得された PMC ハンドルです。関数は、引数 caps を、引数 pmc によって示された PMC によってサポートされたケーパビリティのビットマスクに設定します。 PMC ケーパビリティは、 pmc(3) に説明されています。
関数 pmc_cpuinfo() は、システムの CPU に関する情報を検索します。引数 cpu_info は、システムの CPU に関する情報で内部の構造体を指すように設定されます。呼び出し側は、このポインタ値を解放するべきではありません。この構造体には、次のフィールドがあります:
- pm_cputype
- CPU タイプを指定します。
- pm_ncpu
- システムの CPU の数を指定します。
- pm_npmc
- CPU 毎の PMC 行の数を指定します。
- pm_nclass
- システムの PMC の異なったクラスの数を指定します。
- pm_classes
- システムの PMC のそれぞれのクラスの特性について記述する struct pmc_classinfo 記述子の配列を含んでいます。
関数 pmc_ncpu() は、システムの最大の CPU の数を返す便利な関数です。まばらに番号付けられた CPU をサポートするシステムでは、すべての CPU が物理的に存在するとは限りません。アプリケーションは、存在しない CPU に対処するように準備する必要があります。
関数 pmc_npmc() は、引数 cpu によって指定された CPU で利用可能な PMC の数を返す便利な関数です。
関数 pmc_pmcinfo() は、引数 cpu によって指定された CPU の PMC ハードウェアの現在の状態に関する情報を返します。引数 pmc_info によって指定された位置は、CPU の 1 つの PMC の状態についてそれぞれ記述する struct pmc_info 構造体の配列へのポインタに設定されます。これらの構造体は、次のフィールドを含んでいます:
- pm_name
- PMC のための人間に読み込み可能な名前。
- pm_class
- PMC のための PMC のクラス。
- pm_enabled
- PMC が有効にされているなら、0 以外です。
- pm_rowdisp
- この PMC のための PMC 行の傾向。行の傾向は、 hwpmc(4) に文書化されています。
- pm_ownerpid
- ハードウェアが使用中であるなら、PMC の所有者のプロセス ID です。
- pm_mode
- pmc(3) で説明される PMC モード。
- pm_event
- ハードウェアが使用中であるなら、測定される PMC イベントです。
- pm_flags
- ハードウェアが使用中であるなら、フラグは、PMC と関連しています。
- pm_reloadcount
- サンプリング PMC に関して、再ロードカウントは、PMC と関連しています。
関数 pmc_width() は、PMC に関連しているハードウェアカウンタのビット幅を検索するために使用されます。引数 pmc は、 pmc_allocate() への前の呼び出しで所得された PMC ハンドルです。関数は、引数 width によって指された位置を、 PMC pmc に関連している物理的なカウンタの幅に設定します。
戻り値
関数 pmc_ncpu() と pmc_npmc() は、成功するなら、正の整数を返します。そうでなければ、値 -1 が返され、グローバル変数 errno は、エラーを示す値に設定されます。関数 pmc_capabilities(), pmc_cpuinfo(), pmc_pmcinfo() と pmc_width() は、成功するなら、0 を返します。そうでなければ、値 -1 が返され、グローバル変数 errno は、エラーを示す値に設定されます。
エラー
関数 pmc_capabilities() への呼び出しは、次のエラーで失敗します:- [ EINVAL]
- 関数への引数が、不正でした。
関数 pmc_cpuinfo(), pmc_ncpu() と pmc_npmc() への呼び出しは、次のエラーで失敗します:
- [ ENXIO]
- PMC ライブラリを初期化する pmc_init() への前の呼び出しが、失敗しました。
関数 pmc_pmcinfo() への呼び出しは、次のエラーで失敗します:
- [ EINVAL]
- 引数 cpu が、不正です。
- [ ENXIO]
- 引数 cpu が、無効にされた CPU または、不足している CPU を指定しました。
関数 pmc_width() への呼び出しは、次のエラーで失敗します:
- [ EINVAL]
- 関数への引数が、不正でした。
関連項目
pmc(3), pmc_allocate(3), pmc_get_driver_stats(3), pmc_name_of_capability(3), pmc_name_of_cputype(3), pmc_name_of_class(3), pmc_name_of_event(3), pmc_name_of_mode(3), hwpmc(4)September 22, 2008 | FreeBSD |