この節で説明する API を使用することにより、呼び出しスレッドから lgroup 階層を参照できます。 lgroup 階層は、Directed Acyclic Graph (DAG) です。ツリー構造と似ていますが、ノードは複数の親を持つことができます。ルート lgroup は、マシン全体を表しており、システム全体で最も高い応答時間値を持っています。 子 lgroup はルート lgroup にあるハードウェアのサブセットで構成されており、低い応答時間でそれぞれくくられています。ルートに近いローカリティグループほど、多くのリソースと高い応答時間が与えられています。葉に近いローカリティグループは、リソースも少なく、応答時間も低くなります。
lgrp_cookie_stale() 関数は、指定のクッキーで表された lgroup 階層のスナップショットが最新のものであるかどうかを判定します。
#include <sys/lgrp_user.h> int lgrp_cookie_stale(lgrp_cookie_t cookie);
lgrp_init() 関数が返すクッキーは、そのスナップショットを取得した view 引数の種類によって、さまざまな理由により無効になる場合があります。view 引数に LGRP_VIEW_OS を指定して呼び出した lgrp_init() 関数が返すクッキーでは、動的再構成や CPU のオンライン状態の変化などが原因で lgroup 階層に変更があったときに、無効になる場合があります。view 引数に LGRP_VIEW_CALLER を指定した lgrp_init() 関数が返すクッキーでは、呼び出しスレッドのプロセッサセットの変更または lgroup 階層の変化が原因で、無効になる場合があります。無効になったクッキーは、そのクッキーで lgrp_fini() 関数を呼び出し、次に新規クッキーを生成する lgrp_init() 関数を呼び出すことによって新しくなります。
無効なクッキーを指定した場合、lgrp_cookie_stale() 関数は EINVAL を返します。
lgrp_view() 関数は、指定した lgroup 階層のスナップショットがどのビューで取得されたか判定します。
#include <sys/lgrp_user.h> lgrp_view_t lgrp_view(lgrp_cookie_t cookie);
lgrp_view() 関数は、lgroup 階層のスナップショットを表すクッキーを引数に使用し、そのスナップショットの view を返します。LGRP_VIEW_CALLER を view に指定して取得したスナップショットには、呼び出しスレッドで使用可能なリソースのみが含まれます。LGRP_VIEW_OS で取得したスナップショットには、オペレーティングシステムで使用可能なすべてのリソースが含まれます。
無効なクッキーを指定した場合、lgrp_view() 関数は EINVAL を返します。
lgrp_nlgrps() 関数は、システムに存在するローカリティグループの数を返します。ローカリティグループが 1 つしかないシステムでは、メモリー配置の最適化による効果はありません。
#include <sys/lgrp_user.h> int lgrp_nlgrps(lgrp_cookie_t cookie);
lgrp_nlgrps() 関数は、lgroup 階層のスナップショットを表すクッキーを引数に使用し、階層で使用可能な lgroup の数を返します。
無効なクッキーを指定した場合、lgrp_nlgrps() 関数は EINVAL を返します。
lgrp_root() 関数は、ルート lgroup ID を返します。
#include <sys/lgrp_user.h> lgrp_id_t lgrp_root(lgrp_cookie_t cookie);
lgrp_root() 関数は、lgroup 階層のスナップショットを表すクッキーを引数に使用し、ルート lgroup ID を返します。
lgrp_parents() 関数は、lgroup 階層のスナップショットを表すクッキーを引数に使用し、指定した lgroup の親 lgroups の数を返します。
#include <sys/lgrp_user.h> int lgrp_parents(lgrp_cookie_t cookie, lgrp_id_t child, lgrp_id_t *lgrp_array, uint_t lgrp_array_size);
lgrp_array() が NULL ではなく、lgrp_array_size の値がゼロでないとき、 lgrp_parents() 関数は、配列の要素数の上限まで、またはすべての親 lgroup ID を配列に入れて返します。ルート lgroup には親はありません。ルート lgroup に対して lgrp_parents() 関数が呼び出された場合は、lgrp_array には何も返されません。
無効なクッキーを指定した場合、lgrp_parents() 関数は EINVAL を返します。指定した lgroup ID が存在しない場合、lgrp_parents() 関数は ESRCH を返します。
lgrp_children() 関数は、呼び出しスレッドの lgroup 階層のスナップショットを表すクッキーを引数に使用し、指定した lgroup の子 lgroups の数を返します。
#include <sys/lgrp_user.h> int lgrp_children(lgrp_cookie_t cookie, lgrp_id_t parent, lgrp_id_t *lgrp_array, uint_t lgrp_array_size);
lgrp_array() が NULL ではなく、lgrp_array_size の値がゼロでないとき、 lgrp_children() 関数は、配列の要素数の上限まで、またはすべての子 lgroup ID を配列に入れて返します。
無効なクッキーを指定した場合、lgrp_children() 関数は EINVAL を返します。指定した lgroup ID が存在しない場合は、lgrp_children() 関数は ESRCH を返します。