source: bootcd/isolinux/syslinux-6.03/efi32/include/efi/efiapi.h @ dd1be7c

Last change on this file since dd1be7c was e16e8f2, checked in by Edwin Eefting <edwin@datux.nl>, 3 years ago

bootstuff

  • Property mode set to 100644
File size: 21.4 KB
Line 
1#ifndef _EFI_API_H
2#define _EFI_API_H
3
4/*++
5
6Copyright (c) 1998  Intel Corporation
7
8Module Name:
9
10    efiapi.h
11
12Abstract:
13
14    Global EFI runtime & boot service interfaces
15
16
17
18
19Revision 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
34INTERFACE_DECL(_EFI_SYSTEM_TABLE);
35
36//
37// EFI Memory
38//
39
40typedef
41EFI_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
49typedef
50EFI_STATUS
51(EFIAPI *EFI_FREE_PAGES) (
52    IN EFI_PHYSICAL_ADDRESS         Memory,
53    IN UINTN                        NoPages
54    );
55
56typedef
57EFI_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
69typedef
70EFI_STATUS
71(EFIAPI *EFI_ALLOCATE_POOL) (
72    IN EFI_MEMORY_TYPE              PoolType,
73    IN UINTN                        Size,
74    OUT VOID                        **Buffer
75    );
76
77typedef
78EFI_STATUS
79(EFIAPI *EFI_FREE_POOL) (
80    IN VOID                         *Buffer
81    );
82
83typedef
84EFI_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
98typedef
99EFI_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
125typedef
126VOID
127(EFIAPI *EFI_EVENT_NOTIFY) (
128    IN EFI_EVENT                Event,
129    IN VOID                     *Context
130    );
131
132typedef
133EFI_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
142typedef enum {
143    TimerCancel,
144    TimerPeriodic,
145    TimerRelative,
146    TimerTypeMax
147} EFI_TIMER_DELAY;
148
149typedef
150EFI_STATUS
151(EFIAPI *EFI_SET_TIMER) (
152    IN EFI_EVENT                Event,
153    IN EFI_TIMER_DELAY          Type,
154    IN UINT64                   TriggerTime
155    );
156
157typedef
158EFI_STATUS
159(EFIAPI *EFI_SIGNAL_EVENT) (
160    IN EFI_EVENT                Event
161    );
162
163typedef
164EFI_STATUS
165(EFIAPI *EFI_WAIT_FOR_EVENT) (
166    IN UINTN                    NumberOfEvents,
167    IN EFI_EVENT                *Event,
168    OUT UINTN                   *Index
169    );
170
171typedef
172EFI_STATUS
173(EFIAPI *EFI_CLOSE_EVENT) (
174    IN EFI_EVENT                Event
175    );
176
177typedef
178EFI_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
192typedef
193EFI_TPL
194(EFIAPI *EFI_RAISE_TPL) (
195    IN EFI_TPL      NewTpl
196    );
197
198typedef
199VOID
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
220typedef
221EFI_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
230typedef
231EFI_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
239typedef
240EFI_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
254typedef 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
261typedef
262EFI_STATUS
263(EFIAPI *EFI_GET_TIME) (
264    OUT EFI_TIME                    *Time,
265    OUT EFI_TIME_CAPABILITIES       *Capabilities OPTIONAL
266    );
267
268typedef
269EFI_STATUS
270(EFIAPI *EFI_SET_TIME) (
271    IN EFI_TIME                     *Time
272    );
273
274typedef
275EFI_STATUS
276(EFIAPI *EFI_GET_WAKEUP_TIME) (
277    OUT BOOLEAN                     *Enabled,
278    OUT BOOLEAN                     *Pending,
279    OUT EFI_TIME                    *Time
280    );
281
282typedef
283EFI_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
315typedef
316EFI_STATUS
317(EFIAPI *EFI_IMAGE_ENTRY_POINT) (
318    IN EFI_HANDLE                   ImageHandle,
319    IN struct _EFI_SYSTEM_TABLE     *SystemTable
320    );
321
322typedef
323EFI_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
333typedef
334EFI_STATUS
335(EFIAPI *EFI_IMAGE_START) (
336    IN EFI_HANDLE                   ImageHandle,
337    OUT UINTN                       *ExitDataSize,
338    OUT CHAR16                      **ExitData  OPTIONAL
339    );
340
341typedef
342EFI_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
350typedef
351EFI_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
362typedef 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
388typedef
389EFI_STATUS
390(EFIAPI *EFI_EXIT_BOOT_SERVICES) (
391    IN EFI_HANDLE                   ImageHandle,
392    IN UINTN                        MapKey
393    );
394
395//
396// Misc
397//
398
399
400typedef
401EFI_STATUS
402(EFIAPI *EFI_STALL) (
403    IN UINTN                    Microseconds
404    );
405
406typedef
407EFI_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
415typedef
416EFI_STATUS
417(EFIAPI *EFI_CONNECT_CONTROLLER) (
418    IN EFI_HANDLE               ControllerHandle,
419    IN EFI_HANDLE               *DriverImageHandle OPTIONAL,
420    IN EFI_DEVICE_PATH          *RemainingDevicePath OPTIONAL,
421    IN BOOLEAN                  Recursive
422    );
423
424typedef
425EFI_STATUS
426(EFIAPI *EFI_DISCONNECT_CONTROLLER) (
427    IN EFI_HANDLE               ControllerHandle,
428    IN EFI_HANDLE               DriverImageHandle OPTIONAL,
429    IN EFI_HANDLE               ChildHandle OPTIONAL
430    );
431
432#define EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL  0x00000001
433#define EFI_OPEN_PROTOCOL_GET_PROTOCOL        0x00000002
434#define EFI_OPEN_PROTOCOL_TEST_PROTOCOL       0x00000004
435#define EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER 0x00000008
436#define EFI_OPEN_PROTOCOL_BY_DRIVER           0x00000010
437#define EFI_OPEN_PROTOCOL_EXCLUSIVE           0x00000020
438
439typedef
440EFI_STATUS
441(EFIAPI *EFI_OPEN_PROTOCOL) (
442    IN EFI_HANDLE               Handle,
443    IN EFI_GUID                 *Protocol,
444    OUT VOID                    **Interface OPTIONAL,
445    IN EFI_HANDLE               AgentHandle,
446    IN EFI_HANDLE               ControllerHandle,
447    IN UINT32                   Attributes
448    );
449
450typedef
451EFI_STATUS
452(EFIAPI *EFI_CLOSE_PROTOCOL) (
453    IN EFI_HANDLE               Handle,
454    IN EFI_GUID                 *Protocol,
455    IN EFI_HANDLE               AgentHandle,
456    IN EFI_HANDLE               ControllerHandle
457    );
458
459typedef struct {
460    EFI_HANDLE                  AgentHandle;
461    EFI_HANDLE                  ControllerHandle;
462    UINT32                      Attributes;
463    UINT32                      OpenCount;
464} EFI_OPEN_PROTOCOL_INFORMATION_ENTRY;
465
466typedef
467EFI_STATUS
468(EFIAPI *EFI_OPEN_PROTOCOL_INFORMATION) (
469    IN EFI_HANDLE               Handle,
470    IN EFI_GUID                 *Protocol,
471    OUT EFI_OPEN_PROTOCOL_INFORMATION_ENTRY **EntryBuffer,
472    OUT UINTN                   *EntryCount
473    );
474
475typedef
476EFI_STATUS
477(EFIAPI *EFI_PROTOCOLS_PER_HANDLE) (
478    IN EFI_HANDLE               Handle,
479    OUT EFI_GUID                ***ProtocolBuffer,
480    OUT UINTN                   *ProtocolBufferCount
481    );
482
483typedef enum {
484    AllHandles,
485    ByRegisterNotify,
486    ByProtocol
487} EFI_LOCATE_SEARCH_TYPE;
488
489typedef
490EFI_STATUS
491(EFIAPI *EFI_LOCATE_HANDLE_BUFFER) (
492    IN EFI_LOCATE_SEARCH_TYPE   SearchType,
493    IN EFI_GUID                 *Protocol OPTIONAL,
494    IN VOID                     *SearchKey OPTIONAL,
495    IN OUT UINTN                *NoHandles,
496    OUT EFI_HANDLE              **Buffer
497    );
498
499typedef
500EFI_STATUS
501(EFIAPI *EFI_LOCATE_PROTOCOL) (
502    IN EFI_GUID                 *Protocol,
503    IN VOID                     *Registration OPTIONAL,
504    OUT VOID                    **Interface
505    );
506
507typedef
508EFI_STATUS
509(EFIAPI *EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES) (
510    IN OUT EFI_HANDLE           *Handle,
511    ...
512    );
513
514typedef
515EFI_STATUS
516(EFIAPI *EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES) (
517    IN OUT EFI_HANDLE           Handle,
518    ...
519    );
520
521typedef
522EFI_STATUS
523(EFIAPI *EFI_CALCULATE_CRC32) (
524    IN VOID                     *Data,
525    IN UINTN                    DataSize,
526    OUT UINT32                  *Crc32
527    );
528
529typedef
530VOID
531(EFIAPI *EFI_COPY_MEM) (
532    IN VOID                     *Destination,
533    IN VOID                     *Source,
534    IN UINTN                    Length
535    );
536
537typedef
538VOID
539(EFIAPI *EFI_SET_MEM) (
540    IN VOID                     *Buffer,
541    IN UINTN                    Size,
542    IN UINT8                    Value
543    );
544
545
546typedef
547EFI_STATUS
548(EFIAPI *EFI_CREATE_EVENT_EX) (
549    IN UINT32                   Type,
550    IN EFI_TPL                  NotifyTpl,
551    IN EFI_EVENT_NOTIFY         NotifyFunction OPTIONAL,
552    IN const VOID               *NotifyContext OPTIONAL,
553    IN const EFI_GUID           EventGroup OPTIONAL,
554    OUT EFI_EVENT               *Event
555    );
556
557typedef enum {
558    EfiResetCold,
559    EfiResetWarm,
560    EfiResetShutdown
561} EFI_RESET_TYPE;
562
563typedef
564EFI_STATUS
565(EFIAPI *EFI_RESET_SYSTEM) (
566    IN EFI_RESET_TYPE           ResetType,
567    IN EFI_STATUS               ResetStatus,
568    IN UINTN                    DataSize,
569    IN CHAR16                   *ResetData OPTIONAL
570    );
571
572typedef
573EFI_STATUS
574(EFIAPI *EFI_GET_NEXT_MONOTONIC_COUNT) (
575    OUT UINT64                  *Count
576    );
577
578typedef
579EFI_STATUS
580(EFIAPI *EFI_GET_NEXT_HIGH_MONO_COUNT) (
581    OUT UINT32                  *HighCount
582    );
583
584//
585// Protocol handler functions
586//
587
588typedef enum {
589    EFI_NATIVE_INTERFACE,
590    EFI_PCODE_INTERFACE
591} EFI_INTERFACE_TYPE;
592
593typedef
594EFI_STATUS
595(EFIAPI *EFI_INSTALL_PROTOCOL_INTERFACE) (
596    IN OUT EFI_HANDLE           *Handle,
597    IN EFI_GUID                 *Protocol,
598    IN EFI_INTERFACE_TYPE       InterfaceType,
599    IN VOID                     *Interface
600    );
601
602typedef
603EFI_STATUS
604(EFIAPI *EFI_REINSTALL_PROTOCOL_INTERFACE) (
605    IN EFI_HANDLE               Handle,
606    IN EFI_GUID                 *Protocol,
607    IN VOID                     *OldInterface,
608    IN VOID                     *NewInterface
609    );
610
611typedef
612EFI_STATUS
613(EFIAPI *EFI_UNINSTALL_PROTOCOL_INTERFACE) (
614    IN EFI_HANDLE               Handle,
615    IN EFI_GUID                 *Protocol,
616    IN VOID                     *Interface
617    );
618
619typedef
620EFI_STATUS
621(EFIAPI *EFI_HANDLE_PROTOCOL) (
622    IN EFI_HANDLE               Handle,
623    IN EFI_GUID                 *Protocol,
624    OUT VOID                    **Interface
625    );
626
627typedef
628EFI_STATUS
629(EFIAPI *EFI_REGISTER_PROTOCOL_NOTIFY) (
630    IN EFI_GUID                 *Protocol,
631    IN EFI_EVENT                Event,
632    OUT VOID                    **Registration
633    );
634
635typedef
636EFI_STATUS
637(EFIAPI *EFI_LOCATE_HANDLE) (
638    IN EFI_LOCATE_SEARCH_TYPE   SearchType,
639    IN EFI_GUID                 *Protocol OPTIONAL,
640    IN VOID                     *SearchKey OPTIONAL,
641    IN OUT UINTN                *BufferSize,
642    OUT EFI_HANDLE              *Buffer
643    );
644
645typedef
646EFI_STATUS
647(EFIAPI *EFI_LOCATE_DEVICE_PATH) (
648    IN EFI_GUID                 *Protocol,
649    IN OUT EFI_DEVICE_PATH      **DevicePath,
650    OUT EFI_HANDLE              *Device
651    );
652
653typedef
654EFI_STATUS
655(EFIAPI *EFI_INSTALL_CONFIGURATION_TABLE) (
656    IN EFI_GUID                 *Guid,
657    IN VOID                     *Table
658    );
659
660typedef
661EFI_STATUS
662(EFIAPI *EFI_RESERVED_SERVICE) (
663    );
664
665//
666// Standard EFI table header
667//
668
669typedef struct _EFI_TABLE_HEARDER {
670    UINT64                      Signature;
671    UINT32                      Revision;
672    UINT32                      HeaderSize;
673    UINT32                      CRC32;
674    UINT32                      Reserved;
675} EFI_TABLE_HEADER;
676
677
678//
679// EFI Runtime Serivces Table
680//
681
682#define EFI_RUNTIME_SERVICES_SIGNATURE  0x56524553544e5552
683#define EFI_RUNTIME_SERVICES_REVISION   (EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION)
684
685typedef struct  {
686    EFI_TABLE_HEADER                Hdr;
687
688    //
689    // Time services
690    //
691
692    EFI_GET_TIME                    GetTime;
693    EFI_SET_TIME                    SetTime;
694    EFI_GET_WAKEUP_TIME             GetWakeupTime;
695    EFI_SET_WAKEUP_TIME             SetWakeupTime;
696
697    //
698    // Virtual memory services
699    //
700
701    EFI_SET_VIRTUAL_ADDRESS_MAP     SetVirtualAddressMap;
702    EFI_CONVERT_POINTER             ConvertPointer;
703
704    //
705    // Variable serviers
706    //
707
708    EFI_GET_VARIABLE                GetVariable;
709    EFI_GET_NEXT_VARIABLE_NAME      GetNextVariableName;
710    EFI_SET_VARIABLE                SetVariable;
711
712    //
713    // Misc
714    //
715
716    EFI_GET_NEXT_HIGH_MONO_COUNT    GetNextHighMonotonicCount;
717    EFI_RESET_SYSTEM                ResetSystem;
718
719} EFI_RUNTIME_SERVICES;
720
721
722//
723// EFI Boot Services Table
724//
725
726#define EFI_BOOT_SERVICES_SIGNATURE     0x56524553544f4f42
727#define EFI_BOOT_SERVICES_REVISION      (EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION)
728
729typedef struct _EFI_BOOT_SERVICES {
730
731    EFI_TABLE_HEADER                Hdr;
732
733    //
734    // Task priority functions
735    //
736
737    EFI_RAISE_TPL                   RaiseTPL;
738    EFI_RESTORE_TPL                 RestoreTPL;
739
740    //
741    // Memory functions
742    //
743
744    EFI_ALLOCATE_PAGES              AllocatePages;
745    EFI_FREE_PAGES                  FreePages;
746    EFI_GET_MEMORY_MAP              GetMemoryMap;
747    EFI_ALLOCATE_POOL               AllocatePool;
748    EFI_FREE_POOL                   FreePool;
749
750    //
751    // Event & timer functions
752    //
753
754    EFI_CREATE_EVENT                CreateEvent;
755    EFI_SET_TIMER                   SetTimer;
756    EFI_WAIT_FOR_EVENT              WaitForEvent;
757    EFI_SIGNAL_EVENT                SignalEvent;
758    EFI_CLOSE_EVENT                 CloseEvent;
759    EFI_CHECK_EVENT                 CheckEvent;
760
761    //
762    // Protocol handler functions
763    //
764
765    EFI_INSTALL_PROTOCOL_INTERFACE  InstallProtocolInterface;
766    EFI_REINSTALL_PROTOCOL_INTERFACE ReinstallProtocolInterface;
767    EFI_UNINSTALL_PROTOCOL_INTERFACE UninstallProtocolInterface;
768    EFI_HANDLE_PROTOCOL             HandleProtocol;
769    EFI_HANDLE_PROTOCOL             PCHandleProtocol;
770    EFI_REGISTER_PROTOCOL_NOTIFY    RegisterProtocolNotify;
771    EFI_LOCATE_HANDLE               LocateHandle;
772    EFI_LOCATE_DEVICE_PATH          LocateDevicePath;
773    EFI_INSTALL_CONFIGURATION_TABLE InstallConfigurationTable;
774
775    //
776    // Image functions
777    //
778
779    EFI_IMAGE_LOAD                  LoadImage;
780    EFI_IMAGE_START                 StartImage;
781    EFI_EXIT                        Exit;
782    EFI_IMAGE_UNLOAD                UnloadImage;
783    EFI_EXIT_BOOT_SERVICES          ExitBootServices;
784
785    //
786    // Misc functions
787    //
788
789    EFI_GET_NEXT_MONOTONIC_COUNT    GetNextMonotonicCount;
790    EFI_STALL                       Stall;
791    EFI_SET_WATCHDOG_TIMER          SetWatchdogTimer;
792
793    //
794    // DriverSupport Services
795    //
796
797    EFI_CONNECT_CONTROLLER          ConnectController;
798    EFI_DISCONNECT_CONTROLLER       DisconnectController;
799
800    //
801    // Open and Close Protocol Services
802    //
803    EFI_OPEN_PROTOCOL               OpenProtocol;
804    EFI_CLOSE_PROTOCOL              CloseProtocol;
805    EFI_OPEN_PROTOCOL_INFORMATION   OpenProtocolInformation;
806
807    //
808    // Library Services
809    //
810    EFI_PROTOCOLS_PER_HANDLE        ProtocolsPerHandle;
811    EFI_LOCATE_HANDLE_BUFFER        LocateHandleBuffer;
812    EFI_LOCATE_PROTOCOL             LocateProtocol;
813    EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES InstallMultipleProtocolInterfaces;
814    EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES UninstallMultipleProtocolInterfaces;
815
816    //
817    // 32-bit CRC Services
818    //
819    EFI_CALCULATE_CRC32             CalculateCrc32;
820
821    //
822    // Misc Services
823    //
824    EFI_COPY_MEM                    CopyMem;
825    EFI_SET_MEM                     SetMem;
826    EFI_CREATE_EVENT_EX             CreateEventEx;
827} EFI_BOOT_SERVICES;
828
829
830//
831// EFI Configuration Table and GUID definitions
832//
833
834#define MPS_TABLE_GUID    \
835    { 0xeb9d2d2f, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
836
837#define ACPI_TABLE_GUID    \
838    { 0xeb9d2d30, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
839
840#define ACPI_20_TABLE_GUID  \
841    { 0x8868e871, 0xe4f1, 0x11d3, {0xbc, 0x22, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} }
842
843#define SMBIOS_TABLE_GUID    \
844    { 0xeb9d2d31, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
845
846#define SAL_SYSTEM_TABLE_GUID    \
847    { 0xeb9d2d32, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
848
849
850typedef struct _EFI_CONFIGURATION_TABLE {
851    EFI_GUID                VendorGuid;
852    VOID                    *VendorTable;
853} EFI_CONFIGURATION_TABLE;
854
855
856//
857// EFI System Table
858//
859
860
861
862
863#define EFI_SYSTEM_TABLE_SIGNATURE      0x5453595320494249
864#define EFI_SYSTEM_TABLE_REVISION      (EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION)
865
866typedef struct _EFI_SYSTEM_TABLE {
867    EFI_TABLE_HEADER                Hdr;
868
869    CHAR16                          *FirmwareVendor;
870    UINT32                          FirmwareRevision;
871
872    EFI_HANDLE                      ConsoleInHandle;
873    SIMPLE_INPUT_INTERFACE          *ConIn;
874
875    EFI_HANDLE                      ConsoleOutHandle;
876    SIMPLE_TEXT_OUTPUT_INTERFACE    *ConOut;
877
878    EFI_HANDLE                      StandardErrorHandle;
879    SIMPLE_TEXT_OUTPUT_INTERFACE    *StdErr;
880
881    EFI_RUNTIME_SERVICES            *RuntimeServices;
882    EFI_BOOT_SERVICES               *BootServices;
883
884    UINTN                           NumberOfTableEntries;
885    EFI_CONFIGURATION_TABLE         *ConfigurationTable;
886
887} EFI_SYSTEM_TABLE;
888
889#endif
890
Note: See TracBrowser for help on using the repository browser.