1 LGRP(3PERL)                 Perl Library Functions                 LGRP(3PERL)
   2 
   3 
   4 
   5 NAME
   6        Lgrp - Perl interface to Solaris liblgrp library
   7 
   8 SYNOPSIS
   9        use Sun::Solaris::Lgrp qw(:ALL);
  10 
  11        # initialize lgroup interface
  12        my $cookie = lgrp_init(LGRP_VIEW_OS | LGRP_VIEW_CALLER);
  13        my $l = Sun::Solaris::Lgrp->new(LGRP_VIEW_OS |
  14             LGRP_VIEW_CALLER);
  15 
  16        my $version = lgrp_version(LGRP_VER_CURRENT | LGRP_VER_NONE);
  17        $version = $l->version(LGRP_VER_CURRENT | LGRP_VER_NONE);
  18 
  19        $home = lgrp_home(P_PID, P_MYID);
  20        $home = l->home(P_PID, P_MYID);
  21 
  22        lgrp_affinity_set(P_PID, $pid, $lgrp,
  23              LGRP_AFF_STRONG | LGRP_AFF_WEAK | LGRP_AFF_NONE);
  24        $l->affinity_set(P_PID, $pid, $lgrp,
  25              LGRP_AFF_STRONG | LGRP_AFF_WEAK | LGRP_AFF_NONE);
  26 
  27        my $affinity = lgrp_affinity_get(P_PID, $pid, $lgrp);
  28        $affinity = $l->affinity_get(P_PID, $pid, $lgrp);
  29 
  30        my $nlgrps = lgrp_nlgrps($cookie);
  31        $nlgrps = $l->nlgrps();
  32 
  33        my $root = lgrp_root($cookie);
  34        $root = l->root();
  35 
  36        $latency = lgrp_latency($lgrp1, $lgrp2);
  37        $latency = $l->latency($lgrp1, $lgrp2);
  38 
  39        my @children = lgrp_children($cookie, $lgrp);
  40        @children = l->children($lgrp);
  41 
  42        my @parents = lgrp_parents($cookie, $lgrp);
  43        @parents = l->parents($lgrp);
  44 
  45        my @lgrps = lgrp_lgrps($cookie);
  46        @lgrps = l->lgrps();
  47 
  48        @lgrps = lgrp_lgrps($cookie, $lgrp);
  49        @lgrps = l->lgrps($lgrp);
  50 
  51        my @leaves = lgrp_leaves($cookie);
  52        @leaves = l->leaves();
  53 
  54        my $is_leaf = lgrp_isleaf($cookie, $lgrp);
  55        $is_leaf = $l->is_leaf($lgrp);
  56 
  57        my @cpus = lgrp_cpus($cookie, $lgrp,
  58             LGRP_CONTENT_HIERARCHY | LGRP_CONTENT_DIRECT);
  59        @cpus = l->cpus($lgrp, LGRP_CONTENT_HIERARCHY |
  60             LGRP_CONTENT_DIRECT);
  61 
  62        my $memsize = lgrp_mem_size($cookie, $lgrp,
  63              LGRP_MEM_SZ_INSTALLED | LGRP_MEM_SZ_FREE,
  64              LGRP_CONTENT_HIERARCHY | LGRP_CONTENT_DIRECT);
  65        $memsize = l->mem_size($lgrp,
  66              LGRP_MEM_SZ_INSTALLED | LGRP_MEM_SZ_FREE,
  67              LGRP_CONTENT_HIERARCHY | LGRP_CONTENT_DIRECT);
  68 
  69        my $is_stale = lgrp_cookie_stale($cookie);
  70        $stale = l->stale();
  71 
  72        lgrp_fini($cookie);
  73 
  74        # The following is available for API version greater than 1:
  75        my @lgrps = lgrp_resources($cookie, $lgrp, LGRP_RSRC_CPU);
  76 
  77        # Get latencies from cookie
  78        $latency = lgrp_latency_cookie($cookie, $from, $to);
  79 
  80 
  81 DESCRIPTION
  82        This module provides access to the liblgrp(3LIB) library and to various
  83        constants and functions defined in <sys/lgrp_sys.h>. It provides   both
  84        the procedural and object interface to the library. The procedural
  85        interface requires (in most cases) passing around a transparent cookie.
  86        The object interface hides all the cookie manipulations from the user.
  87 
  88 
  89        Functions returning a scalar value indicate an error by returning
  90        undef.  The caller can examine the $! variable to get the error value.
  91 
  92 
  93        Functions returning a list value return the number of elements in the
  94        list when called in scalar context. In the event of error, the empty
  95        list is returned in the array context and undef is returned in the
  96        scalar context.
  97 
  98    Constants
  99        The constants are exported with :CONSTANTS or :ALL tags:
 100 
 101          use Sun::Solaris::Lgrp ':ALL';
 102 
 103 
 104 
 105        or
 106 
 107          use Sun::Solaris::Lgrp ':CONSTANTS';
 108 
 109 
 110 
 111        The following constants are available for use in Perl programs:
 112          LGRP_NONE
 113          LGRP_VER_CURRENT
 114          LGRP_VER_NONE
 115          LGRP_VIEW_CALLER
 116          LGRP_VIEW_OS
 117          LGRP_AFF_NONE
 118          LGRP_AFF_STRONG
 119          LGRP_AFF_WEAK
 120          LGRP_CONTENT_DIRECT
 121          LGRP_CONTENT_HIERARCHY
 122          LGRP_MEM_SZ_FREE
 123          LGRP_MEM_SZ_FREE
 124          LGRP_RSRC_CPU (1)
 125          LGRP_RSRC_MEM (1)
 126          LGRP_CONTENT_ALL (1)
 127          LGRP_LAT_CPU_TO_MEM (1)
 128          P_PID
 129          P_LWPID
 130          P_MYID
 131 
 132 
 133        (1) Available for versions of the liblgrp(3LIB) API greater than 1.
 134 
 135    Functions
 136        A detailed description of each function follows. Since this module is
 137        intended to provide a Perl interface to the functions in liblgrp(3LIB),
 138        a very short description is given for the corresponding functions in
 139        this module and a reference is given to the complete description in the
 140        liblgrp manual pages. Any differences or additional functionality in
 141        the Perl module are highlighted and fully documented here.
 142 
 143        lgrp_init([LGRP_VIEW_CALLER | LGRP_VIEW_OS])
 144 
 145            This function initializes the lgroup interface and takes a snapshot
 146            of the lgroup hierarchy with the given view. Given the view,
 147            lgrp_init() returns a cookie representing this snapshot of the
 148            lgroup hierarchy. This cookie should be used with other routines in
 149            the lgroup interface needing the lgroup hierarchy. The lgrp_fini()
 150            function should be called with the cookie when it is no longer
 151            needed. Unlike lgrp_init(3LGRP), LGRP_VIEW_OS is assumed as the
 152            default if no view is provided.
 153 
 154            Upon successful completion, lgrp_init() returns a cookie. Otherwise
 155            it returns undef and sets $! to indicate the error.
 156 
 157            See lgrp_init(3LGRP) for more information.
 158 
 159 
 160        lgrp_fini($cookie)
 161 
 162            This function takes a cookie, frees the snapshot of the lgroup
 163            hierarchy created by lgrp_init(), and cleans up anything else set
 164            up by lgrp_init(). After this function is called, the cookie
 165            returned by the lgroup interface might no longer be valid and
 166            should not be used.
 167 
 168            Upon successful completion, 1 is returned. Otherwise, undef is
 169            returned and $! is set to indicate the error.
 170 
 171            See lgrp_fini(3LGRP) for more information.
 172 
 173 
 174        lgrp_view($cookie)
 175 
 176            This function takes a cookie representing the snapshot of the
 177            lgroup hierarchy and returns the snapshot's view of the lgroup
 178            hierarchy.
 179 
 180            If the given view is LGRP_VIEW_CALLER, the snapshot contains only
 181            the resources that are available to the caller (such as those with
 182            respect to processor sets). When the view is LGRP_VIEW_OS, the
 183            snapshot contains what is available to the operating system.
 184 
 185            Upon successful completion, the function returns the view for the
 186            snapshot of the lgroup hierarchy represented by the given cookie.
 187            Otherwise, undef is returned and $! is set to indicate the error.
 188 
 189            See lgrp_view(3LGRP) for more information.
 190 
 191 
 192        lgrp_home($idtype, $id)
 193 
 194            This function returns the home lgroup for the given process or
 195            thread. The $idtype argument should be P_PID to specify a process
 196            and the $id argument should be its process ID. Otherwise, the
 197            $idtype argument should be P_LWPID to specify a thread and the $id
 198            argument should be its LWP ID. The value P_MYID can be used for the
 199            $id argument to specify the current process or thread.
 200 
 201            Upon successful completion, lgrp_home() returns the ID of the home
 202            lgroup of the specified process or thread. Otherwise, undef is
 203            returned and $! is set to indicate the error.
 204 
 205            See lgrp_home(3LGRP) for more information.
 206 
 207 
 208        lgrp_cookie_stale($cookie)
 209 
 210            Upon successful completion, this function returns whether the
 211            cookie is stale.  Otherwise, it returns undef and sets $! to
 212            indicate the error.
 213 
 214            The lgrp_cookie_stale() function will fail with EINVAL if the
 215            cookie is not valid.
 216 
 217            See lgrp_cookie_stale(3LGRP) for more information.
 218 
 219 
 220        lgrp_cpus($cookie, $lgrp, $context)
 221 
 222            This function takes a cookie representing a snapshot of the lgroup
 223            hierarchy and returns the list of CPUs in the lgroup specified by
 224            $lgrp. The $context argument should be set to one of the following
 225            values to specify whether the direct contents or everything in this
 226            lgroup including its children should be returned:
 227 
 228            LGRP_CONTENT_HIERARCHY
 229                                      everything within this hierarchy
 230 
 231 
 232            LGRP_CONTENT_DIRECT
 233                                      directly contained in lgroup
 234 
 235            When called in scalar context, lgrp_cpus() function returns the
 236            number of CPUs contained in the specified lgroup.
 237 
 238            In the event of error, undef is returned in scalar context and $!
 239            is set to indicate the error. In list context, the empty list is
 240            returned and $! is set.
 241 
 242            See lgrp_cpus(3LGRP) for more information.
 243 
 244 
 245        lgrp_children($cookie, $lgrp)
 246 
 247            This function takes a cookie representing a snapshot of the lgroup
 248            hierarchy and returns the list of lgroups that are children of the
 249            specified lgroup.
 250 
 251            When called in scalar context, lgrp_children() returns the number
 252            of children lgroups for the specified lgroup.
 253 
 254            In the event of error, undef or empty list is returned and $! is
 255            set to indicate the error.
 256 
 257            See lgrp_children(3LGRP) for more information.
 258 
 259 
 260        lgrp_parents($cookie, $lgrp)
 261 
 262            This function takes a cookie representing a snapshot of the lgroup
 263            hierarchy and returns the list of parents of the specified lgroup.
 264 
 265            When called in scalar context, lgrp_parents() returns the number of
 266            parent lgroups for the specified lgroup.
 267 
 268            In the event of error, undef or an empty list is returned and $! is
 269            set to indicate the error.
 270 
 271            See lgrp_parents(3LGRP) for more information.
 272 
 273 
 274        lgrp_nlgrps($cookie)
 275 
 276            This function takes a cookie representing a snapshot of the lgroup
 277            hierarchy.  It returns the number of lgroups in the hierarchy,
 278            where the number is always at least one.
 279 
 280            In the event of error, undef is returned and $! is set to EINVAL,
 281            indicating that the cookie is not valid.
 282 
 283            See lgrp_nlgrps(3LGRP) for more information.
 284 
 285 
 286        lgrp_root($cookie)
 287 
 288            This function returns the root lgroup ID.
 289 
 290            In the event of error, undef is returned and $! is set to EINVAL,
 291            indicatng that the cookie is not valid.
 292 
 293            See lgrp_root(3LGRP) for more information.
 294 
 295 
 296        lgrp_mem_size($cookie, $lgrp, $type, $content)
 297 
 298            This function takes a cookie representing a snapshot of the lgroup
 299            hierarchy.  The function returns the memory size of the given
 300            lgroup in bytes. The $type argument should be set to one of the
 301            following values:
 302 
 303            LGRP_MEM_SZ_FREE
 304                                     free memory
 305 
 306 
 307            LGRP_MEM_SZ_INSTALLED
 308                                     installed memory
 309 
 310            The $content argument should be set to one of the following values
 311            to specify whether the direct contents or everything in this lgroup
 312            including its children should be returned:
 313 
 314            LGRP_CONTENT_HIERARCHY
 315                                      Return everything within this hierarchy.
 316 
 317 
 318            LGRP_CONTENT_DIRECT
 319                                      Return that which is directly contained
 320                                      in this lgroup.
 321 
 322            The total sizes include all the memory in the lgroup including its
 323            children, while the others reflect only the memory contained
 324            directly in the given lgroup.
 325 
 326            Upon successful completion, the size in bytes is returned.
 327            Otherwise, undef is returned and $! is set to indicate the error.
 328 
 329            See lgrp_mem_size(3LGRP) for more information.
 330 
 331 
 332        lgrp_version([$version])
 333 
 334            This function takes an interface version number, $version, as an
 335            argument and returns an lgroup interface version. The $version
 336            argument should be the value of LGRP_VER_CURRENT or LGRP_VER_NONE
 337            to find out the current lgroup interface version on the running
 338            system.
 339 
 340            If $version is still supported by the implementation, then
 341            lgrp_version() returns the requested version. If LGRP_VER_NONE is
 342            returned, the implementation cannot support the requested version.
 343 
 344            If $version is LGRP_VER_NONE, lgrp_version() returns the current
 345            version of the library.
 346 
 347            The following example tests whether the version of the interface
 348            used by the caller is supported:
 349 
 350              lgrp_version(LGRP_VER_CURRENT) == LGRP_VER_CURRENT or
 351                  die("Built with unsupported lgroup interface");
 352 
 353            See lgrp_version(3LGRP) for more information.
 354 
 355 
 356        lgrp_affinity_set($idtype, $id, $lgrp, $affinity)
 357 
 358            This function sets the affinity that the LWP or set of LWPs
 359            specified by $idtype and $id have for the given lgroup. The lgroup
 360            affinity can be set to LGRP_AFF_STRONG, LGRP_AFF_WEAK, or
 361            LGRP_AFF_NONE.
 362 
 363            If the $idtype is P_PID, the affinity is retrieved for one of the
 364            LWPs in the process or set for all the LWPs of the process with
 365            process ID (PID) $id. The affinity is retrieved or set for the LWP
 366            of the current process with LWP ID $id if $idtype is P_LWPID. If
 367            $id is P_MYID, then the current LWP or process is specified.
 368 
 369            There are different levels of affinity that can be specified by a
 370            thread for a particular lgroup. The levels of affinity are the
 371            following from strongest to weakest:
 372 
 373            LGRP_AFF_STRONG
 374                               strong affinity
 375 
 376 
 377            LGRP_AFF_WEAK
 378                               weak affinity
 379 
 380 
 381            LGRP_AFF_NONE
 382                               no affinity
 383 
 384            Upon successful completion, lgrp_affinity_set() returns 1.
 385            Otherwise, it returns undef and set $! to indicate the error.
 386 
 387            See lgrp_affinity_set(3LGRP) for more information.
 388 
 389 
 390        lgrp_affinity_get($idtype, $id, $lgrp)
 391 
 392            This function returns the affinity that the LWP has to a given
 393            lgroup.
 394 
 395            See lgrp_affinity_get(3LGRP) for more information.
 396 
 397 
 398        lgrp_latency_cookie($cookie, $from, $to,
 399        [$between=LGRP_LAT_CPU_TO_MEM])
 400 
 401            This function takes a cookie representing a snapshot of the lgroup
 402            hierarchy and returns the latency value between a hardware resource
 403            in the $from lgroup to a hardware resource in the $to lgroup. If
 404            $from is the same lgroup as $to, the latency value within that
 405            lgroup is returned.
 406 
 407            The optional $between argument should be set to LGRP_LAT_CPU_TO_MEM
 408            to specify between which hardware resources the latency should be
 409            measured. The only valid value is LGRP_LAT_CPU_TO_MEM, which
 410            represents latency from CPU to memory.
 411 
 412            Upon successful completion, lgrp_latency_cookie() return 1.
 413            Otherwise, it returns undef and set $! to indicate the error. For
 414            LGRP API version 1, the lgrp_latency_cookie() is an alias for
 415            lgrp_latency.()
 416 
 417            See lgrp_latency_cookie(3LGRP) for more information.
 418 
 419 
 420        lgrp_latency($from, $to)
 421 
 422            This function is similar to the lgrp_latency_cookie() function, but
 423            returns the latency between the given lgroups at the given instant
 424            in time.  Since lgroups can be freed and reallocated, this function
 425            might not be able to provide a consistent answer across calls. For
 426            that reason, lgrp_latency_cookie() should be used in its place.
 427 
 428            See lgrp_latency(3LGRP) for more information.
 429 
 430 
 431        lgrp_resources($cookie, $lgrp, $type)
 432 
 433            This function returns the list of lgroups directly containing
 434            resources of the specified type. The resources are represented by a
 435            set of lgroups in which each lgroup directly contains CPU and/or
 436            memory resources.
 437 
 438            The type can be specified as:
 439 
 440            LGRP_RSRC_CPU
 441                             CPU resources
 442 
 443 
 444            LGRP_RSRC_MEM
 445                             memory resources
 446 
 447            In the event of error, undef or an empty list is returned and $! is
 448            set to indicate the error.
 449 
 450            This function is available only for API version 2 and returns undef
 451            or an empty list for API version 1 and sets $! to EINVAL.
 452 
 453            See lgrp_resources(3LGRP) for more information.
 454 
 455 
 456        lgrp_lgrps($cookie, [$lgrp])
 457 
 458            This function returns a list of all lgroups in a hierarchy starting
 459            from $lgrp. If $lgrp is not specified, uses the value of
 460            lgrp_root($cookie).  This function returns the empty list on
 461            failure.
 462 
 463            When called in scalar context, this function returns the total
 464            number of lgroups in the system.
 465 
 466 
 467        lgrp_leaves($cookie, [$lgrp])
 468 
 469            This function returns a list of all leaf lgroups in a hierarchy
 470            starting from $lgrp. If $lgrp is not specified, this function uses
 471            the value of lgrp_root($cookie). It returns undef or an empty list
 472            on failure.
 473 
 474            When called in scalar context, this function returns the total
 475            number of leaf lgroups in the system.
 476 
 477 
 478        lgrp_isleaf($cookie, $lgrp)
 479 
 480            This function returns True if $lgrp is a leaf (has no children).
 481            Otherwise it returns False.
 482 
 483 
 484    Object methods
 485        new([$view])
 486 
 487            This method creates a new Sun::Solaris::Lgrp object. An optional
 488            argument is passed to the lgrp_init() function. By default this
 489            method uses LGRP_VIEW_OS.
 490 
 491 
 492        cookie()
 493 
 494            This method returns a transparent cookie that can be passed to
 495            functions accepting the cookie.
 496 
 497 
 498        version([$version])
 499 
 500            Without the argument, this method returns the current version of
 501            the liblgrp(3LIB) library. This method is a wrapper for
 502            lgrp_version() with LGRP_VER_NONE as the default version argument.
 503 
 504 
 505        stale()
 506 
 507            This method returns T if the lgroup information in the object is
 508            stale and F otherwise. It is a wrapper for lgrp_cookie_stale().
 509 
 510 
 511        view()
 512 
 513            This method returns the snapshot's view of the lgroup hierarchy. It
 514            is a wrapper for lgrp_view().
 515 
 516 
 517        root()
 518 
 519            This method returns the root lgroup. It is a wrapper for
 520            lgrp_root().
 521 
 522 
 523        children($lgrp)
 524 
 525            This method returns the list of lgroups that are children of the
 526            specified lgroup. It is a wrapper for lgrp_children().
 527 
 528 
 529        parents($lgrp)
 530 
 531            This method returns the list of lgroups that are parents of the
 532            specified lgroup. It is a wrapper for lgrp_parents().
 533 
 534 
 535        nlgrps()
 536 
 537            This method returns the number of lgroups in the hierarchy. It is a
 538            wrapper for lgrp_nlgrps().
 539 
 540 
 541        mem_size($lgrp, $type, $content)
 542 
 543            This method returns the memory size of the given lgroup in bytes.
 544            It is a wrapper for lgrp_mem_size().
 545 
 546 
 547        cpus($lgrp, $context)
 548 
 549            This method returns the list of CPUs in the lgroup specified by
 550            $lgrp. It is a wrapper for lgrp_cpus().
 551 
 552 
 553        resources($lgrp, $type)
 554 
 555            This method returns the list of lgroups directly containing
 556            resources of the specified type. It is a wrapper for
 557            lgrp_resources().
 558 
 559 
 560        home($idtype, $id)
 561 
 562            This method returns the home lgroup for the given process or
 563            thread. It is a wrapper for lgrp_home().
 564 
 565 
 566        affinity_get($idtype, $id, $lgrp)
 567 
 568            This method returns the affinity that the LWP has to a given lgrp.
 569            It is a wrapper for lgrp_affinity_get().
 570 
 571 
 572        affinity_set($idtype, $id, $lgrp, $affinity)
 573 
 574            This method sets the affinity that the LWP or set of LWPs specified
 575            by $idtype and $id have for the given lgroup. It is a wrapper for
 576            lgrp_affinity_set.
 577 
 578 
 579        lgrps([$lgrp])
 580 
 581            This method returns list of all lgroups in a hierarchy starting
 582            from $lgrp or the lgrp_root() if $lgrp is not specified. It is a
 583            wrapper for lgrp_lgrps().
 584 
 585 
 586        leaves([$lgrp])
 587 
 588            This method returns a list of all leaf lgroups in a hierarchy
 589            starting from $lgrp.  If $lgrp is not specified, this method uses
 590            the value of lgrp_root(). It is a wrapper for lgrp_leaves().
 591 
 592 
 593        isleaf($lgrp)
 594 
 595            This method returns True if $lgrp is leaf (has no children) and
 596            False otherwise. It is a wrapper for lgrp_isleaf().
 597 
 598 
 599        latency($from, $to)
 600 
 601            This method returns the latency value between a hardware resource
 602            in the $from lgroup to a hardware resource in the $to lgroup. It
 603            uses lgrp_latency() for version 1 of liblgrp and
 604            lgrp_latency_cookie() for newer versions.
 605 
 606 
 607    Exports
 608        By default nothing is exported from this module. The following tags can
 609        be used to selectively import constants and functions defined in this
 610        module:
 611 
 612        :LGRP_CONSTANTS
 613                           LGRP_AFF_NONE, LGRP_AFF_STRONG, LGRP_AFF_WEAK,
 614                           LGRP_CONTENT_DIRECT, LGRP_CONTENT_HIERARCHY,
 615                           LGRP_MEM_SZ_FREE, LGRP_MEM_SZ_INSTALLED,
 616                           LGRP_VER_CURRENT, LGRP_VER_NONE, LGRP_VIEW_CALLER,
 617                           LGRP_VIEW_OS, LGRP_NONE, LGRP_RSRC_CPU,
 618                           LGRP_RSRC_MEM, LGRP_CONTENT_ALL, LGRP_LAT_CPU_TO_MEM
 619 
 620 
 621        :PROC_CONSTANTS
 622                           P_PID, P_LWPID, P_MYID
 623 
 624 
 625        :CONSTANTS
 626                           :LGRP_CONSTANTS, :PROC_CONSTANTS
 627 
 628 
 629        :FUNCTIONS
 630                           lgrp_affinity_get(), lgrp_affinity_set(),
 631                           lgrp_children(), lgrp_cookie_stale(), lgrp_cpus(),
 632                           lgrp_fini(), lgrp_home(), lgrp_init(),
 633                           lgrp_latency(), lgrp_latency_cookie(),
 634                           lgrp_mem_size(), lgrp_nlgrps(), lgrp_parents(),
 635                           lgrp_root(), lgrp_version(), lgrp_view(),
 636                           lgrp_resources(), lgrp_lgrps(), lgrp_leaves(),
 637                           lgrp_isleaf()
 638 
 639 
 640        :ALL
 641                           :CONSTANTS, :FUNCTIONS
 642 
 643 
 644    Error values
 645        The functions in this module return undef or an empty list when an
 646        underlying library function fails. The $! is set to provide more
 647        information values for the error. The following error codes are
 648        possible:
 649 
 650        EINVAL
 651                  The value supplied is not valid.
 652 
 653 
 654        ENOMEM
 655                  There was not enough system memory to complete an operation.
 656 
 657 
 658        EPERM
 659                  The effective user of the calling process does not have
 660                  appropriate privileges, and its real or effective user ID
 661                  does not match the real or effective user ID of one of the
 662                  threads.
 663 
 664 
 665        ESRCH
 666                  The specified process or thread was not found.
 667 
 668 
 669    Difference in the API versions
 670        The liblgrp(3LIB) library is versioned. The exact version that was used
 671        to compile a module is available through the lgrp_version() function.
 672 
 673 
 674        Version 2 of the lgrp_user API introduced the following constants and
 675        functions not present in version 1:
 676          LGRP_RSRC_CPU constant
 677          LGRP_RSRC_MEM constant
 678          LGRP_CONTENT_ALL constant
 679          LGRP_LAT_CPU_TO_MEM constant
 680          lgrp_resources() function
 681          lgrp_latency_cookie() function
 682 
 683 
 684        The LGRP_RSRC_CPU and LGRP_RSRC_MEM constants are not defined for
 685        version 1. The lgrp_resources() function is defined for version 1 but
 686        always returns an empty list. The lgrp_latency_cookie() function is an
 687        alias for lgrp_latency() for version 1.
 688 
 689 ATTRIBUTES
 690        See attributes(5) for descriptions of the following attributes:
 691 
 692 
 693 
 694 
 695        +--------------------+-----------------+
 696        |  ATTRIBUTE TYPE    | ATTRIBUTE VALUE |
 697        +--------------------+-----------------+
 698        |Interface Stability | Unstable        |
 699        +--------------------+-----------------+
 700 
 701 SEE ALSO
 702        lgrp_affinity_get(3LGRP), lgrp_affinity_set(3LGRP),
 703        lgrp_children(3LGRP), lgrp_cookie_stale(3LGRP), lgrp_cpus(3LGRP),
 704        lgrp_fini(3LGRP), lgrp_home(3LGRP), lgrp_init(3LGRP),
 705        lgrp_latency(3LGRP), lgrp_latency_cookie(3LGRP), lgrp_mem_size(3LGRP),
 706        lgrp_nlgrps(3LGRP), lgrp_parents(3LGRP), lgrp_resources(3LGRP),
 707        lgrp_root(3LGRP), lgrp_version(3LGRP), lgrp_view(3LGRP), liblgrp(3LIB),
 708        attributes(5)
 709 
 710 
 711 
 712                                  April 9, 2016                     LGRP(3PERL)