1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
|
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright 2009 Sun Microsystems, Inc. All rights reserved.
Use is subject to license terms.
CDDL HEADER START
The contents of this file are subject to the terms of the
Common Development and Distribution License (the "License").
You may not use this file except in compliance with the License.
You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
or http://www.opensolaris.org/os/licensing.
See the License for the specific language governing permissions
and limitations under the License.
When distributing Covered Code, include this CDDL HEADER in each
file and include the License file at usr/src/OPENSOLARIS.LICENSE.
If applicable, add the following below this CDDL HEADER, with the
fields enclosed by brackets "[]" replaced with your own identifying
information: Portions Copyright [yyyy] [name of copyright owner]
CDDL HEADER END
-->
<!--
Topology description DTD
Most attributes are string values (or an individual string from a
restricted set), but attributes with a specific type requirement are
noted in the comment describing the element.
-->
<!--
XInclude support
Topologies may be composed via the xi:include tag.
libtopo interfaces enforce that all composed topologies be of the
same scheme.
-->
<!ELEMENT xi:include
(xi:fallback) >
<!ATTLIST xi:include
href CDATA #REQUIRED
parse (xml|text) "xml"
encoding CDATA #IMPLIED
xmlns:xi CDATA #FIXED "http://www.w3.org/2001/XInclude"
>
<!ELEMENT xi:fallback
ANY
>
<!ATTLIST xi:fallback
xmlns:xi CDATA #FIXED "http://www.w3.org/2001/XInclude"
>
<!-- Properties and property groups -->
<!--
propval
This element is for a singly valued property within a property group.
Its attributes are
name The name of this property.
type The data type for this property.
value The value for this property. Must match type
restriction of type attribute.
This is optional for array types
-->
<!ELEMENT propval (propitem*) >
<!ATTLIST propval
name CDATA #REQUIRED
type ( int32 | uint32 | int64 | uint64 |
string | fmri | int32_array | uint32_array |
int64_array | uint64_array | string_array |
fmri_array ) #REQUIRED
value CDATA "" >
<!--
propitem
This element is an optional child element of propval and is used to
specify the values for array elements
Its attributes are
value The value for this property. Must match type
restriction of type attribute.
-->
<!ELEMENT propitem EMPTY >
<!ATTLIST propitem
value CDATA #REQUIRED >
<!--
propgroup
This element is for a set of related properties on a topo node
It contains an optional stability element, as well as
zero or more property-containing elements.
Its attributes are
name The name of this property group.
name-stability Stability level of the property group name
data-stability Stability level of the property names and
content
version Version of the propery group definition
-->
<!ELEMENT propgroup
( propval*, propmethod* ) >
<!ATTLIST propgroup
name CDATA #REQUIRED
version CDATA #REQUIRED
name-stability ( Private | Standard | Stable | Evolving | Unstable |
External | Obsolete ) #REQUIRED
data-stability ( Private | Standard | Stable | Evolving | Unstable |
External | Obsolete ) #REQUIRED >
<!--
set
This element is for associating ranges, nodes or property groups
according to a set type.
Its attributes are
type The type of this property group set. 'product' is the
only set type currently supported.
setlist The list of set types.
-->
<!ELEMENT set
( range*, fac-enum?, propgroup*, facility*, set* ) >
<!ATTLIST set
type ( product ) #REQUIRED
setlist CDATA #REQUIRED >
<!--
propmap
This element is for specifying an additional topo map file for
properties assigned to a given range.
Its attributes are
name Name of map file
-->
<!ELEMENT propmap EMPTY >
<!ATTLIST propmap
name CDATA #REQUIRED >
<!-- Methods -->
<!--
argval
A propmethod argument. It has two attributes:
name The name of the argument.
type The data type of the argument.
value The value for this argument. Must match type
restriction of type attribute.
This attribute is optional for array types
-->
<!ELEMENT argval (argitem*) >
<!ATTLIST argval
name CDATA #REQUIRED
type ( int32 | uint32 | int64 | uint64 |
string | fmri | int32_array | uint32_array |
int64_array | uint64_array | string_array |
fmri_array ) #REQUIRED
value CDATA "">
<!--
argitem
This element is an optional child element of argval and is used to
specify the values for array elements
Its attributes are
value The value for this property. Must match type
restriction of type attribute.
-->
<!ELEMENT argitem EMPTY >
<!ATTLIST argitem
value CDATA #REQUIRED >
<!--
propmethod
This element is for properties that can only be determined dynamically
from a plugin.
Its attributes are
name Name of the method
version Version of the method API
propname Name of the property to create
proptype Type of the property to create
mutable optional: default is false (0)
nonvolatile optional: default is false (0)
-->
<!ELEMENT propmethod
( argval* ) >
<!ATTLIST propmethod
name CDATA #REQUIRED
version CDATA #REQUIRED
propname CDATA #REQUIRED
proptype CDATA #REQUIRED
mutable (0|1) "0"
nonvolatile (0|1) "0" >
<!--
enum-method
This element describes the enumeration method used to
populate a composition of topo nodes for a given range of topology
nodes.
Its attributes are
name Name of the module exporting an enumeration method.
version Version of the libtopo API
-->
<!ELEMENT enum-method EMPTY >
<!ATTLIST enum-method
name CDATA #REQUIRED
version CDATA #REQUIRED >
<!--
node
This element identifies a topology node instance.
Its attributes are
instance The instance number of the node
-->
<!ELEMENT node
( fac-enum?, facility*, propgroup*, set*, enum-method*, dependents? ) >
<!ATTLIST node
instance CDATA #REQUIRED >
<!--
dependents
Ranges may have a number of "dependent" ranges, linked to
the original range hierarchically as children or as a list, siblings.
Its attribute is:
grouping children | siblings
-->
<!ELEMENT dependents
(( range | xi:include )*, set*) >
<!ATTLIST dependents
grouping ( children | siblings ) #REQUIRED >
<!--
range
This element identifies a range of possible topology nodes.
Its attributes are
name The common name of all the possible topo nodes
min The smallest allowed instance number for an
actual topo node.
max The largest allowed instance number for an
actual topo node.
-->
<!ELEMENT range
( enum-method?, propmap?, fac-enum?, facility*, node*, propgroup*, set*,
dependents* ) >
<!ATTLIST range
name CDATA #REQUIRED
min CDATA #REQUIRED
max CDATA #REQUIRED >
<!--
facility
This element identifies a single facility node instance
Its attributes are
name The name of the facility node
type The type of facility node: either "sensor" or "indicator"
provider The name of the facility provider module that
implements the methods for this node or range
-->
<!ELEMENT facility
( propgroup* ) >
<!ATTLIST facility
name CDATA #REQUIRED
type (sensor | indicator) #REQUIRED
provider CDATA #REQUIRED >
<!--
fac-enum
This element identifies a facility provider module that
implements a facility enumeration method for the enclosing
node or range.
Its attributes are
provider The name of the facility provider module that
implements the facility enumerator method for
the parent node or range
-->
<!ELEMENT fac-enum EMPTY >
<!ATTLIST fac-enum provider CDATA #REQUIRED >
<!--
topology
This is the root-level for the scheme-specific topology
Its attributes are:
name topology name
scheme ( hc | dev )
-->
<!ELEMENT topology
((range* | xi:include*), set*)>
<!ATTLIST topology
name CDATA #REQUIRED
scheme (hc | dev) #REQUIRED >
|