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

近傍性グループインタフェースの初期化

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

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 階層とやりとりするすべての関数で使用される cookie を返します。スレッドに cookie が必要でなくなったときは、cookie を引数に指定して lgrp_fini() 関数を呼び出します。

lgroup 階層は、マシン上のすべての CPU とメモリー資源を含むルート lgroup 階層によって構成されています。ルート lgroup は、応答時間がより短く制限された複数の近傍性グループを持つことができます。

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

lgrp_fini() の使用法

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

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

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

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