]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - 6/sys/boot/efi/include/efiapi.h
Clone Kip's Xen on stable/6 tree so that I can work on improving FreeBSD/amd64
[FreeBSD/FreeBSD.git] / 6 / sys / boot / efi / include / efiapi.h
1 /* $FreeBSD$ */
2 #ifndef _EFI_API_H
3 #define _EFI_API_H
4
5 /*++
6
7 Copyright (c) 1998  Intel Corporation
8
9 Module Name:
10
11     efiapi.h
12
13 Abstract:
14
15     Global EFI runtime & boot service interfaces
16
17
18
19
20 Revision History
21
22 --*/
23
24 /*
25  * EFI Specification Revision
26  */
27
28 #define EFI_SPECIFICATION_MAJOR_REVISION 1
29 #define EFI_SPECIFICATION_MINOR_REVISION 02
30
31 /*
32  * Declare forward referenced data structures
33  */
34
35 INTERFACE_DECL(_EFI_SYSTEM_TABLE);
36
37 /*
38  * EFI Memory
39  */
40
41 typedef
42 EFI_STATUS
43 (EFIAPI *EFI_ALLOCATE_PAGES) (
44     IN EFI_ALLOCATE_TYPE            Type,
45     IN EFI_MEMORY_TYPE              MemoryType,
46     IN UINTN                        NoPages,
47     OUT EFI_PHYSICAL_ADDRESS        *Memory
48     );
49
50 typedef
51 EFI_STATUS
52 (EFIAPI *EFI_FREE_PAGES) (
53     IN EFI_PHYSICAL_ADDRESS         Memory,
54     IN UINTN                        NoPages
55     );
56
57 typedef
58 EFI_STATUS
59 (EFIAPI *EFI_GET_MEMORY_MAP) (
60     IN OUT UINTN                    *MemoryMapSize,
61     IN OUT EFI_MEMORY_DESCRIPTOR    *MemoryMap,
62     OUT UINTN                       *MapKey,
63     OUT UINTN                       *DescriptorSize,
64     OUT UINT32                      *DescriptorVersion
65     );
66
67 #define NextMemoryDescriptor(Ptr,Size)  ((EFI_MEMORY_DESCRIPTOR *) (((UINT8 *) Ptr) + Size))
68
69
70 typedef
71 EFI_STATUS
72 (EFIAPI *EFI_ALLOCATE_POOL) (
73     IN EFI_MEMORY_TYPE              PoolType,
74     IN UINTN                        Size,
75     OUT VOID                        **Buffer
76     );
77
78 typedef
79 EFI_STATUS
80 (EFIAPI *EFI_FREE_POOL) (
81     IN VOID                         *Buffer
82     );
83
84 typedef 
85 EFI_STATUS
86 (EFIAPI *EFI_SET_VIRTUAL_ADDRESS_MAP) (
87     IN UINTN                        MemoryMapSize,
88     IN UINTN                        DescriptorSize,
89     IN UINT32                       DescriptorVersion,
90     IN EFI_MEMORY_DESCRIPTOR        *VirtualMap
91     );
92
93
94 #define EFI_OPTIONAL_PTR            0x00000001
95 #define EFI_INTERNAL_FNC            0x00000002      /* Pointer to internal runtime fnc */
96 #define EFI_INTERNAL_PTR            0x00000004      /* Pointer to internal runtime data */
97
98
99 typedef 
100 EFI_STATUS
101 (EFIAPI *EFI_CONVERT_POINTER) (
102     IN UINTN                        DebugDisposition,
103     IN OUT VOID                     **Address
104     );
105
106
107 /*
108  * EFI Events
109  */
110
111
112
113 #define EVT_TIMER                           0x80000000
114 #define EVT_RUNTIME                         0x40000000
115 #define EVT_RUNTIME_CONTEXT                 0x20000000
116
117 #define EVT_NOTIFY_WAIT                     0x00000100
118 #define EVT_NOTIFY_SIGNAL                   0x00000200
119
120 #define EVT_SIGNAL_EXIT_BOOT_SERVICES       0x00000201
121 #define EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE   0x60000202
122
123 #define EVT_EFI_SIGNAL_MASK                 0x000000FF
124 #define EVT_EFI_SIGNAL_MAX                  2
125
126 typedef
127 VOID
128 (EFIAPI *EFI_EVENT_NOTIFY) (
129     IN EFI_EVENT                Event,
130     IN VOID                     *Context
131     );
132
133 typedef
134 EFI_STATUS
135 (EFIAPI *EFI_CREATE_EVENT) (
136     IN UINT32                       Type,
137     IN EFI_TPL                      NotifyTpl,
138     IN EFI_EVENT_NOTIFY             NotifyFunction,
139     IN VOID                         *NotifyContext,
140     OUT EFI_EVENT                   *Event
141     );
142
143 typedef enum {
144     TimerCancel,
145     TimerPeriodic,
146     TimerRelative,
147     TimerTypeMax
148 } EFI_TIMER_DELAY;
149
150 typedef
151 EFI_STATUS
152 (EFIAPI *EFI_SET_TIMER) (
153     IN EFI_EVENT                Event,
154     IN EFI_TIMER_DELAY          Type,
155     IN UINT64                   TriggerTime
156     );
157
158 typedef
159 EFI_STATUS
160 (EFIAPI *EFI_SIGNAL_EVENT) (
161     IN EFI_EVENT                Event
162     );
163
164 typedef 
165 EFI_STATUS
166 (EFIAPI *EFI_WAIT_FOR_EVENT) (
167     IN UINTN                    NumberOfEvents,
168     IN EFI_EVENT                *Event,
169     OUT UINTN                   *Index
170     );
171
172 typedef
173 EFI_STATUS
174 (EFIAPI *EFI_CLOSE_EVENT) (
175     IN EFI_EVENT                Event
176     );
177
178 typedef
179 EFI_STATUS
180 (EFIAPI *EFI_CHECK_EVENT) (
181     IN EFI_EVENT                Event
182     );
183
184 /*
185  * Task priority level
186  */
187
188 #define TPL_APPLICATION    4
189 #define TPL_CALLBACK       8
190 #define TPL_NOTIFY        16 
191 #define TPL_HIGH_LEVEL    31 
192
193 typedef
194 EFI_TPL
195 (EFIAPI *EFI_RAISE_TPL) (
196     IN EFI_TPL      NewTpl
197     );
198
199 typedef
200 VOID
201 (EFIAPI *EFI_RESTORE_TPL) (
202     IN EFI_TPL      OldTpl
203     );
204
205
206 /*
207  * EFI platform variables
208  */
209
210 #define EFI_GLOBAL_VARIABLE     \
211     { 0x8BE4DF61, 0x93CA, 0x11d2, 0xAA, 0x0D, 0x00, 0xE0, 0x98, 0x03, 0x2B, 0x8C }
212
213 /* Variable attributes */
214 #define EFI_VARIABLE_NON_VOLATILE           0x00000001
215 #define EFI_VARIABLE_BOOTSERVICE_ACCESS     0x00000002
216 #define EFI_VARIABLE_RUNTIME_ACCESS         0x00000004
217
218 /* Variable size limitation */
219 #define EFI_MAXIMUM_VARIABLE_SIZE           1024
220
221 typedef
222 EFI_STATUS
223 (EFIAPI *EFI_GET_VARIABLE) (
224     IN CHAR16                       *VariableName,
225     IN EFI_GUID                     *VendorGuid,
226     OUT UINT32                      *Attributes OPTIONAL,
227     IN OUT UINTN                    *DataSize,
228     OUT VOID                        *Data
229     );
230
231 typedef
232 EFI_STATUS
233 (EFIAPI *EFI_GET_NEXT_VARIABLE_NAME) (
234     IN OUT UINTN                    *VariableNameSize,
235     IN OUT CHAR16                   *VariableName,
236     IN OUT EFI_GUID                 *VendorGuid
237     );
238
239
240 typedef
241 EFI_STATUS
242 (EFIAPI *EFI_SET_VARIABLE) (
243     IN CHAR16                       *VariableName,
244     IN EFI_GUID                     *VendorGuid,
245     IN UINT32                       Attributes,
246     IN UINTN                        DataSize,
247     IN VOID                         *Data
248     );
249
250
251 /*
252  * EFI Time
253  */
254
255 typedef struct {
256         UINT32              Resolution;     /* 1e-6 parts per million */
257         UINT32              Accuracy;       /* hertz */
258         BOOLEAN             SetsToZero;     /* Set clears sub-second time */
259 } EFI_TIME_CAPABILITIES;
260
261
262 typedef
263 EFI_STATUS
264 (EFIAPI *EFI_GET_TIME) (
265     OUT EFI_TIME                    *Time,
266     OUT EFI_TIME_CAPABILITIES       *Capabilities OPTIONAL
267     );
268
269 typedef
270 EFI_STATUS
271 (EFIAPI *EFI_SET_TIME) (
272     IN EFI_TIME                     *Time
273     );
274
275 typedef
276 EFI_STATUS
277 (EFIAPI *EFI_GET_WAKEUP_TIME) (
278     OUT BOOLEAN                     *Enabled,
279     OUT BOOLEAN                     *Pending,
280     OUT EFI_TIME                    *Time
281     );
282
283 typedef
284 EFI_STATUS
285 (EFIAPI *EFI_SET_WAKEUP_TIME) (
286     IN BOOLEAN                      Enable,
287     IN EFI_TIME                     *Time OPTIONAL
288     );
289
290
291 /*
292  * Image functions
293  */
294
295
296 /* PE32+ Subsystem type for EFI images */
297
298 #if !defined(IMAGE_SUBSYSTEM_EFI_APPLICATION)
299 #define IMAGE_SUBSYSTEM_EFI_APPLICATION             10
300 #define IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER     11
301 #define IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER          12
302 #endif
303
304 /* PE32+ Machine type for EFI images */
305
306 #if !defined(EFI_IMAGE_MACHINE_IA32)
307 #define EFI_IMAGE_MACHINE_IA32      0x014c
308 #endif
309
310 #if !defined(EFI_IMAGE_MACHINE_IA64)
311 #define EFI_IMAGE_MACHINE_IA64      0x0200
312 #endif
313
314 /* Image Entry prototype */
315
316 typedef 
317 EFI_STATUS
318 (EFIAPI *EFI_IMAGE_ENTRY_POINT) (
319     IN EFI_HANDLE                   ImageHandle,
320     IN struct _EFI_SYSTEM_TABLE     *SystemTable
321     );
322
323 typedef 
324 EFI_STATUS
325 (EFIAPI *EFI_IMAGE_LOAD) (
326     IN BOOLEAN                      BootPolicy,
327     IN EFI_HANDLE                   ParentImageHandle,
328     IN EFI_DEVICE_PATH              *FilePath,
329     IN VOID                         *SourceBuffer   OPTIONAL,
330     IN UINTN                        SourceSize,
331     OUT EFI_HANDLE                  *ImageHandle
332     );
333
334 typedef 
335 EFI_STATUS
336 (EFIAPI *EFI_IMAGE_START) (
337     IN EFI_HANDLE                   ImageHandle,
338     OUT UINTN                       *ExitDataSize,
339     OUT CHAR16                      **ExitData  OPTIONAL
340     );
341
342 typedef
343 EFI_STATUS
344 (EFIAPI *EFI_EXIT) (
345     IN EFI_HANDLE                   ImageHandle,
346     IN EFI_STATUS                   ExitStatus,
347     IN UINTN                        ExitDataSize,
348     IN CHAR16                       *ExitData OPTIONAL
349     );
350
351 typedef 
352 EFI_STATUS
353 (EFIAPI *EFI_IMAGE_UNLOAD) (
354     IN EFI_HANDLE                   ImageHandle
355     );
356
357
358 /* Image handle */
359 #define LOADED_IMAGE_PROTOCOL      \
360     { 0x5B1B31A1, 0x9562, 0x11d2, 0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B }
361
362 #define EFI_IMAGE_INFORMATION_REVISION      0x1000
363 typedef struct {
364     UINT32                          Revision;
365     EFI_HANDLE                      ParentHandle;
366     struct _EFI_SYSTEM_TABLE        *SystemTable;
367
368         /* Source location of image */
369     EFI_HANDLE                      DeviceHandle;
370     EFI_DEVICE_PATH                 *FilePath;
371     VOID                            *Reserved;
372
373         /* Images load options */
374     UINT32                          LoadOptionsSize;
375     VOID                            *LoadOptions;
376
377         /* Location of where image was loaded */
378     VOID                            *ImageBase;
379     UINT64                          ImageSize;
380     EFI_MEMORY_TYPE                 ImageCodeType;
381     EFI_MEMORY_TYPE                 ImageDataType;
382
383         /* If the driver image supports a dynamic unload request */
384     EFI_IMAGE_UNLOAD                Unload;
385
386 } EFI_LOADED_IMAGE;
387
388
389 typedef
390 EFI_STATUS
391 (EFIAPI *EFI_EXIT_BOOT_SERVICES) (
392     IN EFI_HANDLE                   ImageHandle,
393     IN UINTN                        MapKey
394     );
395
396 /*
397  * Misc
398  */
399
400
401 typedef
402 EFI_STATUS
403 (EFIAPI *EFI_STALL) (
404     IN UINTN                    Microseconds
405     );
406
407 typedef
408 EFI_STATUS
409 (EFIAPI *EFI_SET_WATCHDOG_TIMER) (
410     IN UINTN                    Timeout,
411     IN UINT64                   WatchdogCode,
412     IN UINTN                    DataSize,
413     IN CHAR16                   *WatchdogData OPTIONAL
414     );
415
416
417 typedef enum {
418     EfiResetCold,
419     EfiResetWarm
420 } EFI_RESET_TYPE;
421
422 typedef
423 EFI_STATUS
424 (EFIAPI *EFI_RESET_SYSTEM) (
425     IN EFI_RESET_TYPE           ResetType,
426     IN EFI_STATUS               ResetStatus,
427     IN UINTN                    DataSize,
428     IN CHAR16                   *ResetData OPTIONAL
429     );
430
431 typedef
432 EFI_STATUS
433 (EFIAPI *EFI_GET_NEXT_MONOTONIC_COUNT) (
434     OUT UINT64                  *Count
435     );
436
437 typedef
438 EFI_STATUS
439 (EFIAPI *EFI_GET_NEXT_HIGH_MONO_COUNT) (
440     OUT UINT32                  *HighCount
441     );
442
443 /*
444  * Protocol handler functions
445  */
446
447 typedef enum {
448     EFI_NATIVE_INTERFACE,
449     EFI_PCODE_INTERFACE
450 } EFI_INTERFACE_TYPE;
451
452 typedef
453 EFI_STATUS
454 (EFIAPI *EFI_INSTALL_PROTOCOL_INTERFACE) (
455     IN OUT EFI_HANDLE           *Handle,
456     IN EFI_GUID                 *Protocol,
457     IN EFI_INTERFACE_TYPE       InterfaceType,
458     IN VOID                     *Interface
459     );
460
461 typedef
462 EFI_STATUS
463 (EFIAPI *EFI_REINSTALL_PROTOCOL_INTERFACE) (
464     IN EFI_HANDLE               Handle,
465     IN EFI_GUID                 *Protocol,
466     IN VOID                     *OldInterface,
467     IN VOID                     *NewInterface
468     );
469
470 typedef
471 EFI_STATUS
472 (EFIAPI *EFI_UNINSTALL_PROTOCOL_INTERFACE) (
473     IN EFI_HANDLE               Handle,
474     IN EFI_GUID                 *Protocol,
475     IN VOID                     *Interface
476     );
477
478 typedef
479 EFI_STATUS
480 (EFIAPI *EFI_HANDLE_PROTOCOL) (
481     IN EFI_HANDLE               Handle,
482     IN EFI_GUID                 *Protocol,
483     OUT VOID                    **Interface
484     );
485
486 typedef
487 EFI_STATUS 
488 (EFIAPI *EFI_REGISTER_PROTOCOL_NOTIFY) (
489     IN EFI_GUID                 *Protocol,
490     IN EFI_EVENT                Event,
491     OUT VOID                    **Registration
492     );
493
494 typedef enum {
495     AllHandles,
496     ByRegisterNotify,
497     ByProtocol
498 } EFI_LOCATE_SEARCH_TYPE;
499
500 typedef
501 EFI_STATUS
502 (EFIAPI *EFI_LOCATE_HANDLE) (
503     IN EFI_LOCATE_SEARCH_TYPE   SearchType,
504     IN EFI_GUID                 *Protocol OPTIONAL,
505     IN VOID                     *SearchKey OPTIONAL,
506     IN OUT UINTN                *BufferSize,
507     OUT EFI_HANDLE              *Buffer
508     );
509
510 typedef
511 EFI_STATUS
512 (EFIAPI *EFI_LOCATE_DEVICE_PATH) (
513     IN EFI_GUID                 *Protocol,
514     IN OUT EFI_DEVICE_PATH      **DevicePath,
515     OUT EFI_HANDLE              *Device
516     );
517
518 typedef
519 EFI_STATUS
520 (EFIAPI *EFI_INSTALL_CONFIGURATION_TABLE) (
521     IN EFI_GUID                 *Guid,
522     IN VOID                     *Table
523     );
524
525 typedef
526 EFI_STATUS
527 (EFIAPI *EFI_RESERVED_SERVICE) (
528     VOID
529     );
530
531 /*
532  * Standard EFI table header
533  */
534
535 typedef struct _EFI_TABLE_HEARDER {
536     UINT64                      Signature;
537     UINT32                      Revision;
538     UINT32                      HeaderSize;
539     UINT32                      CRC32;
540     UINT32                      Reserved;
541 } EFI_TABLE_HEADER;
542
543
544 /*
545  * EFI Runtime Serivces Table
546  */
547
548 #define EFI_RUNTIME_SERVICES_SIGNATURE  0x56524553544e5552
549 #define EFI_RUNTIME_SERVICES_REVISION   (EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION)
550
551 typedef struct  {
552     EFI_TABLE_HEADER                Hdr;
553
554         /* Time services */
555
556     EFI_GET_TIME                    GetTime;
557     EFI_SET_TIME                    SetTime;
558     EFI_GET_WAKEUP_TIME             GetWakeupTime;
559     EFI_SET_WAKEUP_TIME             SetWakeupTime;
560
561         /* Virtual memory services */
562
563     EFI_SET_VIRTUAL_ADDRESS_MAP     SetVirtualAddressMap;
564     EFI_CONVERT_POINTER             ConvertPointer;
565
566         /* Variable serviers */
567
568     EFI_GET_VARIABLE                GetVariable;
569     EFI_GET_NEXT_VARIABLE_NAME      GetNextVariableName;
570     EFI_SET_VARIABLE                SetVariable;
571
572         /* Misc */
573
574     EFI_GET_NEXT_HIGH_MONO_COUNT    GetNextHighMonotonicCount;
575     EFI_RESET_SYSTEM                ResetSystem;
576
577 } EFI_RUNTIME_SERVICES;
578
579
580 /*
581  * EFI Boot Services Table
582  */
583
584 #define EFI_BOOT_SERVICES_SIGNATURE     0x56524553544f4f42
585 #define EFI_BOOT_SERVICES_REVISION      (EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION)
586
587 typedef struct _EFI_BOOT_SERVICES {
588
589     EFI_TABLE_HEADER                Hdr;
590
591         /* Task priority functions */
592
593     EFI_RAISE_TPL                   RaiseTPL;
594     EFI_RESTORE_TPL                 RestoreTPL;
595
596         /* Memory functions */
597
598     EFI_ALLOCATE_PAGES              AllocatePages;
599     EFI_FREE_PAGES                  FreePages;
600     EFI_GET_MEMORY_MAP              GetMemoryMap;
601     EFI_ALLOCATE_POOL               AllocatePool;
602     EFI_FREE_POOL                   FreePool;
603
604         /* Event & timer functions */
605
606     EFI_CREATE_EVENT                CreateEvent;
607     EFI_SET_TIMER                   SetTimer;
608     EFI_WAIT_FOR_EVENT              WaitForEvent;
609     EFI_SIGNAL_EVENT                SignalEvent;
610     EFI_CLOSE_EVENT                 CloseEvent;
611     EFI_CHECK_EVENT                 CheckEvent;
612
613         /* Protocol handler functions */
614
615     EFI_INSTALL_PROTOCOL_INTERFACE  InstallProtocolInterface;
616     EFI_REINSTALL_PROTOCOL_INTERFACE ReinstallProtocolInterface;
617     EFI_UNINSTALL_PROTOCOL_INTERFACE UninstallProtocolInterface;
618     EFI_HANDLE_PROTOCOL             HandleProtocol;
619     EFI_HANDLE_PROTOCOL             PCHandleProtocol;
620     EFI_REGISTER_PROTOCOL_NOTIFY    RegisterProtocolNotify;
621     EFI_LOCATE_HANDLE               LocateHandle;
622     EFI_LOCATE_DEVICE_PATH          LocateDevicePath;
623     EFI_INSTALL_CONFIGURATION_TABLE InstallConfigurationTable;
624
625         /* Image functions */
626
627     EFI_IMAGE_LOAD                  LoadImage;
628     EFI_IMAGE_START                 StartImage;
629     EFI_EXIT                        Exit;
630     EFI_IMAGE_UNLOAD                UnloadImage;
631     EFI_EXIT_BOOT_SERVICES          ExitBootServices;
632
633         /* Misc functions */
634
635     EFI_GET_NEXT_MONOTONIC_COUNT    GetNextMonotonicCount;
636     EFI_STALL                       Stall;
637     EFI_SET_WATCHDOG_TIMER          SetWatchdogTimer;
638
639 } EFI_BOOT_SERVICES;
640
641
642 /*
643  * EFI Configuration Table and GUID definitions
644  */
645
646 #define MPS_TABLE_GUID    \
647     { 0xeb9d2d2f, 0x2d88, 0x11d3, { 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } }
648
649 #define ACPI_TABLE_GUID    \
650     { 0xeb9d2d30, 0x2d88, 0x11d3, { 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } }
651
652 #define ACPI_20_TABLE_GUID  \
653     { 0x8868e871, 0xe4f1, 0x11d3, { 0xbc, 0x22, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }
654
655 #define SMBIOS_TABLE_GUID    \
656     { 0xeb9d2d31, 0x2d88, 0x11d3, { 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } }
657
658 #define SAL_SYSTEM_TABLE_GUID    \
659     { 0xeb9d2d32, 0x2d88, 0x11d3, { 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } }
660
661 /* DIG64 Headless Console & Debug Port Table. */
662 #define HCDP_TABLE_GUID         \
663         {0xf951938d,0x620b,0x42ef,{0x82,0x79,0xa8,0x4b,0x79,0x61,0x78,0x98}}
664
665 typedef struct _EFI_CONFIGURATION_TABLE {
666     EFI_GUID                VendorGuid;
667     VOID                    *VendorTable;
668 } EFI_CONFIGURATION_TABLE;
669
670
671 /*
672  * EFI System Table
673  */
674
675
676
677
678 #define EFI_SYSTEM_TABLE_SIGNATURE      0x5453595320494249
679 #define EFI_SYSTEM_TABLE_REVISION      (EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION)
680
681 typedef struct _EFI_SYSTEM_TABLE {
682     EFI_TABLE_HEADER                Hdr;
683
684     CHAR16                          *FirmwareVendor;
685     UINT32                          FirmwareRevision;
686
687     EFI_HANDLE                      ConsoleInHandle;
688     SIMPLE_INPUT_INTERFACE          *ConIn;
689
690     EFI_HANDLE                      ConsoleOutHandle;
691     SIMPLE_TEXT_OUTPUT_INTERFACE    *ConOut;
692
693     EFI_HANDLE                      StandardErrorHandle;
694     SIMPLE_TEXT_OUTPUT_INTERFACE    *StdErr;
695
696     EFI_RUNTIME_SERVICES            *RuntimeServices;
697     EFI_BOOT_SERVICES               *BootServices;
698
699     UINTN                           NumberOfTableEntries;
700     EFI_CONFIGURATION_TABLE         *ConfigurationTable;
701
702 } EFI_SYSTEM_TABLE;
703
704 #endif