Subversion Repositories HelenOS

Rev

Details | Last modification | View Log | RSS feed

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