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