1 #
2 # Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
3 #
4
5 #
6 # Sun::Solaris::Exacct::Catalog documentation.
7 #
8
9 =head1 NAME
10
11 Sun::Solaris::Exacct::Catalog - exacct catalog tag manipulation
12
13 =head1 SYNOPSIS
14
15 use Sun::Solaris::Exacct::Catalog qw(:ALL);
16 my $ea_cat = Sun::Solaris::Exacct::Catalog->new(
17 &EXT_UINT64 | &EXC_DEFAULT | &EXD_PROC_PID);
18
19 This class provides a wrapper around the 32-bit integer used as a catalog tag.
20 The catalog tag is represented as a Perl object blessed into the
21 C<Sun::Solaris::Exacct::Catalog> class so that methods can be used to manipulate
22 fields in a catalog tag.
23
24 =head2 Constants
25
26 All the C<EXT_*>, C<EXC_*>, and C<EXD_*> macros are provided as constants.
27 Constants passed to the methods below can either be the integer value such as
28 C<EXT_UINT8> or the string representation such as C<"EXT_UINT8">.
29
30 =head2 Functions
31
32 None.
33
34 =head2 Class methods
35
36 B<C<register($cat_pfx, $catalog_id, $export, @idlist)>>
37
38 This method is used to register application-defined C<libexacct(3LIB)>
39 catalogs with the exacct Perl library. See
40 F</usr/include/sys/exacct_catalog.h> for details of the catalog tag format.
41 This method allows symbolic names and strings to be used for manipulating
42 application-defined catalogs. The first two parameters define the catalog
43 prefix and associated numeric catalog ID. If the C<$export> parameter is true,
44 the constants are exported into the caller's package. The final parameter is a
45 list of C<(id, name)> pairs that identify the required constants. The
46 constants created by this method are formed by appending C<$cat_pfx> and
47 C<"_"> to each name in the list, replacing any spaces with underscore
48 characters and converting the resulting string to uppercase characters. The
49 C<$catalog_name> value is also created as a constant by prefixing it with
50 C<EXC_> and converting it to uppercase characters. Its value becomes that of
51 C<$catalog_id> shifted left by 24 bits. For example, the following call:
52
53 Sun::Solaris::Exacct::Catalog->ea_register("MYCAT", 0x01, 1,
54 FIRST => 0x00000001, SECOND => 0x00000010);
55
56 results in the definition of the following constants:
57
58 EXC_MYCAT 0x01 << 24
59 MYCAT_FIRST 0x00000001
60 MYCAT_SECOND 0x00000010
61
62 Only the catalog ID value of 0x01 is available for application use
63 C<(EXC_LOCAL)>. All other values are reserved. While it is possible to use
64 values other than 0x01, they might conflict with future extensions to the
65 libexacct file format.
66
67 If any errors are detected during this method, a string is returned containing
68 the appropriate error message. If the call is sucessful, C<undef> is returned.
69
70 B<C<new($integer)>>
71
72 B<C<new($cat_obj)>>
73
74 B<C<new($type, $catalog, $id)>>
75
76 This method creates and returns a new Catalog object, which is a wrapper
77 around a 32-bit integer catalog tag. Three possible argument lists can be
78 given. The first variant is to pass an integer formed by bitwise-inclusive OR
79 of the appropriate C<EX[TCD]_*> constants. The second variant is to pass an
80 existing Catalog object that will be copied. The final variant is to pass in
81 the type, catalog and ID fields as separate values. Each of these values can
82 be either an appropriate integer constant or the string representation of the
83 constant.
84
85 =head2 Object methods
86
87 B<C<value()>>
88
89 This method allows the value of the catalog tag to be queried. In a scalar
90 context it returns the 32-bit integer representing the tag. In a list context
91 it returns a C<(type, catalog, id)> triplet, where each member of the triplet
92 is a dual-typed scalar.
93
94 B<C<type()>>
95
96 This method returns the type field of the catalog tag as a dual-typed scalar.
97
98 B<C<catalog()>>
99
100 This method returns the catalog field of the catalog tag as a dual-typed
101 scalar.
102
103 B<C<id()>>
104
105 This method returns the id field of the catalog tag as a dual-typed scalar.
106
107 B<C<type_str()>>
108
109 B<C<catalog_str()>>
110
111 B<C<id_str()>>
112
113 These methods return string representations of the appropriate value. These
114 methods can be used for textual output of the various catalog fields. The
115 string representations of the constants are formed by removing the C<EXT_>,
116 C<EXC_>, or C<EXD_> prefix, replacing any underscore characters with spaces,
117 and converting the remaining string to lowercase characters.
118
119 =head2 Exports
120
121 By default nothing is exported from this module. The following tags can be
122 used to selectively import constants and functions defined in this module:
123
124 :CONSTANTS EXT_*, EXC_*, and EXD_*
125
126 :ALL :CONSTANTS
127
128 =head2 ATTRIBUTES
129
130 See C<attributes(5)> for descriptions of the following attributes:
131
132 ___________________________________________________________
133 | ATTRIBUTE TYPE | ATTRIBUTE VALUE |
134 |_____________________________|_____________________________|
135 | Availability | CPAN (http://www.cpan.org) |
136 |_____________________________|_____________________________|
137 | Interface Stability | Evolving |
138 |_____________________________|_____________________________|
139
140 =head1 SEE ALSO
141
142 C<Sun::Solaris::Exacct(3)>, C<Sun::Solaris::Exacct::File(3)>,
143 C<Sun::Solaris::Exacct::Object(3)>, C<Sun::Solaris::Exacct::Object::Group(3)>,
144 C<Sun::Solaris::Exacct::Object::Item(3)>, C<libexacct(3LIB)>, C<attributes(5)>