プログラミングインタフェース

バインド

この節のインタフェースは、セット内の要求を物理ハードウェアにバインドして、カウンタを開始位置に設定します。

int cpc_bind_curlwp(cpc_t *cpc, cpc_set_t *set, uint_t flags);
int cpc_bind_pctx(cpc_t *cpc, pctx_t *pctx, id_t id, cpc_set_t *set,
          uint_t flags);
int cpc_bind_cpu(cpc_t *cpc, processorid_t id, cpc_set_t *set, 
          uint_t flags);
int cpc_unbind(cpc_t *cpc, cpc_set_t *set);

cpc_bind_curlwp() 関数は、セットを呼び出し元の LWP にバインドします。セットのカウンタはこの LWP に仮想化され、呼び出し元の LWP の実行中に CPU で発生したイベントをカウントします。cpc_bind_curlwp() ルーチンで有効なフラグは CPC_BIND_LWP_INHERIT だけです。

cpc_bind_pctx() 関数は、セットを libpctx(3LIB) を使って得られたプロセス内の LWP にバインドします。この関数に有効なフラグはありません。

cpc_bind_cpu() 関数は、セットを id パラメータで指定されたプロセッサにバインドします。セットを CPU にバインドすると、システム上にある既存の性能カウンタのコンテキストが無効になります。この関数に有効なフラグはありません。

cpc_unbind() 関数は性能カウンタを停止して、バインドされたセットに関連付けられたハードウェアを解放します。セットが CPU にバインドされている場合、cpc_unbind() 関数は、CPU から LWP をバインド解除して、CPC 仮想デバイスを解放します。