lgrp_init

Synopsis

Description

The lgrp_init() function initializes the lgroup interface and takes a snapshot of
the lgroup hierarchy with the given view. If the given view
is LGRP_VIEW_CALLER, the snapshot contains only the resources that are available to the
caller (for example, with respect to processor sets). When the view is
LGRP_VIEW_OS, the snapshot contains what is available to the operating system.

Given the view, lgrp_init() returns a cookie representing this snapshot of the
lgroup hierarchy. This cookie should be used with other routines in the
lgroup interface needing the lgroup hierarchy. The lgrp_fini(3LGRP) function should be called
with the cookie when it is no longer needed.

The lgroup hiearchy represents the latency topology of the machine. The
hierarchy is simplified to be a tree and can be used to
find the nearest resources.

The lgroup hiearchy consists of a root lgroup, which is the maximum
bounding locality group of the system, contains all the CPU and
memory resources of the machine, and may contain other locality groups
that contain CPUs and memory within a smaller locality. The leaf lgroups
contain resources within the smallest latency.

The resources of a given lgroup come directly from the lgroup itself
or from leaf lgroups contained within the lgroup. Leaf lgroups directly contain
their own resources and do not encapsulate any other lgroups.

The lgroup hierarchy can be used to find the nearest resources. From
a given lgroup, the closest resources can be found in the lgroup
itself. After that, the next nearest resources can be found in its
parent lgroup, and so on until the root lgroup is reached where
all the resources of the machine are located.

Return Values

Upon successful completion, lgrp_init() returns a cookie. Otherwise it returns LGRP_COOKIE_NONE and
sets errno to indicate the error.

Errors

The lgrp_init() function will fail if:

EINVAL

The view is not valid.

ENOMEM

There was not enough memory to allocate the snapshot of the lgroup hierarchy.