1 <?xml version="1.0" encoding="utf-8"?> 2 <xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 3 <!-- Header printed by Valgrind tool as multiple lines of text --> 4 <xs:complexType name="vgPreamble"> 5 <xs:sequence> 6 <xs:element name="line" type="xs:string" 7 minOccurs="0" maxOccurs="unbounded"/> 8 </xs:sequence> 9 </xs:complexType> 10 11 <!-- Name and value of an environment variable used in XML output file name via %q{...} --> 12 <xs:complexType name="vgLogfileQual"> 13 <xs:sequence> 14 <xs:element name="var" type="xs:string"/> 15 <xs:element name="value" type="xs:string"/> 16 </xs:sequence> 17 </xs:complexType> 18 19 <!-- User comment specified via xml-user-comment=... --> 20 <xs:complexType name="vgUserComment"> 21 <xs:sequence> 22 <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/> 23 </xs:sequence> 24 </xs:complexType> 25 26 <!-- Executable path and arguments --> 27 <xs:complexType name="vgExeAndArgs"> 28 <xs:sequence> 29 <xs:element name="exe" type="xs:string"/> 30 <xs:element name="arg" type="xs:string" 31 minOccurs="0" maxOccurs="unbounded"/> 32 </xs:sequence> 33 </xs:complexType> 34 35 <!-- Valgrind tool and client executable path and arguments --> 36 <xs:complexType name="vgArgs"> 37 <xs:sequence> 38 <xs:element name="vargv" type="vgExeAndArgs"/> 39 <xs:element name="argv" type="vgExeAndArgs"/> 40 </xs:sequence> 41 </xs:complexType> 42 43 <xs:simpleType name="vgSchedState"> 44 <xs:restriction base="xs:string"> 45 <xs:enumeration value="RUNNING"/> 46 <xs:enumeration value="FINISHED"/> 47 </xs:restriction> 48 </xs:simpleType> 49 50 <!-- Valgrind scheduler state and time at which a state has been reached --> 51 <xs:complexType name="vgSchedulerStatus"> 52 <xs:sequence> 53 <xs:element name="state" type="vgSchedState"/> 54 <xs:element name="time" type="xs:string"/> 55 </xs:sequence> 56 </xs:complexType> 57 58 <xs:complexType name="vgSupprFrame"> 59 <xs:choice> 60 <xs:element name="fun" type="xs:string"/> 61 <xs:element name="obj" type="xs:string"/> 62 </xs:choice> 63 </xs:complexType> 64 65 <!-- Client call stack --> 66 <xs:complexType name="vgStack"> 67 <xs:sequence> 68 <xs:element name="frame" minOccurs="0" maxOccurs="unbounded"> 69 <xs:complexType> 70 <xs:sequence> 71 <xs:element name="ip" type="xs:string"/> 72 <xs:element name="obj" type="xs:string" minOccurs="0"/> 73 <xs:element name="fn" type="xs:string" minOccurs="0"/> 74 <xs:element name="dir" type="xs:string" minOccurs="0"/> 75 <xs:element name="file" type="xs:string" minOccurs="0"/> 76 <xs:element name="line" type="xs:string" minOccurs="0"/> 77 </xs:sequence> 78 </xs:complexType> 79 </xs:element> 80 </xs:sequence> 81 </xs:complexType> 82 83 <xs:complexType name="vgErrorCount"> 84 <xs:sequence> 85 <xs:element name="pair" minOccurs="0" maxOccurs="unbounded"> 86 <xs:complexType> 87 <xs:sequence> 88 <xs:element name="count" type="xs:integer"/> 89 <xs:element name="unique" type="xs:string"/> 90 </xs:sequence> 91 </xs:complexType> 92 </xs:element> 93 </xs:sequence> 94 </xs:complexType> 95 96 <xs:complexType name="vgSuppCount"> 97 <xs:sequence> 98 <xs:element name="pair" minOccurs="0" maxOccurs="unbounded"> 99 <xs:complexType> 100 <xs:sequence> 101 <xs:element name="count" type="xs:integer"/> 102 <xs:element name="name" type="xs:string"/> 103 </xs:sequence> 104 </xs:complexType> 105 </xs:element> 106 </xs:sequence> 107 </xs:complexType> 108 109 <xs:simpleType name="drdErrorKind"> 110 <xs:restriction base="xs:string"> 111 <xs:enumeration value="ConflictingAccess"/> 112 <xs:enumeration value="MutexErr"/> 113 <xs:enumeration value="CondErr"/> 114 <xs:enumeration value="CondDestrErr"/> 115 <xs:enumeration value="CondRaceErr"/> 116 <xs:enumeration value="CondWaitErr"/> 117 <xs:enumeration value="SemaphoreErr"/> 118 <xs:enumeration value="BarrierErr"/> 119 <xs:enumeration value="RwlockErr"/> 120 <xs:enumeration value="HoldtimeErr"/> 121 <xs:enumeration value="GenericErr"/> 122 <xs:enumeration value="InvalidThreadId"/> 123 <xs:enumeration value="UnimpHgClReq"/> 124 <xs:enumeration value="UnimpDrdClReq"/> 125 </xs:restriction> 126 </xs:simpleType> 127 128 <!-- Same as drdErrorKind but with the "drd:" prefix --> 129 <xs:simpleType name="drdSuppressionKind"> 130 <xs:restriction base="xs:string"> 131 <xs:enumeration value="drd:ConflictingAccess"/> 132 <xs:enumeration value="drd:MutexErr"/> 133 <xs:enumeration value="drd:CondErr"/> 134 <xs:enumeration value="drd:CondDestrErr"/> 135 <xs:enumeration value="drd:CondRaceErr"/> 136 <xs:enumeration value="drd:CondWaitErr"/> 137 <xs:enumeration value="drd:SemaphoreErr"/> 138 <xs:enumeration value="drd:BarrierErr"/> 139 <xs:enumeration value="drd:RwlockErr"/> 140 <xs:enumeration value="drd:HoldtimeErr"/> 141 <xs:enumeration value="drd:GenericErr"/> 142 <xs:enumeration value="drd:InvalidThreadId"/> 143 <xs:enumeration value="drd:UnimpHgClReq"/> 144 <xs:enumeration value="drd:UnimpDrdClReq"/> 145 </xs:restriction> 146 </xs:simpleType> 147 148 <!-- Single line of trace information with an optional call stack --> 149 <xs:complexType name="drdTrace"> 150 <xs:sequence> 151 <xs:element name="text" type="xs:string"/> 152 <xs:element name="stack" type="vgStack" minOccurs="0"/> 153 </xs:sequence> 154 </xs:complexType> 155 156 <!-- Context information about a DRD error --> 157 <xs:complexType name="drdContext"> 158 <xs:sequence> 159 <xs:element name="what" type="xs:string" minOccurs="0"/> 160 <xs:element name="address" type="xs:string" minOccurs="0"/> 161 <xs:element name="stack" type="vgStack"/> 162 </xs:sequence> 163 </xs:complexType> 164 165 <xs:complexType name="drdSuppression"> 166 <xs:sequence> 167 <xs:element name="sname" type="xs:string"/> 168 <xs:element name="skind" type="drdSuppressionKind"/> 169 <xs:element name="skaux" type="xs:string" minOccurs="0"/> 170 <xs:element name="sframe" type="vgSupprFrame" 171 minOccurs="0" maxOccurs="unbounded"/> 172 <xs:element name="rawtext" type="xs:string"/> 173 </xs:sequence> 174 </xs:complexType> 175 176 <xs:complexType name="drdError"> 177 <xs:sequence> 178 <xs:element name="unique" type="xs:string"/> 179 <xs:element name="tid" type="xs:integer"/> 180 <xs:element name="kind" type="drdErrorKind"/> 181 <xs:element name="acquired_at" type="drdContext" minOccurs="0"/> 182 <xs:element name="what" type="xs:string"/> 183 <xs:element name="stack" type="vgStack"/> 184 <xs:element name="auxwhat" type="xs:string" minOccurs="0"/> 185 <xs:element name="allocation_context" type="drdContext" minOccurs="0"/> 186 <xs:element name="confl_wait_call" type="drdContext" 187 minOccurs="0"/> 188 <xs:element name="first_observed_at" type="drdContext" 189 minOccurs="0" maxOccurs="3"/> 190 <xs:element name="xauxwhat" minOccurs="0"> 191 <xs:complexType> 192 <xs:sequence> 193 <xs:element name="text" type="xs:string"/> 194 <xs:element name="file" type="xs:string"/> 195 <xs:element name="line" type="xs:integer"/> 196 </xs:sequence> 197 </xs:complexType> 198 </xs:element> 199 <xs:element name="other_segment_start" minOccurs="0"> 200 <xs:complexType> 201 <xs:sequence> 202 <xs:element name="stack" type="vgStack" minOccurs="0"/> 203 </xs:sequence> 204 </xs:complexType> 205 </xs:element> 206 <xs:element name="other_segment_end" minOccurs="0"> 207 <xs:complexType> 208 <xs:sequence> 209 <xs:element name="stack" type="vgStack" minOccurs="0"/> 210 </xs:sequence> 211 </xs:complexType> 212 </xs:element> 213 <xs:element name="suppression" type="drdSuppression" minOccurs="0"/> 214 </xs:sequence> 215 </xs:complexType> 216 217 <xs:element name="valgrindoutput"> 218 <xs:complexType> 219 <xs:choice maxOccurs="unbounded"> 220 <xs:element name="protocolversion" type="xs:string"/> 221 <xs:element name="protocoltool" type="xs:string"/> 222 <xs:element name="preamble" type="vgPreamble"/> 223 <xs:element name="pid" type="xs:string"/> 224 <xs:element name="ppid" type="xs:string"/> 225 <xs:element name="tool" type="xs:string"/> 226 <xs:element name="logfilequalifier" type="vgLogfileQual" minOccurs="0"/> 227 <xs:element name="usercomment" type="vgUserComment" minOccurs="0"/> 228 <xs:element name="args" type="vgArgs"/> 229 <xs:element name="trace" type="drdTrace"/> 230 <xs:element name="error" type="drdError" 231 minOccurs="0" maxOccurs="unbounded"/> 232 <xs:element name="status" type="vgSchedulerStatus"/> 233 <xs:element name="errorcounts" type="vgErrorCount"/> 234 <xs:element name="suppcounts" type="vgSuppCount" minOccurs="0"/> 235 </xs:choice> 236 </xs:complexType> 237 </xs:element> 238 </xs:schema> 239