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

ローカリティグループインタフェースの初期化

アプリケーションは、API を使用して lgroup 階層を参照し、内容を検出するために、lgrp_init() を呼び出す必要があります。lgrp_init() を呼び出すことにより、アプリケーションは lgroup 階層のスナップショットを取得できます。アプリケーション開発者は、特に呼び出したスレッドが利用可能なリソースだけをスナップショットに含めるか、あるいはオペレーティングシステム全般で利用可能なリソースを含めるかを指定できます。lgrp_init() 関数はクッキーを返します。クッキーは、次のタスクで使用されます。

lgrp_init() の使用法

lgrp_init() 関数は、 lgroup インタフェースを初期化し、 lgroup 階層のスナップショットを取得します。

#include <sys/lgrp_user.h>
lgrp_cookie_t lgrp_init(lgrp_view_t view);

引数 view に LGRP_VIEW_CALLER を指定して lgrp_init() 関数を呼び出す場合には、呼び出したスレッドで利用可能なリソースだけがスナップショットとして返されます。 引数 view に LGRP_VIEW_OS を指定して lgrp_init() 関数を呼び出す場合は、オペレーティングシステムで利用可能なリソースがスナップショットとして返されます。 スレッドが lgrp_init() 関数の呼び出しに成功すると、関数は lgroup 階層とやりとりするいかなる関数でも使用するクッキーを返します。

lgroup 階層は、マシン上のすべての CPU とメモリーリソースを含むルート lgroup 階層によって構成されています。 ルート lgroup は、異なる応答時間間隔で定義された複数のローカリティグループを持つことができます。

lgrp_init() 関数が返すエラーは 2 種類あります。無効な引数 view が指定された場合、EINVAL を返します。 lgroup 階層のスナップショットを割り当てる十分なメモリーがない場合には、ENOMEM を返します。

lgrp_fini() の使用法

lgrp_fini() 関数は、取得したクッキーの使用を終了し、対応する lgroup 階層のスナップショットを解放します。

#include <sys/lgrp_user.h>
int lgrp_fini(lgrp_cookie_t cookie);

lgrp_fini() 関数は、前に lgrp_init () を呼び出して作成した lgroup 階層のスナップショットを表すクッキーを引数に使用します。lgrp_fini() 関数は、そのスナップショットに割り当てられたメモリーを解放します。lgrp_fini () を呼び出した後では、クッキーは無効になります。 そのクッキーを使用することはできません。

lgrp_fini() 関数に渡したクッキーが無効な場合、lgrp_fini()EINVAL を返します。