<!--
  Copyright © 2009      CNRS
  Copyright © 2009-2021 Inria.  All rights reserved.
  Copyright © 2009-2011 Université Bordeaux.
  See COPYING in top-level directory.

  This is the DTD for hwloc v2.x XMLs.
 -->

<!ELEMENT topology (object+,distances2*,distances2hetero*,support*,memattr*,cpukind*)>
<!ATTLIST topology version CDATA "">

<!ELEMENT object (page_type*,info*,userdata*,object*)>
<!ATTLIST object type (Machine | Misc | Group | NUMANode | MemCache | Package | Die | L1Cache | L2Cache | L3Cache | L4Cache | L5Cache | L1iCache | L2iCache | L3iCache | Core | PU | Bridge | PCIDev | OSDev) #REQUIRED>
<!ATTLIST object subtype CDATA "" >
<!ATTLIST object os_index CDATA "-1" >
<!ATTLIST object gp_index CDATA "-1" >
<!ATTLIST object name CDATA "" >
<!ATTLIST object local_memory CDATA "0" >
<!ATTLIST object cache_size CDATA "0" >
<!ATTLIST object cache_linesize CDATA "0" >
<!ATTLIST object cache_associativity CDATA "0" >
<!ATTLIST object cache_type CDATA "0" >
<!ATTLIST object cpuset CDATA "0" >
<!ATTLIST object complete_cpuset CDATA "" >
<!ATTLIST object allowed_cpuset CDATA "" >
<!ATTLIST object nodeset CDATA "" >
<!ATTLIST object complete_nodeset CDATA "" >
<!ATTLIST object allowed_nodeset CDATA "" >
<!ATTLIST object depth CDATA "-1" >
<!ATTLIST object kind CDATA "0" >
<!ATTLIST object subkind CDATA "0" >
<!ATTLIST object dont_merge CDATA "0" >
<!ATTLIST object bridge_type CDATA "" >
<!ATTLIST object bridge_pci CDATA "" >
<!ATTLIST object pci_busid CDATA "" >
<!ATTLIST object pci_type CDATA "" >
<!ATTLIST object pci_link_speed CDATA "0." >
<!ATTLIST object osdev_type CDATA "" >

<!ELEMENT page_type EMPTY>
<!ATTLIST page_type size CDATA #REQUIRED>
<!ATTLIST page_type count CDATA #REQUIRED>

<!ELEMENT info EMPTY>
<!ATTLIST info name CDATA #REQUIRED>
<!ATTLIST info value CDATA #REQUIRED>

<!ELEMENT distances2 (indexes+,u64values+)>
<!ATTLIST distances2 type CDATA #REQUIRED>
<!ATTLIST distances2 nbobjs CDATA #REQUIRED>
<!ATTLIST distances2 indexing CDATA #REQUIRED>
<!ATTLIST distances2 kind CDATA #REQUIRED>
<!ATTLIST distances2 name CDATA "">

<!ELEMENT distances2hetero (indexes+,u64values+)>
<!ATTLIST distances2hetero nbobjs CDATA #REQUIRED>
<!ATTLIST distances2hetero kind CDATA #REQUIRED>
<!ATTLIST distances2hetero name CDATA "">

<!ELEMENT memattr (memattr_value*)>
<!ATTLIST memattr name CDATA #REQUIRED>
<!ATTLIST memattr flags CDATA #REQUIRED>

<!ELEMENT memattr_value EMPTY>
<!ATTLIST memattr_value target_obj_gp_index CDATA "">
<!ATTLIST memattr_value target_obj_type CDATA #REQUIRED>
<!ATTLIST memattr_value value CDATA #REQUIRED>
<!ATTLIST memattr_value initiator_cpuset CDATA "">
<!ATTLIST memattr_value initiator_obj_gp_index CDATA "">
<!ATTLIST memattr_value initiator_obj_type CDATA "">

<!ELEMENT indexes (#PCDATA)>
<!ATTLIST indexes length CDATA #REQUIRED>

<!ELEMENT u64values (#PCDATA)>
<!ATTLIST u64values length CDATA #REQUIRED>

<!ELEMENT userdata (#PCDATA)>
<!ATTLIST userdata name CDATA "" >
<!ATTLIST userdata length CDATA "0" >
<!ATTLIST userdata encoding CDATA "" >

<!ELEMENT support EMPTY>
<!ATTLIST support name CDATA #REQUIRED>
<!ATTLIST support value CDATA "1" >

<!ELEMENT cpukind (info*)>
<!ATTLIST cpukind cpuset CDATA "0">
<!ATTLIST cpukind forced_efficiency CDATA "-1">