8199df0f6adde3144c8b1b68378cb59ab333aa1f
[mirror_edk2.git] / Tools / XMLSchema / FrameworkDataTypes.xsd
1 <?xml version="1.0" encoding="UTF-8"?>
2 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://www.TianoCore.org/2006/Edk2.0" targetNamespace="http://www.TianoCore.org/2006/Edk2.0">
3 <!--
4 Filename: FrameworkDataTypes.xsd
5
6 Copyright (c) 2006, Intel Corp.
7 All rights reserved. This program and the accompanying materials
8 are licensed and made available under the terms and conditions of the BSD License
9 which may be found at http://opensource.org/licenses/bsd-license.php
10
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13
14 -->
15 <xs:annotation>
16 <xs:documentation xml:lang="en">This schema defines EFI and Framework Data Types. Only simpleType are specified in this file. </xs:documentation>
17 </xs:annotation>
18 <xs:include schemaLocation="NamingConvention.xsd"/>
19 <xs:simpleType name="ArchList">
20 <xs:annotation>
21 <xs:documentation xml:lang="en">A list of one or more: IA32, X64, IPF and/or EBC</xs:documentation>
22 </xs:annotation>
23 <xs:list itemType="SupportedArchitectures"/>
24 </xs:simpleType>
25 <xs:simpleType name="BlockNameType">
26 <xs:annotation>
27 <xs:documentation xml:lang="en">FIRMWARE: Define a block name to be BLOCK[A-F0-9]{2}</xs:documentation>
28 </xs:annotation>
29 <xs:restriction base="UCNameType">
30 <xs:pattern value="BLOCK([A-F0-9]){2}"/>
31 </xs:restriction>
32 </xs:simpleType>
33 <xs:simpleType name="BootModeNames">
34 <xs:annotation>
35 <xs:documentation xml:lang="en">This describes what boot modes can be set (produced) or what boot modes can be supported, as defined in the Module Surface Area Specification</xs:documentation>
36 </xs:annotation>
37 <xs:restriction base="NameConvention">
38 <xs:enumeration value="FULL">
39 <xs:annotation>
40 <xs:documentation xml:lang="en">BOOT_WITH_FULL_CONFIGURATION</xs:documentation>
41 </xs:annotation>
42 </xs:enumeration>
43 <xs:enumeration value="MINIMAL">
44 <xs:annotation>
45 <xs:documentation xml:lang="en">BOOT_WITH_MINIMAL_CONFIGURATION</xs:documentation>
46 </xs:annotation>
47 </xs:enumeration>
48 <xs:enumeration value="NO_CHANGE">
49 <xs:annotation>
50 <xs:documentation xml:lang="en">BOOT_ASSUMING_NO_CONFIGURATION_CHANGES</xs:documentation>
51 </xs:annotation>
52 </xs:enumeration>
53 <xs:enumeration value="DIAGNOSTICS">
54 <xs:annotation>
55 <xs:documentation xml:lang="en">BOOT_WITH_FULL_CONFIGURATION_PLUS_DIAGNOSTICS</xs:documentation>
56 </xs:annotation>
57 </xs:enumeration>
58 <xs:enumeration value="DEFAULT">
59 <xs:annotation>
60 <xs:documentation xml:lang="en">BOOT_WITH_DEFAULT_SETTINGS</xs:documentation>
61 </xs:annotation>
62 </xs:enumeration>
63 <xs:enumeration value="S2_RESUME">
64 <xs:annotation>
65 <xs:documentation xml:lang="en">BOOT_ON_S2_RESUME</xs:documentation>
66 </xs:annotation>
67 </xs:enumeration>
68 <xs:enumeration value="S3_RESUME">
69 <xs:annotation>
70 <xs:documentation xml:lang="en">BOOT_ON_S3_RESUME</xs:documentation>
71 </xs:annotation>
72 </xs:enumeration>
73 <xs:enumeration value="S4_RESUME">
74 <xs:annotation>
75 <xs:documentation xml:lang="en">BOOT_ON_S4_RESUME</xs:documentation>
76 </xs:annotation>
77 </xs:enumeration>
78 <xs:enumeration value="S5_RESUME">
79 <xs:annotation>
80 <xs:documentation xml:lang="en">BOOT_ON_S5_RESUME</xs:documentation>
81 </xs:annotation>
82 </xs:enumeration>
83 <xs:enumeration value="FLASH_UPDATE">
84 <xs:annotation>
85 <xs:documentation xml:lang="en">BOOT_ON_FLASH_UPDATE</xs:documentation>
86 </xs:annotation>
87 </xs:enumeration>
88 <xs:enumeration value="RECOVERY">
89 <xs:annotation>
90 <xs:documentation xml:lang="en">BOOT_IN_RECOVERY_MODE</xs:documentation>
91 </xs:annotation>
92 </xs:enumeration>
93 </xs:restriction>
94 </xs:simpleType>
95 <xs:simpleType name="BootModeUsage">
96 <xs:annotation>
97 <xs:documentation xml:lang="en">This describes the Boot Mode Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
98 </xs:annotation>
99 <xs:restriction base="NameConvention">
100 <xs:enumeration value="ALWAYS_CONSUMED">
101 <xs:annotation>
102 <xs:documentation xml:lang="en">Supports the Boot Mode</xs:documentation>
103 </xs:annotation>
104 </xs:enumeration>
105 <xs:enumeration value="SOMETIMES_CONSUMED">
106 <xs:annotation>
107 <xs:documentation xml:lang="en">Supports the Boot Mode on some execution path</xs:documentation>
108 </xs:annotation>
109 </xs:enumeration>
110 <xs:enumeration value="ALWAYS_PRODUCED">
111 <xs:annotation>
112 <xs:documentation xml:lang="en">Always changes the Boot Mode</xs:documentation>
113 </xs:annotation>
114 </xs:enumeration>
115 <xs:enumeration value="SOMETIMES_PRODUCED">
116 <xs:annotation>
117 <xs:documentation xml:lang="en">Sometimes changes the Boot Mode</xs:documentation>
118 </xs:annotation>
119 </xs:enumeration>
120 </xs:restriction>
121 </xs:simpleType>
122 <xs:simpleType name="BuildTargets">
123 <xs:restriction base="xs:NCName">
124 <xs:enumeration value="DEBUG"/>
125 <xs:enumeration value="RELEASE"/>
126 <xs:enumeration value="BOTH"/>
127 </xs:restriction>
128 </xs:simpleType>
129 <xs:simpleType name="ComponentExecutionPhase">
130 <xs:annotation>
131 <xs:documentation xml:lang="en">These are the supported EFI/Framework Execution Phases</xs:documentation>
132 </xs:annotation>
133 <xs:restriction base="UCNameType">
134 <xs:enumeration value="MDE"/>
135 <xs:enumeration value="SEC"/>
136 <xs:enumeration value="PEI_CORE"/>
137 <xs:enumeration value="PEIM"/>
138 <xs:enumeration value="DXE_CORE"/>
139 <xs:enumeration value="DXE_DRIVER"/>
140 <xs:enumeration value="DXE_RUNTIME_DRIVER"/>
141 <xs:enumeration value="DXE_SAL_DRIVER"/>
142 <xs:enumeration value="DXE_SMM_DRIVER"/>
143 <xs:enumeration value="UEFI"/>
144 <xs:enumeration value="UEFI_APPLICATION"/>
145 </xs:restriction>
146 </xs:simpleType>
147 <xs:simpleType name="ConditionalTarget">
148 <xs:annotation>
149 <xs:documentation xml:lang="en">Conditional Targets are Other FeatureFlag Identifiers</xs:documentation>
150 </xs:annotation>
151 <xs:list itemType="C_Name"/>
152 </xs:simpleType>
153 <xs:simpleType name="DataHubUsage">
154 <xs:annotation>
155 <xs:documentation xml:lang="en">This describes the Data Hub Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
156 </xs:annotation>
157 <xs:restriction base="NameConvention">
158 <xs:enumeration value="ALWAYS_CONSUMED">
159 <xs:annotation>
160 <xs:documentation xml:lang="en">The module always consumes a data hub entry via registering a filter driver.</xs:documentation>
161 </xs:annotation>
162 </xs:enumeration>
163 <xs:enumeration value="SOMETIMES_CONSUMED">
164 <xs:annotation>
165 <xs:documentation xml:lang="en">The module will use a data hub entry if it exists via registering a filter driver.</xs:documentation>
166 </xs:annotation>
167 </xs:enumeration>
168 <xs:enumeration value="ALWAYS_PRODUCED">
169 <xs:annotation>
170 <xs:documentation xml:lang="en">The module always logs data into the data hub.</xs:documentation>
171 </xs:annotation>
172 </xs:enumeration>
173 <xs:enumeration value="SOMETIMES_PRODUCED">
174 <xs:annotation>
175 <xs:documentation xml:lang="en">The module will log data into the data hub under certain circumstances</xs:documentation>
176 </xs:annotation>
177 </xs:enumeration>
178 <xs:enumeration value="PRIVATE">
179 <xs:annotation>
180 <xs:documentation xml:lang="en">DataHub is produced and consumed only by this module</xs:documentation>
181 </xs:annotation>
182 </xs:enumeration>
183 </xs:restriction>
184 </xs:simpleType>
185 <xs:simpleType name="DateType">
186 <xs:annotation>
187 <xs:documentation xml:lang="en">Date Format is YYYY-MM-DD HH:MM (24hr time format)</xs:documentation>
188 </xs:annotation>
189 <xs:restriction base="xs:normalizedString">
190 <xs:pattern value="[1-9][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9] [0-2][0-9]:[0-5][0-9]"/>
191 </xs:restriction>
192 </xs:simpleType>
193 <xs:simpleType name="DefaultValue">
194 <xs:annotation>
195 <xs:documentation xml:lang="en"> The DefaultValue is a union of a string and an integer. </xs:documentation>
196 </xs:annotation>
197 <xs:union memberTypes="xs:normalizedString xs:int UnicodeString"/>
198 </xs:simpleType>
199 <xs:simpleType name="EfiSectionType">
200 <xs:restriction base="UCNameType">
201 <xs:enumeration value="EFI_SECTION_FREEFORM_SUBTYPE_GUID"/>
202 <xs:enumeration value="EFI_SECTION_VERSION"/>
203 <xs:enumeration value="EFI_SECTION_USER_INTERFACE"/>
204 <xs:enumeration value="EFI_SECTION_DXE_DEPEX"/>
205 <xs:enumeration value="EFI_SECTION_PEI_DEPEX"/>
206 <xs:enumeration value="EFI_SECTION_PE32"/>
207 <xs:enumeration value="EFI_SECTION_PIC"/>
208 <xs:enumeration value="EFI_SECTION_TE"/>
209 <xs:enumeration value="EFI_SECTION_RAW"/>
210 <xs:enumeration value="EFI_SECTION_COMPRESSION"/>
211 <xs:enumeration value="EFI_SECTION_GUID_DEFINED"/>
212 <xs:enumeration value="EFI_SECTION_COMPATIBILITY16"/>
213 <xs:enumeration value="EFI_SECTION_FIRMWARE_VOLUME_IMAGE"/>
214 </xs:restriction>
215 </xs:simpleType>
216 <xs:simpleType name="EventTypes">
217 <xs:annotation>
218 <xs:documentation xml:lang="en">This describes the Supported Event Groups, as defined in the Module Surface Area Specification</xs:documentation>
219 </xs:annotation>
220 <xs:restriction base="NameConvention">
221 <xs:enumeration value="EVENT_GROUP_EXIT_BOOT_SERVICES"/>
222 <xs:enumeration value="EVENT_GROUP_VIRTUAL_ADDRESS_CHANGE"/>
223 <xs:enumeration value="EVENT_GROUP_MEMORY_MAP_CHANGE"/>
224 <xs:enumeration value="EVENT_GROUP_READY_TO_BOOT"/>
225 <xs:enumeration value="EVENT_GROUP_LEGACY_BOOT"/>
226 </xs:restriction>
227 </xs:simpleType>
228 <xs:simpleType name="EventUsage">
229 <xs:annotation>
230 <xs:documentation xml:lang="en">This describes the Event Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
231 </xs:annotation>
232 <xs:restriction base="NameConvention">
233 <xs:enumeration value="ALWAYS_CONSUMED">
234 <xs:annotation>
235 <xs:documentation xml:lang="en">A module registers a notification function and requires it to be executed for the module to fully function.</xs:documentation>
236 </xs:annotation>
237 </xs:enumeration>
238 <xs:enumeration value="SOMETIMES_CONSUMED">
239 <xs:annotation>
240 <xs:documentation xml:lang="en">A module registers a notification function and utilizes it if it's signaled.</xs:documentation>
241 </xs:annotation>
242 </xs:enumeration>
243 <xs:enumeration value="ALWAYS_PRODUCED">
244 <xs:annotation>
245 <xs:documentation xml:lang="en">A module will always signal the event.</xs:documentation>
246 </xs:annotation>
247 </xs:enumeration>
248 <xs:enumeration value="SOMETIMES_PRODUCED">
249 <xs:annotation>
250 <xs:documentation xml:lang="en">A module will sometimes signal the event.</xs:documentation>
251 </xs:annotation>
252 </xs:enumeration>
253 <xs:enumeration value="PRIVATE">
254 <xs:annotation>
255 <xs:documentation xml:lang="en">Event is produced and consumed only by this module</xs:documentation>
256 </xs:annotation>
257 </xs:enumeration>
258 </xs:restriction>
259 </xs:simpleType>
260 <xs:simpleType name="ExecutionType">
261 <xs:annotation>
262 <xs:documentation xml:lang="en"> This defines the output types: Relocatable (REL,) Non-Relocatable (NREL,) Execute in Place (XIP) or Position Independent Code (PIC) </xs:documentation>
263 </xs:annotation>
264 <xs:restriction base="UCNameType">
265 <xs:enumeration value="REL" id="Relocatable"/>
266 <xs:enumeration value="NREL" id="Non-Relocatable"/>
267 <xs:enumeration value="XIP" id="Execute_In_Place"/>
268 <xs:enumeration value="PIC" id="Position_Independent_Code"/>
269 </xs:restriction>
270 </xs:simpleType>
271 <xs:simpleType name="ExternType">
272 <xs:annotation>
273 <xs:documentation xml:lang="en">C Identifier Name for the Extern data as defined in the Module Surface Area Specification</xs:documentation>
274 </xs:annotation>
275 <xs:restriction base="xs:string">
276 <xs:pattern value="(_*\w*\W*)*"/>
277 </xs:restriction>
278 </xs:simpleType>
279 <xs:simpleType name="ExternUsage">
280 <xs:annotation>
281 <xs:documentation xml:lang="en">This describes the Extern Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
282 </xs:annotation>
283 <xs:restriction base="NameConvention">
284 <xs:enumeration value="ALWAYS_CONSUMED">
285 <xs:annotation>
286 <xs:documentation xml:lang="en">The EXTERN is always imported by the module</xs:documentation>
287 </xs:annotation>
288 </xs:enumeration>
289 <xs:enumeration value="ALWAYS_PRODUCED">
290 <xs:annotation>
291 <xs:documentation xml:lang="en">The EXTERN is always exported by the module</xs:documentation>
292 </xs:annotation>
293 </xs:enumeration>
294 </xs:restriction>
295 </xs:simpleType>
296 <xs:simpleType name="FileNameUsage">
297 <xs:annotation>
298 <xs:documentation xml:lang="en">This describes the FileName Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
299 </xs:annotation>
300 <xs:restriction base="NameConvention">
301 <xs:enumeration value="ALWAYS_CONSUMED">
302 <xs:annotation>
303 <xs:documentation xml:lang="en">Module requires a file named GUID in an FV</xs:documentation>
304 </xs:annotation>
305 </xs:enumeration>
306 <xs:enumeration value="SOMETIMES_CONSUMED">
307 <xs:annotation>
308 <xs:documentation xml:lang="en">Module will use a file named GUID in an FV if it is present</xs:documentation>
309 </xs:annotation>
310 </xs:enumeration>
311 <xs:enumeration value="ALWAYS_PRODUCED">
312 <xs:annotation>
313 <xs:documentation xml:lang="en">Module Always produces a file named GUID in an FV</xs:documentation>
314 </xs:annotation>
315 </xs:enumeration>
316 <xs:enumeration value="SOMETIMES_PRODUCED">
317 <xs:annotation>
318 <xs:documentation xml:lang="en">Module sometimes produces a file named GUID in an FV</xs:documentation>
319 </xs:annotation>
320 </xs:enumeration>
321 <xs:enumeration value="PRIVATE">
322 <xs:annotation>
323 <xs:documentation xml:lang="en">Filename is produced and consumed only by this module</xs:documentation>
324 </xs:annotation>
325 </xs:enumeration>
326 </xs:restriction>
327 </xs:simpleType>
328 <xs:simpleType name="FormSetUsage">
329 <xs:annotation>
330 <xs:documentation xml:lang="en">This describes the Formset Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
331 </xs:annotation>
332 <xs:restriction base="NameConvention">
333 <xs:enumeration value="ALWAYS_PRODUCED">
334 <xs:annotation>
335 <xs:documentation xml:lang="en">The Formset is always registered into HII by the module</xs:documentation>
336 </xs:annotation>
337 </xs:enumeration>
338 <xs:enumeration value="SOMETIMES_PRODUCED">
339 <xs:annotation>
340 <xs:documentation xml:lang="en">Some execution paths through the modules register forms into HII</xs:documentation>
341 </xs:annotation>
342 </xs:enumeration>
343 <xs:enumeration value="PRIVATE">
344 <xs:annotation>
345 <xs:documentation xml:lang="en">Formset is produced and consumed only by this module</xs:documentation>
346 </xs:annotation>
347 </xs:enumeration>
348 </xs:restriction>
349 </xs:simpleType>
350 <xs:simpleType name="FrameworkComponentTypes">
351 <xs:annotation>
352 <xs:documentation xml:lang="en"> These are the EFI/Framework Component Types defined in the EFI Development Kit (EDK) Getting Started Guide </xs:documentation>
353 </xs:annotation>
354 <xs:restriction base="UCNameType">
355 <xs:enumeration value="APRIORI"/>
356 <xs:enumeration value="SEC"/>
357 <xs:enumeration value="LIBRARY"/>
358 <xs:enumeration value="FV_IMAGE_FILE"/>
359 <xs:enumeration value="BS_DRIVER"/>
360 <xs:enumeration value="RT_DRIVER"/>
361 <xs:enumeration value="SAL_RT_DRIVER"/>
362 <xs:enumeration value="PE32_PEIM"/>
363 <xs:enumeration value="PIC_PEIM"/>
364 <xs:enumeration value="COMBINED_PEIM_DRIVER"/>
365 <xs:enumeration value="PEI_CORE"/>
366 <xs:enumeration value="DXE_CORE"/>
367 <xs:enumeration value="APPLICATION"/>
368 <xs:enumeration value="BS_DRIVER_EFI"/>
369 <xs:enumeration value="SHELLAPP"/>
370 <xs:enumeration value="UEFI_APPLICATION"/>
371 <xs:enumeration value="BINARY"/>
372 <xs:enumeration value="LOGO"/>
373 <xs:enumeration value="CUSTOM_BUILD"/>
374 </xs:restriction>
375 </xs:simpleType>
376 <xs:simpleType name="FvRegionTypes">
377 <xs:annotation>
378 <xs:documentation xml:lang="en">FIRMWARE: Pre-defined Firmware Volume Region Types</xs:documentation>
379 </xs:annotation>
380 <xs:restriction base="UCNameType">
381 <xs:enumeration value="FV_MAIN"/>
382 <xs:enumeration value="FV_MAIN_COMPACT"/>
383 <xs:enumeration value="NV_STORAGE"/>
384 <xs:enumeration value="FV_RECOVERY"/>
385 <xs:enumeration value="FV_RECOVERY_FLOPPY"/>
386 <xs:enumeration value="FV_FILE"/>
387 <xs:enumeration value="CAPSULE_CARGO"/>
388 <xs:enumeration value="NULL"/>
389 <xs:enumeration value="USER_DEFINED"/>
390 </xs:restriction>
391 </xs:simpleType>
392 <xs:simpleType name="GuidUsage">
393 <xs:annotation>
394 <xs:documentation xml:lang="en">This describes the Guid Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
395 </xs:annotation>
396 <xs:restriction base="NameConvention">
397 <xs:enumeration value="ALWAYS_CONSUMED">
398 <xs:annotation>
399 <xs:documentation xml:lang="en">Module always consumes the GUID</xs:documentation>
400 </xs:annotation>
401 </xs:enumeration>
402 <xs:enumeration value="SOMETIMES_CONSUMED">
403 <xs:annotation>
404 <xs:documentation xml:lang="en">Module will consume the GUID only if the GUID is present</xs:documentation>
405 </xs:annotation>
406 </xs:enumeration>
407 <xs:enumeration value="ALWAYS_PRODUCED">
408 <xs:annotation>
409 <xs:documentation xml:lang="en">Module will always produce the GUID</xs:documentation>
410 </xs:annotation>
411 </xs:enumeration>
412 <xs:enumeration value="SOMETIMES_PRODUCED">
413 <xs:annotation>
414 <xs:documentation xml:lang="en">Module sometimes produces the GUID</xs:documentation>
415 </xs:annotation>
416 </xs:enumeration>
417 <xs:enumeration value="DEFAULT">
418 <xs:annotation>
419 <xs:documentation xml:lang="en">The default is the GUID that specifies the instance of the package</xs:documentation>
420 </xs:annotation>
421 </xs:enumeration>
422 <xs:enumeration value="PRIVATE">
423 <xs:annotation>
424 <xs:documentation xml:lang="en">Guid is produced and consumed only by this module</xs:documentation>
425 </xs:annotation>
426 </xs:enumeration>
427 </xs:restriction>
428 </xs:simpleType>
429 <xs:simpleType name="HobTypes">
430 <xs:annotation>
431 <xs:documentation xml:lang="en">Type of HOB that is being produced or consumed, as specified in the Module Surface Area Specification.</xs:documentation>
432 </xs:annotation>
433 <xs:restriction base="NameConvention">
434 <xs:enumeration value="PHIT">
435 <xs:annotation>
436 <xs:documentation xml:lang="en">EFI_HOB_TYPE_HANDOFF</xs:documentation>
437 </xs:annotation>
438 </xs:enumeration>
439 <xs:enumeration value="MEMORY_ALLOCATION">
440 <xs:annotation>
441 <xs:documentation xml:lang="en">EFI_HOB_TYPE_MEMORY_ALLOCATION Note: The BaseName of the GUID is also required</xs:documentation>
442 </xs:annotation>
443 </xs:enumeration>
444 <xs:enumeration value="RESOURCE_DESCRIPTOR">
445 <xs:annotation>
446 <xs:documentation xml:lang="en">EFI_HOB_TYPE_RESOURCE_DESCRIPTOR</xs:documentation>
447 </xs:annotation>
448 </xs:enumeration>
449 <xs:enumeration value="GUID_EXTENSION">
450 <xs:annotation>
451 <xs:documentation xml:lang="en">EFI_HOB_TYPE_GUID_EXTENSION Note: The BaseName of the GUID is also required.</xs:documentation>
452 </xs:annotation>
453 </xs:enumeration>
454 <xs:enumeration value="FIRMWARE_VOLUME">
455 <xs:annotation>
456 <xs:documentation xml:lang="en">EFI_HOB_TYPE_FV</xs:documentation>
457 </xs:annotation>
458 </xs:enumeration>
459 <xs:enumeration value="CPU">
460 <xs:annotation>
461 <xs:documentation xml:lang="en">EFI_HOB_TYPE_CPU</xs:documentation>
462 </xs:annotation>
463 </xs:enumeration>
464 <xs:enumeration value="POOL">
465 <xs:annotation>
466 <xs:documentation xml:lang="en">EFI_HOB_TYPE_PEI_MEMORY_POOL</xs:documentation>
467 </xs:annotation>
468 </xs:enumeration>
469 <xs:enumeration value="CAPSULE_VOLUME">
470 <xs:annotation>
471 <xs:documentation xml:lang="en">EFI_HOB_TYPE_CV</xs:documentation>
472 </xs:annotation>
473 </xs:enumeration>
474 </xs:restriction>
475 </xs:simpleType>
476 <xs:simpleType name="HobUsage">
477 <xs:annotation>
478 <xs:documentation xml:lang="en">This describes the Hob Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
479 </xs:annotation>
480 <xs:restriction base="NameConvention">
481 <xs:enumeration value="ALWAYS_CONSUMED">
482 <xs:annotation>
483 <xs:documentation xml:lang="en">The HOB must be present in the system</xs:documentation>
484 </xs:annotation>
485 </xs:enumeration>
486 <xs:enumeration value="SOMETIMES_CONSUMED">
487 <xs:annotation>
488 <xs:documentation xml:lang="en">The HOB will be used if it's present in the system</xs:documentation>
489 </xs:annotation>
490 </xs:enumeration>
491 <xs:enumeration value="ALWAYS_PRODUCED">
492 <xs:annotation>
493 <xs:documentation xml:lang="en">The HOB is always produced by the module</xs:documentation>
494 </xs:annotation>
495 </xs:enumeration>
496 <xs:enumeration value="SOMETIMES_PRODUCED">
497 <xs:annotation>
498 <xs:documentation xml:lang="en">The HOB will sometimes be produced by the module.</xs:documentation>
499 </xs:annotation>
500 </xs:enumeration>
501 <xs:enumeration value="PRIVATE">
502 <xs:annotation>
503 <xs:documentation xml:lang="en">HOB is produced and consumed only by this module</xs:documentation>
504 </xs:annotation>
505 </xs:enumeration>
506 </xs:restriction>
507 </xs:simpleType>
508 <xs:simpleType name="LibraryUsage">
509 <xs:annotation>
510 <xs:documentation xml:lang="en">This describes the Library Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
511 </xs:annotation>
512 <xs:restriction base="NameConvention">
513 <xs:enumeration value="ALWAYS_CONSUMED">
514 <xs:annotation>
515 <xs:documentation xml:lang="en">A module always consumes the library. This Guid represents the class of the library.</xs:documentation>
516 </xs:annotation>
517 </xs:enumeration>
518 <xs:enumeration value="SOMETIMES_CONSUMED"/>
519 <xs:enumeration value="ALWAYS_PRODUCED"/>
520 <xs:enumeration value="SOMETIMES_PRODUCED"/>
521 <xs:enumeration value="DEFAULT">
522 <xs:annotation>
523 <xs:documentation xml:lang="en">The default is the GUID that specifies the instance of the library.</xs:documentation>
524 </xs:annotation>
525 </xs:enumeration>
526 <xs:enumeration value="PRIVATE">
527 <xs:annotation>
528 <xs:documentation xml:lang="en">Library is produced and consumed only by this module</xs:documentation>
529 </xs:annotation>
530 </xs:enumeration>
531 </xs:restriction>
532 </xs:simpleType>
533 <xs:simpleType name="ModuleTypeDef">
534 <xs:annotation>
535 <xs:documentation xml:lang="en"> These are the supported Framework Module Types </xs:documentation>
536 </xs:annotation>
537 <xs:restriction base="NameConvention">
538 <xs:enumeration value="BASE">
539 <xs:annotation>
540 <xs:documentation xml:lang="en">Module only depends on things in the MDE package and is environment neutral</xs:documentation>
541 </xs:annotation>
542 </xs:enumeration>
543 <xs:enumeration value="SEC">
544 <xs:annotation>
545 <xs:documentation xml:lang="en">Module is the Security Section and depends on catching the reset vectory</xs:documentation>
546 </xs:annotation>
547 </xs:enumeration>
548 <xs:enumeration value="PEI_CORE">
549 <xs:annotation>
550 <xs:documentation xml:lang="en">Module is the PEI Core</xs:documentation>
551 </xs:annotation>
552 </xs:enumeration>
553 <xs:enumeration value="PEIM">
554 <xs:annotation>
555 <xs:documentation xml:lang="en">Module is a PEIM and depends on the PEI Services Table</xs:documentation>
556 </xs:annotation>
557 </xs:enumeration>
558 <xs:enumeration value="DXE_CORE">
559 <xs:annotation>
560 <xs:documentation xml:lang="en">Module is the DXE Core</xs:documentation>
561 </xs:annotation>
562 </xs:enumeration>
563 <xs:enumeration value="DXE_DRIVER">
564 <xs:annotation>
565 <xs:documentation xml:lang="en">Module is a DXE Driver and depends on the EFI Boot Services, EFI Runtime Services and the DXE Service Table</xs:documentation>
566 </xs:annotation>
567 </xs:enumeration>
568 <xs:enumeration value="DXE_RUNTIME_DRIVER">
569 <xs:annotation>
570 <xs:documentation xml:lang="en">Module is a DXE Driver and depends on the EFI Boot Services, EFI Runtime Services and the DXE Service Table. The module runs after ExitBootServices and produces CreateEvent EventGroupExitBootServices and EventGroupVirtualAddressChange. Code written in this module can run in physical or virtual mode.</xs:documentation>
571 </xs:annotation>
572 </xs:enumeration>
573 <xs:enumeration value="DXE_SAL_DRIVER">
574 <xs:annotation>
575 <xs:documentation xml:lang="en">Module is a DXE Driver and depends on the EFI Boot Services, EFI Runtime Services and the DXE Service Table. The module runs after ExitBootServices and produces CreateEvent EventGroupExitBootServices and EventGroupVirtualAddressChange. Code written in this module can run in physical AND in virtual mode.</xs:documentation>
576 </xs:annotation>
577 </xs:enumeration>
578 <xs:enumeration value="DXE_SMM_DRIVER">
579 <xs:annotation>
580 <xs:documentation xml:lang="en">Module is a DXE Driver and depends on the EFI Boot Services, EFI Runtime Services and the DXE Service Table. The module also runs in SMM mode and depends on the SMM Service Table. </xs:documentation>
581 </xs:annotation>
582 </xs:enumeration>
583 <xs:enumeration value="TOOLS">
584 <xs:annotation>
585 <xs:documentation xml:lang="en">The TOOLS ModuleType is to be used for Tiano Tools modules</xs:documentation>
586 </xs:annotation>
587 </xs:enumeration>
588 <xs:enumeration value="UEFI_DRIVER">
589 <xs:annotation>
590 <xs:documentation xml:lang="en">Module is a UEFI Driver and depends on the EFI and Service Tables.</xs:documentation>
591 </xs:annotation>
592 </xs:enumeration>
593 <xs:enumeration value="UEFI_APPLICATION">
594 <xs:annotation>
595 <xs:documentation xml:lang="en">Module is a UEFI Applciation and depens on the EFI and Service Tables.</xs:documentation>
596 </xs:annotation>
597 </xs:enumeration>
598 <xs:enumeration value="USER_DEFINED">
599 <xs:annotation>
600 <xs:documentation xml:lang="en">Module does not fit into other classifications. The user must have an apriori knowledge of its Usage, and must provide that information to others using this module.</xs:documentation>
601 </xs:annotation>
602 </xs:enumeration>
603 </xs:restriction>
604 </xs:simpleType>
605 <xs:simpleType name="Module_Unified">
606 <xs:annotation>
607 <xs:documentation xml:lang="en">Define a flag to determine whether to put intermediate build files into a directory under the Module, or into a unified tree under the package or platform build trees</xs:documentation>
608 </xs:annotation>
609 <xs:restriction base="UCNameType">
610 <xs:enumeration value="MODULE"/>
611 <xs:enumeration value="UNIFIED"/>
612 </xs:restriction>
613 </xs:simpleType>
614 <xs:simpleType name="PackageType">
615 <xs:annotation>
616 <xs:documentation xml:lang="en">Packages are either source, binary or mixed packages.</xs:documentation>
617 </xs:annotation>
618 <xs:restriction base="UCNameType">
619 <xs:enumeration value="SOURCE"/>
620 <xs:enumeration value="BINARY"/>
621 <xs:enumeration value="MIXED"/>
622 </xs:restriction>
623 </xs:simpleType>
624 <xs:simpleType name="PackageUsage">
625 <xs:annotation>
626 <xs:documentation xml:lang="en">This describes the Package Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
627 </xs:annotation>
628 <xs:restriction base="NameConvention">
629 <xs:enumeration value="ALWAYS_CONSUMED">
630 <xs:annotation>
631 <xs:documentation xml:lang="en">A module always consumes a package. This GUID represents the class of the package.</xs:documentation>
632 </xs:annotation>
633 </xs:enumeration>
634 <xs:enumeration value="ALWAYS_PRODUCED">
635 <xs:annotation>
636 <xs:documentation xml:lang="en">This is the Package we are creating. This GUID represents the class of the package.</xs:documentation>
637 </xs:annotation>
638 </xs:enumeration>
639 <xs:enumeration value="DEFAULT">
640 <xs:annotation>
641 <xs:documentation xml:lang="en">The default is the GUID that specifies the instance of the package.</xs:documentation>
642 </xs:annotation>
643 </xs:enumeration>
644 </xs:restriction>
645 </xs:simpleType>
646 <xs:simpleType name="PcdListType">
647 <xs:list itemType="PcdItemTypes"/>
648 </xs:simpleType>
649 <xs:simpleType name="PcdTypes">
650 <xs:restriction base="NameConvention">
651 <xs:enumeration value="FIXED_AT_BUILD">
652 <xs:annotation>
653 <xs:documentation xml:lang="en">PCD Item is only a build time option and cannot be Dyanmic or Binary patched into the module.</xs:documentation>
654 </xs:annotation>
655 </xs:enumeration>
656 <xs:enumeration value="FEATURE_FLAG"/>
657 <xs:enumeration value="PATCHABLE_IN_MODULE">
658 <xs:annotation>
659 <xs:documentation xml:lang="en">PCD Item is set to a default value at build time and a binary of the module can be patched to update the value.</xs:documentation>
660 </xs:annotation>
661 </xs:enumeration>
662 <xs:enumeration value="DYNAMIC">
663 <xs:annotation>
664 <xs:documentation xml:lang="en">PCD Item is found via a PCD PPI in PEI or a PCD Protocol in DXE. The token that matches the PCD entry is either generated by the build (and is only unique to that build) or is from the default database. This form also implies a build option will be produced for this module that allows the user to pick FixedAtBuild, PatchableInModule or Dynamic. If no Type is specified, it defaults to Dynamic</xs:documentation>
665 </xs:annotation>
666 </xs:enumeration>
667 <xs:enumeration value="DYNAMIC_EX">
668 <xs:annotation>
669 <xs:documentation xml:lang="en">PCD Item is found via a PCD PPI in PEI or a PCD Protocol in DXE. The token that matches the PCD entry is either generated by the build (and is only unique to that build) or is from the default database. This form also implies a build option will be produced for this module that allows the user to pick FixedAtBuild, PatchableInModule or Dynamic. If no Type is specified, it defaults to Dynamic</xs:documentation>
670 </xs:annotation>
671 </xs:enumeration>
672 </xs:restriction>
673 </xs:simpleType>
674 <xs:simpleType name="PcdDriverTypes">
675 <xs:restriction base="NameConvention">
676 <xs:enumeration value="PEI_PCD_DRIVER"/>
677 <xs:enumeration value="DXE_PCD_DRIVER"/>
678 </xs:restriction>
679 </xs:simpleType>
680 <xs:simpleType name="PcdDataTypes">
681 <xs:restriction base="xs:normalizedString">
682 <xs:enumeration value="UINT8"/>
683 <xs:enumeration value="UINT16"/>
684 <xs:enumeration value="UINT32"/>
685 <xs:enumeration value="UINT64"/>
686 <xs:enumeration value="VOID*"/>
687 <xs:enumeration value="BOOLEAN"/>
688 </xs:restriction>
689 </xs:simpleType>
690 <xs:simpleType name="PcdFeatureFlagUsage">
691 <xs:annotation>
692 <xs:documentation xml:lang="en">This describes the PCD FEATURE_FLAG Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
693 </xs:annotation>
694 <xs:restriction base="UsageTypes">
695 <xs:enumeration value="ALWAYS_PRODUCED">
696 <xs:annotation>
697 <xs:documentation xml:lang="en">Item is Always produced</xs:documentation>
698 </xs:annotation>
699 </xs:enumeration>
700 <xs:enumeration value="DEFAULT">
701 <xs:annotation>
702 <xs:documentation xml:lang="en">Item is tagged as the default</xs:documentation>
703 </xs:annotation>
704 </xs:enumeration>
705 </xs:restriction>
706 </xs:simpleType>
707 <xs:simpleType name="PcdItemTypes">
708 <xs:restriction base="NameConvention">
709 <xs:enumeration value="FEATURE_FLAG">
710 <xs:annotation>
711 <xs:documentation xml:lang="en">The PCD Item represents a feature flag for the module. Features can only be selected at build time. Items of type FeatureFlag are used to conditionally construct module surface area that is produced as a result of a buld.</xs:documentation>
712 </xs:annotation>
713 </xs:enumeration>
714 <xs:enumeration value="FIXED_AT_BUILD">
715 <xs:annotation>
716 <xs:documentation xml:lang="en">PCD Item is only a build time option and cannot be Dyanmic or Binary patched into the module.</xs:documentation>
717 </xs:annotation>
718 </xs:enumeration>
719 <xs:enumeration value="PATCHABLE_IN_MODULE">
720 <xs:annotation>
721 <xs:documentation xml:lang="en">PCD Item is set to a default value at build time and a binary of the module can be patched to update the value.</xs:documentation>
722 </xs:annotation>
723 </xs:enumeration>
724 <xs:enumeration value="DYNAMIC">
725 <xs:annotation>
726 <xs:documentation xml:lang="en">PCD Item is found via a PCD PPI in PEI or a PCD Protocol in DXE. The token that matches the PCD entry is either generated by the build (and is only unique to that build) or is from the default database. This form also implies a build option will be produced for this module that allows the user to pick FixedAtBuild, PatchableInModule or Dynamic. If no Type is specified, it defaults to Dynamic</xs:documentation>
727 </xs:annotation>
728 </xs:enumeration>
729 <xs:enumeration value="DYNAMIC_EX">
730 <xs:annotation>
731 <xs:documentation xml:lang="en">PCD Item is found via a PCD PPI in PEI or a PCD Protocol in DXE. Any PCD token database is supported</xs:documentation>
732 </xs:annotation>
733 </xs:enumeration>
734 </xs:restriction>
735 </xs:simpleType>
736 <xs:simpleType name="PcdUsage">
737 <xs:annotation>
738 <xs:documentation xml:lang="en">The PCD Usage is only relevant to Items tagged with FeatureFlag, as defined in the Module Surface Area Specification</xs:documentation>
739 </xs:annotation>
740 <xs:restriction base="NameConvention">
741 <xs:enumeration value="ALWAYS_CONSUMED">
742 <xs:annotation>
743 <xs:documentation xml:lang="en">The PCD entry must always be provide as the build will include the code and the associated Surface Area.</xs:documentation>
744 </xs:annotation>
745 </xs:enumeration>
746 <xs:enumeration value="SOMETIMES_CONSUMED">
747 <xs:annotation>
748 <xs:documentation xml:lang="en">If the FEATURE_FLAG is TRUE the build will include the code and the associated Surface Area. If the FEATURE_FLAG is FALSE, the code and the associated surface area is not included.</xs:documentation>
749 </xs:annotation>
750 </xs:enumeration>
751 <xs:enumeration value="ALWAYS_PRODUCED">
752 <xs:annotation>
753 <xs:documentation xml:lang="en">The PCD Entry is Always included in the build code</xs:documentation>
754 </xs:annotation>
755 </xs:enumeration>
756 <xs:enumeration value="SOMETIMES_PRODUCED">
757 <xs:annotation>
758 <xs:documentation xml:lang="en">If the FEATURE_FLAG is TRUE the build will include the code and the associated Surface Area. If the FEATURE_FLAG is FALSE, the code and the associated surface area is not included.</xs:documentation>
759 </xs:annotation>
760 </xs:enumeration>
761 <xs:enumeration value="DEFAULT">
762 <xs:annotation>
763 <xs:documentation xml:lang="en">"true" or "false". Indicates the default value for the PCD entry. This is used by the platform wizard to suggest values for a given platform build.</xs:documentation>
764 </xs:annotation>
765 </xs:enumeration>
766 </xs:restriction>
767 </xs:simpleType>
768 <xs:simpleType name="PpiNotifyUsage">
769 <xs:annotation>
770 <xs:documentation xml:lang="en">This describes the PPI Notify Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
771 </xs:annotation>
772 <xs:restriction base="NameConvention">
773 <xs:enumeration value="SOMETIMES_CONSUMED">
774 <xs:annotation>
775 <xs:documentation xml:lang="en">Module will consume the PPI if it's produced. Consumption is defined by executing the PPI notify function.</xs:documentation>
776 </xs:annotation>
777 </xs:enumeration>
778 </xs:restriction>
779 </xs:simpleType>
780 <xs:simpleType name="PpiUsage">
781 <xs:annotation>
782 <xs:documentation xml:lang="en">This describes the PPI Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
783 </xs:annotation>
784 <xs:restriction base="NameConvention">
785 <xs:enumeration value="ALWAYS_CONSUMED">
786 <xs:annotation>
787 <xs:documentation xml:lang="en">Item is Required for the driver to function. This is part of the dependency expression of a module if the item represents a PPI or Protocol</xs:documentation>
788 </xs:annotation>
789 </xs:enumeration>
790 <xs:enumeration value="SOMETIMES_CONSUMED">
791 <xs:annotation>
792 <xs:documentation xml:lang="en">Item is Consumed by the driver if the Item exists</xs:documentation>
793 </xs:annotation>
794 </xs:enumeration>
795 <xs:enumeration value="ALWAYS_PRODUCED">
796 <xs:annotation>
797 <xs:documentation xml:lang="en">Item is Always produced</xs:documentation>
798 </xs:annotation>
799 </xs:enumeration>
800 <xs:enumeration value="SOMETIMES_PRODUCED">
801 <xs:annotation>
802 <xs:documentation xml:lang="en">Item is Conditionally produced</xs:documentation>
803 </xs:annotation>
804 </xs:enumeration>
805 <xs:enumeration value="PRIVATE">
806 <xs:annotation>
807 <xs:documentation xml:lang="en">Ppi is produced and consumed only by this module</xs:documentation>
808 </xs:annotation>
809 </xs:enumeration>
810 </xs:restriction>
811 </xs:simpleType>
812 <xs:simpleType name="ProtocolNotifyUsage">
813 <xs:annotation>
814 <xs:documentation xml:lang="en">This describes the PROTOCOL Notify Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
815 </xs:annotation>
816 <xs:restriction base="NameConvention">
817 <xs:enumeration value="SOMETIMES_CONSUMED">
818 <xs:annotation>
819 <xs:documentation xml:lang="en">Module will Consume protocol if it's produced. Consumption is defined by executing the protocol notify function.</xs:documentation>
820 </xs:annotation>
821 </xs:enumeration>
822 </xs:restriction>
823 </xs:simpleType>
824 <xs:simpleType name="ProtocolUsage">
825 <xs:annotation>
826 <xs:documentation xml:lang="en">This describes the PROTOCOL Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
827 </xs:annotation>
828 <xs:restriction base="NameConvention">
829 <xs:enumeration value="ALWAYS_CONSUMED">
830 <xs:annotation>
831 <xs:documentation xml:lang="en">Item is Required for the driver to function. This is part of the dependency expression of a module if the item represents a PPI or Protocol</xs:documentation>
832 </xs:annotation>
833 </xs:enumeration>
834 <xs:enumeration value="SOMETIMES_CONSUMED">
835 <xs:annotation>
836 <xs:documentation xml:lang="en">Item is Consumed by the driver if the Item exists</xs:documentation>
837 </xs:annotation>
838 </xs:enumeration>
839 <xs:enumeration value="ALWAYS_PRODUCED">
840 <xs:annotation>
841 <xs:documentation xml:lang="en">Item is Always produced</xs:documentation>
842 </xs:annotation>
843 </xs:enumeration>
844 <xs:enumeration value="SOMETIMES_PRODUCED">
845 <xs:annotation>
846 <xs:documentation xml:lang="en">Item is Conditionally produced</xs:documentation>
847 </xs:annotation>
848 </xs:enumeration>
849 <xs:enumeration value="TO_START">
850 <xs:annotation>
851 <xs:documentation xml:lang="en">Protocol Only - Protocol is required by driver binding Start() function to make Start() succeed</xs:documentation>
852 </xs:annotation>
853 </xs:enumeration>
854 <xs:enumeration value="BY_START">
855 <xs:annotation>
856 <xs:documentation xml:lang="en">Protocol Only - Protocol is produced by driver binding Start() function if and only if Start() succeeds</xs:documentation>
857 </xs:annotation>
858 </xs:enumeration>
859 <xs:enumeration value="PRIVATE">
860 <xs:annotation>
861 <xs:documentation xml:lang="en">Protocol is produced and consumed only by this module</xs:documentation>
862 </xs:annotation>
863 </xs:enumeration>
864 </xs:restriction>
865 </xs:simpleType>
866 <xs:simpleType name="SupportedArchitectures">
867 <xs:annotation>
868 <xs:documentation xml:lang="en"> These are the currently Supportted Architectures type codes </xs:documentation>
869 </xs:annotation>
870 <xs:restriction base="NameConvention">
871 <xs:enumeration value="ALL"/>
872 <xs:enumeration value="EBC"/>
873 <xs:enumeration value="ARM"/>
874 <xs:enumeration value="IA32"/>
875 <xs:enumeration value="X64"/>
876 <xs:enumeration value="IPF"/>
877 <xs:enumeration value="PPC"/>
878 </xs:restriction>
879 </xs:simpleType>
880 <xs:simpleType name="SystemTableUsage">
881 <xs:annotation>
882 <xs:documentation xml:lang="en">This describes the System Table Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
883 </xs:annotation>
884 <xs:restriction base="NameConvention">
885 <xs:enumeration value="ALWAYS_CONSUMED">
886 <xs:annotation>
887 <xs:documentation xml:lang="en">Module requires a GUIDed entry in the system table</xs:documentation>
888 </xs:annotation>
889 </xs:enumeration>
890 <xs:enumeration value="SOMETIMES_CONSUMED">
891 <xs:annotation>
892 <xs:documentation xml:lang="en">Module will use the GUIDed entry in the system table only if the GUID is present</xs:documentation>
893 </xs:annotation>
894 </xs:enumeration>
895 <xs:enumeration value="ALWAYS_PRODUCED">
896 <xs:annotation>
897 <xs:documentation xml:lang="en">Module Always produces a GUIDed entry in the system table</xs:documentation>
898 </xs:annotation>
899 </xs:enumeration>
900 <xs:enumeration value="SOMETIMES_PRODUCED">
901 <xs:annotation>
902 <xs:documentation xml:lang="en">Module sometimes produces a GUIDed entry in the system table for some of its execution flow</xs:documentation>
903 </xs:annotation>
904 </xs:enumeration>
905 <xs:enumeration value="PRIVATE">
906 <xs:annotation>
907 <xs:documentation xml:lang="en">SystemTable is produced and consumed only by this module</xs:documentation>
908 </xs:annotation>
909 </xs:enumeration>
910 </xs:restriction>
911 </xs:simpleType>
912 <xs:simpleType name="Token">
913 <xs:annotation>
914 <xs:documentation xml:lang="en"> The Token data is union of HexDoubleWordDataType, GuidNaming Convetion and GuidArrayType. </xs:documentation>
915 </xs:annotation>
916 <xs:union memberTypes="GuidArrayType GuidNamingConvention HexDoubleWordDataType"/>
917 </xs:simpleType>
918 <xs:simpleType name="ToolChains">
919 <xs:annotation>
920 <xs:documentation xml:lang="en">Supported Tool Chains are MSFT, INTEL, GCC and CYGWIN</xs:documentation>
921 </xs:annotation>
922 <xs:restriction base="UCNameType">
923 <xs:enumeration value="MSFT"/>
924 <xs:enumeration value="INTEL"/>
925 <xs:enumeration value="GCC"/>
926 <xs:enumeration value="CYGWIN"/>
927 </xs:restriction>
928 </xs:simpleType>
929 <xs:simpleType name="ToothPick">
930 <xs:annotation>
931 <xs:documentation xml:lang="en">Describes which way the directory separator is leaning, either \ for WINDOWS or / for UNIX</xs:documentation>
932 </xs:annotation>
933 <xs:restriction base="xs:normalizedString">
934 <xs:enumeration value="UNIX"/>
935 <xs:enumeration value="WINDOWS"/>
936 </xs:restriction>
937 </xs:simpleType>
938 <xs:simpleType name="UnicodeString">
939 <xs:annotation>
940 <xs:documentation xml:lang="en">Define how we specify unicode strings</xs:documentation>
941 </xs:annotation>
942 <xs:restriction base="xs:normalizedString">
943 <xs:pattern value="L(:)?(&quot;)(\w+)*((\W*)*(\s*)*(\w*)*)*(&quot;)"/>
944 </xs:restriction>
945 </xs:simpleType>
946 <xs:simpleType name="UsageTypes">
947 <xs:annotation>
948 <xs:documentation xml:lang="en">This describes the Generic Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
949 </xs:annotation>
950 <xs:restriction base="NameConvention">
951 <xs:enumeration value="ALWAYS_CONSUMED">
952 <xs:annotation>
953 <xs:documentation xml:lang="en">Item is Required for the driver to function. This is part of the dependency expression of a module if the item represents a PPI or Protocol</xs:documentation>
954 </xs:annotation>
955 </xs:enumeration>
956 <xs:enumeration value="SOMETIMES_CONSUMED">
957 <xs:annotation>
958 <xs:documentation xml:lang="en">Item is Consumed by the driver if the Item exists</xs:documentation>
959 </xs:annotation>
960 </xs:enumeration>
961 <xs:enumeration value="ALWAYS_PRODUCED">
962 <xs:annotation>
963 <xs:documentation xml:lang="en">Item is Always produced</xs:documentation>
964 </xs:annotation>
965 </xs:enumeration>
966 <xs:enumeration value="SOMETIMES_PRODUCED">
967 <xs:annotation>
968 <xs:documentation xml:lang="en">Item is Conditionally produced</xs:documentation>
969 </xs:annotation>
970 </xs:enumeration>
971 <xs:enumeration value="TO_START">
972 <xs:annotation>
973 <xs:documentation xml:lang="en">Protocol Only - Protocol is required by driver binding Start() function to make Start() succeed</xs:documentation>
974 </xs:annotation>
975 </xs:enumeration>
976 <xs:enumeration value="BY_START">
977 <xs:annotation>
978 <xs:documentation xml:lang="en">Protocol Only - Protocol is produced by driver binding Start() function if and only if Start() succeeds</xs:documentation>
979 </xs:annotation>
980 </xs:enumeration>
981 <xs:enumeration value="PRIVATE">
982 <xs:annotation>
983 <xs:documentation xml:lang="en">Item is Private to the module and cannot be used by other modules</xs:documentation>
984 </xs:annotation>
985 </xs:enumeration>
986 <xs:enumeration value="DEFAULT">
987 <xs:annotation>
988 <xs:documentation xml:lang="en">This is the default value for an Item</xs:documentation>
989 </xs:annotation>
990 </xs:enumeration>
991 </xs:restriction>
992 </xs:simpleType>
993 <xs:simpleType name="VariableOffsetValues">
994 <xs:annotation>
995 <xs:documentation xml:lang="en">Describes the available Variable Offset data types, Bytes:Bits or BitSize</xs:documentation>
996 </xs:annotation>
997 <xs:restriction base="xs:string">
998 <xs:pattern value="\d+(:)?\d*"/>
999 </xs:restriction>
1000 </xs:simpleType>
1001 <xs:simpleType name="VariableUsage">
1002 <xs:annotation>
1003 <xs:documentation xml:lang="en">This describes the Variable Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
1004 </xs:annotation>
1005 <xs:restriction base="NameConvention">
1006 <xs:enumeration value="ALWAYS_CONSUMED">
1007 <xs:annotation>
1008 <xs:documentation xml:lang="en">Module requires the variable entry to be set</xs:documentation>
1009 </xs:annotation>
1010 </xs:enumeration>
1011 <xs:enumeration value="SOMETIMES_CONSUMED">
1012 <xs:annotation>
1013 <xs:documentation xml:lang="en">Module will use the variable entry if it's set</xs:documentation>
1014 </xs:annotation>
1015 </xs:enumeration>
1016 <xs:enumeration value="ALWAYS_PRODUCED">
1017 <xs:annotation>
1018 <xs:documentation xml:lang="en">Module Always will write the variable</xs:documentation>
1019 </xs:annotation>
1020 </xs:enumeration>
1021 <xs:enumeration value="SOMETIMES_PRODUCED">
1022 <xs:annotation>
1023 <xs:documentation xml:lang="en">Module sometimes writes the variable</xs:documentation>
1024 </xs:annotation>
1025 </xs:enumeration>
1026 <xs:enumeration value="PRIVATE">
1027 <xs:annotation>
1028 <xs:documentation xml:lang="en">Variable is produced and consumed only by this module</xs:documentation>
1029 </xs:annotation>
1030 </xs:enumeration>
1031 </xs:restriction>
1032 </xs:simpleType>
1033 <!-- Complex Data Types -->
1034 <xs:complexType name="ArgsType">
1035 <xs:sequence minOccurs="0" maxOccurs="unbounded">
1036 <xs:element name="Arg" type="xs:string"/>
1037 </xs:sequence>
1038 </xs:complexType>
1039 <xs:complexType name="ToolType">
1040 <xs:annotation>
1041 <xs:documentation xml:lang="en">This type is to permit adding specific tools and tool arguments for User Defined tools, into the Module Build Description file.</xs:documentation>
1042 </xs:annotation>
1043 <xs:sequence>
1044 <xs:element name="ToolName" type="xs:string"/>
1045 <xs:element name="ToolArgs" type="xs:string"/>
1046 </xs:sequence>
1047 </xs:complexType>
1048 </xs:schema>